1、,例如:设计一个教学情况数据库,它包含:学号S#、课程号C#、成绩G、教师号T#、所在系TD属性,设一门课只有一位教师上构造出关系数据模式,语义:(1)学号是一个学生的标识,课程号是一门课程的标识(2)一位学生所修的每门课程都有一个成绩(3)每门课程只有一位任课教师,每位教师可教多门课(4)每位教师只属于一个系,解法一:SCG(S#,C#,G,T#,TD )存在问题:(1)冗余度大学生每选一门课,教师信息重复一次(2)插入异常实体完整性暂无人选的课程(3)删除异常学生毕业(4)修改异常一门课换了教师,数据不一致 只需对单表查询,解法二: SC(S#,C#,G)C(C#,T#)T(T#,TD),
2、解法一:SCG(S#,C#,G,T#,TD ),特点:(1)冗余度减小(2)无插入、删除、修改异常 (3)查询要涉及多表连接(开销大),例:设计一个学生学习情况数据库StuDB,它有属性:S#(学号)、SN(姓名)、SD(所在系)、SA(年龄)、C#(课程号)、CN(课程名)、G(成绩)、PC#(先修课编号)。 基于这些属性,可以构造出不同的关系数据库模式。数据库模式之一:S_C_G(S#,SN,SD,SA,C#,SN,G,PC#) 数据库模式之二:S(S#,SN,SD,SA)C (C#,CN,PC#)S_C(S#,C#,G),关系数据库S_C_G(S#,SN,SD,SA,C#,SN,G,PC
3、#)的一个实例,这个数据库存在下列缺点:(1)冗余度大 (2)插入异常 (3)删除异常 (4)修改异常(未选课),分析: (1)出现冗余和各种异常的原因事物及事物的各个属性之间有一定的联系、约束关系模式应尽量准确地反映这种内在的语义不应把关系不密切或具有“排它”性的属性集中 (2)数据之间的联系数据依赖函数依赖多值依赖连接依赖 (3)关系数据库模式的好坏每个关系模式对内在语义的满足程度分若干等级满足的条件范式 (4)避免的办法依据语义分解大关系为多个小关系,例:Sno sname Sno sex,说明: 函数依赖:属性值之间的联系 函数依赖是基于整个关系模式的,而不是关系模式的特定实例(或值)
4、。P119例4.2 (3) XY,称X为决定子 (4) 若XY,且YX,记作XY,X与Y一一对应 (一对一) (5)Y不依赖于X,记作XY,F= , , ,例1:设计一个教学情况数据库,它包含:学号S#、课程号C#、成绩G、教师号T#、所在系TD属性,根据下述语义写出其函数依赖集。,语义:(1)学号是一个学生的标识,课程号是一门课程的标识(2)一位学生所修的每门课程都有一个成绩(3)每门课程只有一位任课教师,每位教师可教多门课(4)每位教师只属于一个系,(S#,C#)G,C#T#,T#TD,例2:设关系模式R(ABCD),在R的关系中,属性值间具有联系:A值与B值有一对多联系;C值与D值有一对
5、一联系;写出相应的函数依赖。,BA,CD DC,F= BA ,CD ,DC ,对一个关系模式存在的多个函数依赖,可以 通过推理,从一组已知的函数依赖F导出另一 个函数依赖集F,反之亦然。两个函数依赖集 之间的这种互为因果关系称为逻辑蕴涵 (Logical Implication),即一个函数依赖集 逻辑地蕴涵另一个函数依赖集。,2. 闭包 P120定义:被已知函数依赖集F逻辑蕴涵的所有函数依赖的集合为F的闭包,记为F+。F与F+的关系:F F+FF+ 则F为函数依赖的一个完备集表示对一个关系的全面的约束用推理方法计算F+的一套规则:3规则5推论,4.2.3 FD的推理规则,3. FD的推理规则
6、 Armstrong公理+A4、A5、A6 P121以R(U,F)为例,X,Y,Z,WU)A1.自反律:如果YX,则XY 例:A A2.增广律:如果XY,则XZYZ; (ZW, 则XWYZ)A3.传递律: 如果XY且YZ,则XZA4.推论1:合并性 XYXZ XYZA5.推论3:分解性 XYZY XZA6.推论2:伪传递性 XYWYZ XWZ,FD的推理规则 五条推理规则的证明 1)A4(合并规则): XY,XZ XYZ 证明 XY, XXXY,即XXY XZ, XYYZ,即XYYZ XXY,XYYZ ; XYZ 2)A5(分解性规则): XY,Z Y XZ 证明 Z Y, YZ ; XY,Y
7、Z , XZ,FD的推理规则 其他五条推理规则的证明 3)A6(伪传递规则): XY,WYZ WXZ 证明 XY, WXWY,即 WXWY WXWY,WYZ ; WXZ 4)A7(复合规则): XY,WZ XWYZ证明 XY, WXWY,即XWWY WZ, WYYZ,即WYYZ, XWYZ,FD的推理规则 其他五条推理规则的证明 5)A8: XY,WZ X(WY)YZ 证明 XY X(WY) (WY)Y 即:X(WY) WY WZ WYYZ X(WY) WY,WYYZ X(WY)YZ,例1:设有关系模式R(A,B,C,D,E),其上的函数依赖集F=ABCD, AB, DE.求证F必蕴涵AE。证
8、明:AB (已知)AAB (扩展律)ABCD (已知)ACD (传递律)AC,AD (分解规则)DE (已知)AE (传递律),例2: P121 例4.5,已知关系模式R(ABC), F =AB,BC,求F+ 求解 据已知条件和推理规则,可知F+有43个FD3个属性,F+ = 43个FD ;问题规模指数级,定理4.3: P122若Ai(i=1,2, ,n)是关系模式R的属性,则XA1 A2An成立的充分必要条件是:XAi均成立。,关系的关键字和超关键字,关键字:如果关系的某一属性或属性组的值能唯一地决定其它所有属性的值,而其任何真子集无此性质,则称该属性或属性集为关系的候选键或关键字 超关键字
9、:其真子集的值也能唯一地决定其它所有属性的值的属性组 学号,姓名 ?,重要结论: (1)属性集X+中的每个属性A,都有X A被F逻辑蕴涵,即X+是所有由F逻辑蕴涵X A的属性A的集合。 (2)F+是所有利用阿氏公理规则从F中导出的函数依赖的集合。因此,判断X Y是否在F+中,只要判断X Y 能否用推理规则从F中导出,即判断YX+是否成立。把计算F+的问题简化成计算X+的问题。,例2:设有关系模式R(A,B,C,D,E),F=ABC, BD,CE,ECB,ACB。求(AB)+。,解:令X=AB。,第一次:X(0)=X=AB;搜索F中的每一个函数依赖,得到ABC,BD;X(1)=ABCD=ABCD
10、,第二次:X(1)X(0);搜索F,得到CE,ACB,X(2)=ABCDEB=ABCDE;,第三次:X(2)X(1);搜索F,得到ECB,X(3)=ABCDEB=ABCDE;,第四次:X(3)=X(2), (AB)+=ABCDE;,问:ABE能否从F中推出?,Yes,求候选关键字的经验方法: 若属性A仅出现在所有函数依赖的右部,则它一定不包含在任何候选关键字中; 若属性A仅出现在所有函数依赖的左部,则它一定包含在某个候选关键字中; 若属性A既出现在函数依赖的右部,又出现在左部,则它可能包含在候选关键字中; 在上述基础上求属性闭包。,例:设有关系模式CTHRSG(C,T,H,R,S,G),满足下
11、列函数依赖:CT 每门课程仅有一位教师讲授HRC 在任一时间,每个教室只能上一门课程HTR 在一个时间一位教师只能在一个教室上课CSG 每个学生的每门课程只有一个成绩HSR 在一个时间每个学生只能在一个教室听课求其候选键。,解:求所有候选关键字,F = CT,HRC,HTR,CSG,HSR ,HSR,HRC,CT CSG,HTR, HS是模式CTHRSG的唯一关键字,4.2.6 FD推理规则的完备集, 推理规则的正确性:从F使用推理规则推出的函数依赖FD必在F+中 保证了推出的所有FD是正确的 完备性:F+中的FD 都能从F中使用推理规则推出 保证了可以推出所有被蕴涵的FD,定理4.5: P1
12、23FD推理规则A1,A2,A3是完备的。,求Fmin算法 P124算法4.2 (1) 检查F 中的每个函数依赖XA,若A=A1A2Ak,则根据分解规则,用XAi(i=1,2, k)取代XA。 (2) 检查F 中各函数依赖XA,设X=B1B2Bm,检查Bi(i=1,2,m),当A(X-Bi )F+ 时,即以X-Bi替换X。 (3) 检查F 中的每个函数依赖XA,令G=F-XA,若有AXG+,则从F 中去掉此函数依赖。,例3: P124例4.8设关系模式R(ABC)的函数依赖集 F=ABC,BC,AB,ABC,求Fmin。,解:(1)用分解规则将F中所有依赖的右部变成单个属性,F= AB, AC, BC, AB, ABC ,(3)根据阿氏公理去掉F 中的多余依赖,AC,ABC,Fmin= AB, BC ,(2)用所含属性较少的依赖代替所含属性较多的依赖,F= AB, AC, BC ,F= AB, AC, BC, ABC , AB ABB (增广律) BC (已知) ABC (传递律) 因此,可用BC代替ABC。, AB,BC (已知) AC (传递律),P.144 4.28 ,习 题 一,