关系模式分解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数依赖判断:A->D? D->A? … AD->E?…
4.1函数依赖
例:指出下列关系R中的函数依赖。
A
B
C
D
a1
b1
c1
d1
a1
b1
c1
d2
a1
b2
c2
d1
a2
b1
c3
d1
FD: AB->C、 A→C、C→A、AB→D? Insert into R values(a1, b1, c2, d1) FD = key constraint ?
注意:当一个元组在主码的属性上部分或全部为空 时,该元组不能插入到关系中。
4.1函数依赖
4.删除异常。 删除异常是指不应该删去的数据被删去的情形。 例如:选修某门课的所有学生都退选时,删除相关元组, 会丢失该课程老师的信息。
解决:关系模式分解(关系规范化) 分解为 ST(S#,SNAME,CLASS)
(S#,C#)→ADDRESS
4.1函数依赖
三、函数依赖的分类
XY,但Y 不包含于 X则称X是非平凡的函数依赖。 XY,但Y ⊆ X 则称X是平凡的函数依赖。 若XY ,则X叫做决定因素。 若XY,Y X,则记作: X<— —>Y。 定义4.2:在R( U)中,X, Y, Z为U的不同子集。 完全函数依赖: 是指 XY,且对任何X的真子集X’,
X -> U X能决定整个元组 X’+> U X中无多余的属性
术语: 主码 主属性: 侯选码中的属性 非主属性 全码:整个属性组为码
例:R(顾客,商品,日期)
4.1函数依赖
例:试指出下列关系R中的侯选码、主属性和非主属性。
源自文库
AD E a1 d1 e2 a2 d6 e2 a3 d4 e3 a4 d4 e4
课程,见CT表) TNAME→TAGE(每个教师只能有一个年龄) TNAME→ADDRESS(每个教师只能有一个地址) (S#,C#)→GRADE(每个学生学习一门课只能有一个成绩) (S#,C#)→SNAME、 (S#,C#)→CLASS、 (S#,C#)→C#、 (S#,C#)→TNAME、 (S#,C#)→TAGE、
方法:取真子集,看其能否决定右部属性。
例:试指出学生关系S中存在的完全函数依赖和部分函数依赖。 S#→SNAME,S#→CLASS,TNAME→TAGE,
TNAME→ADDRESS,C#→TNAME都是完全函数依赖。
(S# , C#)→GRADE 是 一 个 完 全 函 数 依 赖 , 因 为 S#+>GRADE , C#+>GRADE。
解:因为C#→TNAME,TNAME+>C#,TNAME→TAGE,所以C#→TAGE
是一个传递函数依赖。类似地,C#→ADDRESS也是一个传递函数 依赖。
4.1函数依赖
四、候选码 用函数依赖的概念来定义码。
定义4.4 : 设X为R<U,F>中的属性或属
性组合,若 X F > U 则X为R 的候选码。 说明: X F >U
CT(C#,TNAME) TA(TNAME,TAGE,ADDRESS) SC(S#,C#,GRADE)
4.1函数依赖
二、函数依赖functional dependency, abbr. FD
设:R(A1,A2,…An)=R( U ) X,Y,Z 为U的不同子集
属性全集
定义4.1: ① 函数依赖 是完整性约束的一种,它推广了关键词 的概念。If t1.X=t2.X, then t1.Y=t2.Y ②函数依赖:若R的任意关系有:对X中的每个属性值, 在Y中都有惟一的值与之对应,则称Y函数依赖于X, 记作 XY 。
4.1函数依赖
例 试指出学生关系S(S#,SNAME,CLASS,C#,TNAME,TAGE, ADDRESS,GRADE)中存在的函数依赖关系。
S#→SNAME(每个学号只能有一个学生姓名) S#→CLASS(每个学号只能有一个班级) C#→TNAME(设每门课程只有一个教师任教,而一个教师可教多门
第四章 关系数据理论
4.1 关系模式的设计问题 4.2 关系模式的规范化 4.3 数据依赖的公理系统 4.4 关系模式的分解
本章小结
4.1函数依赖
一、问题——如何构造一个关系模式 例:假设有学生关系模式
S(S#,SNAME,CLASS,C#,TNAME,TAGE,ADDRESS,GRADE) 其中,S#—学号、 SNAME—学生姓名、 CLASS—班级、 C#—课程号、 TNAME—教师姓名、 TAGE—教师年龄、 ADDRESS—教师地址、 GRADE—成绩。
关系S存在以下问题: 1.数据冗余度高。 SNAME、CLASS、TNAME、TAGE、ADDRESS重复存储多次。
4.1函数依赖
2.数据修改复杂。 3.插入异常。
插入异常是指应该插入到数据库中的数据不能执 行插入操作的情形。
关系S的主码:(S#,C#)
从在S#、C#、和(S#,c#)上出现NULL值去分析。
都有X’+>Y,记作:X F > Y。
部分函数依赖: 是指XY,且存在X的真子集X’,
有X’->Y, 记作:X P > Y。
定义4.3:在R( U )中 传递函数依赖:是指若XY (Y 不包含于 X), Y +> X ,
而Y Z。记作: X T > Z 。
4.1函数依赖
左部为单属性的函数依赖一定是完全函数依赖。 左部为多属性的函数依赖,如何判断其是否为完全函数依赖?
4.1函数依赖
(S#,C#)→SNAME,(S#,C#)→CLASS, (S#,C#)→TNAME,(S#,C#)→TAGE, (S#,C#)→ADDRESS都是部分函数依赖,因为S#→SNAME,
S#→CLASS,C#→TNAME,C#→TAGE,C#→ADDRESS。
例:试指出学生关系S中存在的传递函数依赖。
4.1函数依赖
函数依赖与属性间的关系有: 若X,Y是1 — 1关系,
则存在 XY或Y X 。如学号与借书证号 若X,Y是m — 1关系,
则存在 XY但 Y+> X。如学号与姓名
若X,Y是m — n关系, 则X,Y间不存在函数依赖关系。如姓名与课程
CF: 实体间的联系 NOTE: 函数依赖的方向性