第7章 关系数据库设计理论7.1 学习要点关系数据库设计理论是关系数据库的又一个重点关系数据库的逻辑设计主要是设计关系模式,而深入了解函数依赖和码的概念则是设计和分解关系模式的基础学习本章的目的有两个一个是理论方面的,本章用更加形式化的关系数据理论来描述和研究关系模型另一个是实践方面的,关系数据库设计理论是我们进行数据库设计的有力工具1、 知道什么是函数依赖、完全函数依赖、部分函数依赖和传递函数依赖,能确定两个或多个属性间的函数依赖,计算属性的闭集;2、 理解关系的码和超码、主属性和非主属性;3、理解1NF、2NF、3NF和BCNF的定义,并能辨别某关系属于哪种范式类型;4、掌握规范化一个关系模式的原则方法,能够将某1NF关系规范化为3NF或BCNF;5、理解多值依赖和连接依赖,初步掌握分解成第四范式的方法7.2 习题讲解1. 理解并给出下列名词的涵义:函数依赖、部分函数依赖、传递函数依赖、超码、多值依赖答:函数依赖是数据库中两个属性集之间的约束设R(U)是属性集U上的关系模式,X、Y是U的子集,r是R的任一具体关系设t1、t2是关系r中的任意两个元组,如果t1[X]=t2[X],有t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记作X→Y。
在关系模式R(U)中,X, Y是U的子集,若X→Y,且存在X'ÌX,使X'→Y,则称X→Y是部分函数依赖(partial functional dependency),记作XY在关系模式R(U)中,X, Y是U的子集,若X→Y,Y→Z,并且Y不函数依赖于X,则称Z传递函数依赖于X包含候选码的属性或属性组称为超码(Super key)设有关系模式R(U),X、Y为U的子集,Z=U-XY,r是R的任一关系,如果r中存在两个元组t1、t2满足t1 [X]= t2 [X],则r中必然存在两个元组t3、t4,使得 (1) t3 [X]= t4 [X]= t1 [X]= t2 [X] (2) t3 [Y]= t1 [Y]且t4 [Y]= t2 [Y] (3) t3 [Z]= t2 [Z]且t4 [Z]= t1 [Z]则称X→→Y是多值依赖(multivalued dependency, MVD), X多值决定Y2.设有关系模式R(ABCDE),有函数依赖集F={A®B, AB®D, E®AD,E®C}和G={ A®BD, E®AC },判断F和G是否等价答:AG+=ABD, EG+=ABCDE,可知F中的函数依赖A®B、AB®D、E®AD、E®C都属于G+,所以FÍG+;AF+=ABD, EF+=ABCDE,可知G中的函数依赖A®BD, E®AC都属于F+,所以GÍF+。
根据引理5.3,F与G等价 3.设有一关系模式R(ABCD),其函数依赖集F={A→BC,B→C,AB→C,AC→D},求F的最小依赖集Fmin答:(1) 首先用分解规则将F中所有的函数依赖的右部属性单一化得F={ A→B ,A→C,B→C,AB→C, AC→D }2) 去掉F中多余的依赖具体做法是:从第一个函数依赖(假设为X→Y)开始,把它从F中去掉,求X+,若X+包含Y,则X→Y是多余的,要去掉;若X+不包含Y,则不能去掉X→Y检查全部依赖后可得G显然G符合最小函数依赖集定义5.6的条件(2)这里,对于A→B,由于(A)+ =ACD不包含B,所以不能去掉;而由于从F中去掉A→C 后,A+ =ABCD,包含了C,所以A→C是多余的,从F中去掉;接下去B→C不能去掉,而且AB→C 明显多余,从F中去掉;(AC)+ =ABC不包含D,所以AC→D不能去掉,最后得G={A→B,B→C,AC→D } (3) 去掉F2中的函数依赖左边的多余的属性具体做法是:检查F中所有左边是非单属性的函数依赖,如XY→A,要判断Y是否为多余属性,只要在F中求X+,若X+包含A,则Y是多余属性,否则Y不是多余属性。
该题G中AC→D的C属性多余,去掉后得到的函数依赖集Fmin={A→B,B→C,A→D } 4.设有关系模式R(ABCDE),其函数依赖F={A®BC,CD®E,B®D,E®A},试求 (1) 计算B+ (2) 求R的所有码答:(1)根据算法5.1,令X(0) = B 在F中找出左边是B的子集的函数依赖,有B→D; X(1) =BD 因为X(1)≠X(0), 继续在F中找出左边是BD的子集的函数依赖,由于不存在这样的函数依赖,所以不必再计算下去了结果为:B+ = BD2)因为A+ = ABCDE,E+ = ABCDE,(BC)+ = ABCDE,(CD)+ = ABCDE,B+ = BD,C+ = C,D+ = D,所以候选码为A、E、BC、CD 5. 试验证上题4中的R的以下两个分解是否具有无损连接性: r1={R1(ABC), R2(ADE)} r2={R1(ABC), R2(CDE)}答:对于r1={R1(ABC), R2(ADE)},R1∩R2=A,R1–R2=BC,R2–R1=DE,根据A+ = ABCDE知(R1∩R2)→(R1–R2)和(R1∩R2)→(R2–R1)都满足,根据定理5.4,分解具有无损连接性。
对于r2={R1(ABC), R2(CDE)},R1∩R2=C,R1–R2=AB,R2–R1=DE,根据C+ = C知(R1∩R2)→(R1–R2)和(R1∩R2)→(R2–R1)都不满足,根据定理5.4,分解不具有无损连接性 6.设有关系模式R(ABCDEGHI),其函数依赖F={AB®C,A®DE,B®GH,D®I},试求 (1) 求R的所有码 (2) 将R分解成2NF (3) 将R无损分解成3NF,并且具有保持依赖性答:(1)因为A+ = ADEI,B+ = BGH,(AB)+ = ABCDEGHI,A、B没有在函数依赖的右边出现,所以候选码为AB2)因为2NF要求每一个非主属性完全函数依赖于码,而AB为码,非主属性C完全函数依赖于码,非主属性DEGHI都部分依赖于码,所以将R分解为三个模式R1、R2和R3:R1(ABC);R2(ADEI);R3(BGH)这样,R1中的非主属性C完全函数依赖于码AB;R2中的非主属性DEI完全函数依赖于码A;R3中的非主属性GH完全函数依赖于码B因此,R1、R2和R3都满足2NF3)首先求出F的最小依赖集Fmin,即Fmin={AB®C,A®DE,B®GH,D®I}。
根据算法5.3,得ρ={ABC, ADE, BGH, DI},由于R的码是AB,所以根据算法5.4可得,s=ρ∪{AB}={ ABC, ADE, BGH, DI, AB},由于ABÍABC,因此s={ ABC, ADE, BGH, DI},s是R的同时具有无损连接性和依赖保持性的3NF分解 7.设有关系模式R(ABCD),其函数依赖F={A®C,C®A,B®AC,D®AC},试求 (1) 求R的所有码 (2) 将R无损分解成BCNF (3) 将R无损分解3NF,并且具有保持依赖性答:(1)因为(BD)+ = ABCD,B、D没有在函数依赖的右边出现,所以候选码为BD2)根据算法5.5:初始化ρ={R}; R的码是BD,因此A、C、B和D不是超码首先由左边不包含码的非平凡函数依赖A®C,从R中分出AC(A, C),得ρ={R1(ABD), AC(A,C)} 然后,R1的码是BD,因此B和D不是超码由左边不包含码的非平凡函数依赖B®AC,从R1中分出BA(B, A),得ρ={BA (B, A), BD(B, D), AC(A, C)}BA、BD和AC都是BCNF,并且具有无损连接性。
ρ不具有依赖保持性另外,s={DA (D, A), BD(B, D), AC(A, C)}也是具有无损连接性的分解,但同样不具有依赖保持性3)首先求出F的最小依赖集Fmin,即Fmin={A®C, C®A, B®A, D®A}根据算法5.3,得ρ={AC, CA, BA, DA},由于R的码是BD,所以根据算法5.4可得,s=ρ∪{BD}={ AC, CA, BA, DA, BD},由于AC=CA,因此s={ AC, BA, DA, BD},s是R的同时具有无损连接性和依赖保持性的3NF分解另外ρ={AC, BC, DC, BD}也是R的同时具有无损连接性和依赖保持性的3NF分解 8.在1NF~BCNF范围内,指出下列关系模式是第几范式,并说明理由 (1) R(ABC), F={A®B,B®A,A®C} (2) R(ABC), F={A®B,B®A,C®A} (3) R(ABCD), F={B®D,AB®C} (4) R(ABC), F={B®C,AC®B } (5) R(ABCD), F={B®D,D®B,AB®C} (6) R(ABCDE), F={AB®CE,E®AB,C®D}。
答:(1)候选码为A、B,可知F中每个非平凡函数依赖的左边都包含码,所以RÎBCNF2)候选码为C,可知非主属性都完全函数依赖于码,但存在非主属性B传递函数依赖于码C,所以RÎ2NF3)候选码为AB,可知非主属性D部分函数依赖于码,所以RÎ1NF4)候选码为AB、AC,可知A、B、C都是主属性,不存在非主属性部分函数依赖或传递对函数依赖于码,另外非平凡函数依赖B®C的左边不包含码,所以RÎ3NF5)候选码为AB、AD,可知不存在非主属性C部分函数依赖或传递对函数依赖于码,另外非平凡函数依赖B®D的左边不包含码,所以RÎ3NF6)候选码为E、AB,可知非主属性都完全函数依赖于码,但存在非主属性D传递函数依赖于码,所以RÎ2NF9.设关系模式R(ABC)上有一多值依赖A®®B,已知R的当前关系存在三个元组,如图7.1所示,试问该关系中至少还应存在哪些元组才能满足多值依赖的要求答:ABCa1b1c1a1b2c2a1b3c3图7.1 R的当前关系根据多值依赖的定义,可知当前关系中还应该存在6个元组:(a1, b1, c2), (a1, b1, c3), (a1, b2, c1), (a1, b2, c3), (a1, b3, c1), (a1, b3, c2)。
7.3 自测题一、选择题1. 设学生关系模式为:学生(学号,姓名,年龄,性别,成绩,专业),则该关系模式的主码是( )A. 姓名 B. 学号,姓名 C. 学号 D. 学号,姓名,年龄2. 设一关系模式为R(A,B,C,D,E)及函数依赖F={A→B,B→E,E→A,D→E},则关系模式的R候选码是( )A. AD B. CD C. EB D. EC3. 下列有关范式的叙述中正确的是( )A. 如果关系模式R∈1NF,且R中主属性完全函数依赖于主码,则R是2NFB. 如果关系模式R∈3NF,X,Y∈U,若X→Y,则R是BCNFC. 如果关系模式R∈BCNF,若X→→Y(Y∉X)是平凡的多值依赖,则R是4NFD. 一个关系模式如果属于4NF,则一定属于BCNF;反之不成立4. 给定关系模式SCP(Snum, Cnum, P),其中Snum表示学号,Cnum表示课程号,P表示名次若每一名学生每门课程都有一定的名次,而每门课程每一名次只有一名学生,则以下叙述中错误的是( )A. (Snum, Cnum)和(Cnum, P)都可以作为候选码B. (Snum, Cnum)是唯一的候选码C. 关系模式SCP既属于3NF也属于BCNFD. 关系模式SCP没有非主属性5. 消除多值依赖所引起的冗余是属于( )。
A. 2NF B. 3NF C. 4NF D. BCNF6. 下列叙述中正确的是( )A. 3NF不能保持多值依赖 B. 4NF肯定能保持多值依赖C. BCNF可能保持函数依赖 D. 4NF不能保持函数依赖7. 若关系模式R的函数依赖集F中的所有候选码都是决定因素,则R的最高范式是( )A. 2NF B. 3NF C. BCNF D. 4NF8. 关系模式R包含属性{A1,A2,A3,A4,A5},其中{A1,A2}为码,则下面说法正确的是( )A. {A1}或{A2}有可能单独成为R的码B. {A1,A2,A3}必然也是R的码C. R中绝不可能出现两个在A1, A2上取值完全相同的元组D. R的所有元组中,A1或者A2的值都是不能重复的9. 设一关系模式为R(A,B,C)及函数依赖F={AB→C,BC→A,B→C},则下列说法( )是正确的A. R一定消除了插入和删除异常 B. R属于BCNFC. R属于3NF D. R一定消除了冗余10. 在关系模式 R 中,函数依赖 X→Y 的语义是( )A. 在 R 的任意两个关系中,若 X 值相等,则 Y 值也相等B. 在 R 的当前关系中,若两个元组的 X 值相等,则 Y 值也相等C. 在 R 的任意关系中, Y 值应与 X 值相等D. 在 R 的当前关系中, Y 值应与 X 值相等 11. 函数依赖X→Y能从Armstrong推理规则推出的充分必要条件是( )A.Y→X B.YÍX+ C.XÍY+ D.X+=Y+ 12. 在关系模式 R(U) 中,包含属性{A,B,C,D},R的码为{A,B},则下面的选项中是R的超码的有 ( ) A. {A} B. {C,D} C. {A,B,C,D} D.{B,C,D} 13. 对于 FD X → Y, 如果有 YÍX, 那么称 X → Y 是一个( ) A. 包含函数依赖 B. 增广的函数依赖 C. 传递的函数依赖 D. 平凡的函数依赖 14. 设有关系模式 R (A,B,C,D),F 是 R 上成立的FD集 ,F={A→B,B→C},B的闭包 B+ 为由B函数决定的属性集,则 B+ 为( )A.ABC B.BCD C.BC D.C 15. 设有关系模式R(A, B, C, D),F是R上成立的FD集,F={B→C,D→C},属性集AB的闭包(AB)+为( )A.ABCD B.ABC C.CD D.BCD 16.现在只知道关系模式包含的属性和码(用下划线表示),则一定是第二范式的关系是( ) A.R1{A1,A2,A3} B. R2{B1,B2,B3} C.R3{C1,C2,C3} D. 以上都不是二、填空题1、在关系模式R中,若每个数据项都是不可再分割的,那么R一定属于第 范式。
2、通过模式分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,这一过程称为 3、关系数据库设计理论,主要包括三个方面内容: 、 和 4、对于函数依赖X→Y,如果Y⊆X,则称X→Y是一个 5、如果YÍXÍU,则X→Y成立.这条推理规则称为_______________.6、如果X→Y和Y→Z成立,则X→Z成立.这条推理规则称为______________7、如果X→Y和ZÍY成立,则X→Z成立.这条推理规则称为_______________.三、问答题1、关系规范化一般应遵循的原则是什么?2、多值依赖与函数依赖有哪些主要的区别?3、试叙述"无损联接"的定义4、 试叙述"保持函数依赖"的定义四、综合题1、建立一个关于系、学生、班级、学会等诸信息的关系数据库其中描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍号;描述班级的属性有:班号、专业名、系名、人数、入校年份;描述系的属性有:系名、系号、系办公地点、人数;描述学会的属性有:学会名、成立年份、地点、人数若有关语义为:一个系有若干专业,每个专业每年只招一个班,每个班有若干个学生;一个系的学生住在同一宿舍区;每个学生可参加若干学会,每个学会有若干学生;学生参加某学会有一个入会年份。
请给出关系模式,学出每个关系模式的极小函数依赖集,指出是否存在传递依赖对于函数依赖左部是多余属性的情况,讨论函数依赖是完全函数依赖,还是部分函数依赖指出各关系模式的候选码、外部码,并说明有没有全码存在?2、已知关系模式R(U,F),U={A,B,C,D,E},F={A→B,D→C,BC→E,AC→B}求(AE)F+、(AD)F+3、已知关系模式R(U,F),U={A,B,C,D,E,G},F={AB→C,D→EG,C→A,BE→C,BC→D,CG→BD,ACD→B,CE→AG}请将F化为最小函数依赖集4、已知关系模式R(U,F),U={A,B,C};F={A→B,B→A,B→C,A→C,C→A}求F的最小函数依赖集5、对给定的关系模式R(U,F),U={A,B,C},F={A→B},有如下的两个分解:(1)P1={AB,BC}(2)P2={AB,AC}判断这两个分解是否无损6、关系R(U,F),U={A,B,C,D,E,F,G,H,I,J},F={ABD→E,AB→G,B→F,C→J,CJ→I,G→H}1)该函数依赖集F是最小函数依赖集吗?(2)求出该关系的候选码7、关系R(A,B,C,D,E)满足下列函数依赖: F={A→C,C→D,B→C,DE→C,CE→A}(1)给出关系R的候选关键字。
2)判断P={AD,AB,BC,CDE,AE}是否无损连接分解3)将R分解为BCNF,并具有无损连接性8、设关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课程和编号,成绩,任课教师姓名,教师地址等意义 如果规定,每个学生每学一门课程只有一个成绩;每门课只有一个任课教师;每个教师有一个地址(此处不允许教师同名同姓)1) 试写出关系模式R基本的FD和候选码 (2) 试把 R 分解成 2NF 模式集,并说明理由 o (3) 试把 R 分解成 3NF 模式集,并说明理由9、设关系模式R(A,B,C,D)满足下列函数依赖:F={AB→C,C→D,D→A},试写出关系模式R的候选码10、设关系模式R(U,F),U={A,B,C,D,E },F={AB→DE,C→E,D→C,E→A},现把R投影到S(A,B,C),求出S中的函数依赖集11、设关系模式R(U,F),U={A,B,C,D,E ,F,G },F={A→B,BC→DE,AEF→G},计算{A,C}关于这个函数依赖集的闭包该函数依赖集是否蕴涵函数依赖ACF→DG?7.4 自测题参考答案一、选择题1. C 2. C 3. D 4. B 5. C 6. C 7. D 8. C 9. C 10. B11. B 12. C 13. D 14. C 15. B 16. B 17. D 18. D二、填空题1. 12. 规范化3. 数据依赖 范式 模式设计方法(可交换位置)4. 平凡的函数依赖5. 自反律6. 传递律7. 分解律 8.保持函数依赖三、问答题1、关系规范化一般应遵循的原则如下(1)将关系模式进行无损连接分解,在关系模式分解的过程中,数据不能丢失或增加,要保证数据的完整性。
2)合理地选择规范化的程度在规范化时,既要考虑到低级范式造成的冗余度高,数据的不一致性,又要考虑到高级范式查询效率低的矛盾3)正确性和可实现性原则2、多值依赖与函数依赖的主要区别如下:(1)在关系模式R(U)中,函数依赖X→Y的有效性仅决定X、Y这两个属性集的值只要在关系R(U)的任一关系r中,元组在X和Y上的值满足函数依赖的定义,则函数依赖X→Y在任何属性集W(XY⊆W⊆U)上都成立对于多值依赖,若X→→Y在W(W⊂U)上成立,但在U上不一定成立,所以多值依赖的有效性与属性集的范围有关X→→Y在U上成立,则在W(XY⊆W⊆U)上成立,反之则不然2)若函数依赖X→Y在R(U)上成立,则对于任何Y’⊂U,均有X→Y成立对于多值依赖X→→Y在R(U)上成立,但不能断言对于任何Y’⊂U,有X→→Y成立3、答:设R是关系模式,分解成数据库模式ρ={R1,…,RK},F是R上的FD集.如果对R中满足F的每个关系r都有:r=πRI(r) ⋈ πR2(r) ⋈…⋈πRk(r)则称分解ρ相对于F是“无损联接分解”4、答:设R是关系模式,分解成数据库模式ρ={R1,…,RK},F是R上的FD集,如果F+=(∪πRI(F))+,则称分解ρ保持函数依赖集F。
四、综合题1、解:(1)关系模式如下:学生:S(Snum,Sname,Sbirth,Dept,Class,Rno)班级:C(Class,Pname,Dept,Cnum,Cyear)系: D(Dept,Dno,Office,Dnum)学会:M(Mname,Myear,Maddr,Mnum)学生学会:SM(Snum,Mname,SMyear)(2)每个关系模式的最小函数依赖集如下:学生S的最小函数依赖集如下:Snum→Sname,Snum→Sbirth,Class→Dept,Snum→Class,Dept→Rno因为Snum→Dept,Dept→Rno,所以Snum与Rno之间存在着传递依赖因为Class→Dept,Dept→Rno,所以Class与Rno之间存在着传递依赖因为Snum→Class,Class→Dept,所以Snum与Dept之间存在着传递依赖班级C的最小函数依赖集如下:Class→Pname,Class→Cnum,Class→Cyear,Pname→Dept因为Class→Pname,Pname→Dept,所以Class与Dept之间存在着传递依赖系D的最小函数依赖集如下:Dept→Dno,Dno→Office,Dno→Dnum因为Dept→Dno,Dno→Office,所以Dept与Office之间存在着传递依赖因为Dept→Dno,Dno→Dnum,所以Dept与Dnum之间存在着传递依赖学会M的最小函数依赖集如下:Mname→Myear,Mname→Maddr,Mname→Mnum该模式不存在传递依赖学生学会SM的最小函数依赖集如下:(Snum,Mname)→SMyear是完全函数依赖(3)各关系模式的候选码、外部码、全码如下:学生S候选码:Snum;外部码:Dept,Class;无全码班级C候选码:Class;外部码:Dept;无全码系D候选码:Dept或Dno;无外部码;无全码学会M候选码:Mname;无外部码;无全码学生学会SM候选码:(Snum,Mname);外部码:Snum,Mname;无全码2、解:(1)求(AE)F+,根据上述算法,设X(0) = AE。
计算X(1) 逐一扫描F中的各个函数依赖,寻找左部为A、E或AE的函数依赖,找到一个A→B,故有X(1) = AE∪B计算X(2) 逐一扫描F中的各个函数依赖,寻找左部为ABE或ABE子集的函数依赖,因为找不到这样的函数依赖,所以,X(1) = X(2) ,算法终止AE)F+ = ABE2)求(AD)F+ ,根据上述算法,设X(0) = AD计算X(1) 逐一扫描F中的各个函数依赖,寻找左部为A、D或AD的函数依赖,找到两个:A→B,D→C函数依赖故有X(1) = AD∪BC计算X(2) 逐一扫描F中的各个函数依赖,寻找左部为ADBC或ADBC子集的函数依赖,找到两个:BC→E,AC→B函数依赖故有X(2) = ABCD∪E所以,X(2) = ABCDE=U,算法终止AD)F+ = ABCDE3、解:(1)假设CG→B为冗余的函数依赖,那么,从F中去掉它后能根据Armstrong公理系统的推理规则导出因为CG→D,C→A (已知)所以CGA→ACD (增广律)又因为ACD→B (已知)所以CGA→B (传递律)又因为C→A (已知)所以CG→B (蕴含)(2)同理可证:CE→A是冗余的。
3)又因为C→A,ACD→B可知,所以去掉左边多余的属性得CD→B4、解:答案1:设B→A是冗余的,将其从F中去掉,看能否根据Armstrong公理系统的推理规则导出因为B→C,C→A (已知)所以B→A (传递律)故B→A是冗余的,将其从F中去掉,得F1,F1={A→B,B→C,A→C,C→A}又设A→C为冗余,将其从F1中去掉,因为A→B,B→C (已知)所以A→C (传递律)故A→C是冗余的,将其从F1中去掉,得FM1,FM1={A→B,B→C,C→A}通过分析可以发现,在FM1中的其它函数依赖是非冗余的,所以,FM1为最小函数依赖集答案2:设B→C是冗余的,将其从F中去掉,看能否根据Armstrong公理系统的推理规则导出因为B→A,A→C (已知)所以B→C (传递律)故B→C是冗余的,将其从F中去掉,得FM2,FM2 ={A→B,B→C,A→C,C→A}因为在FM2中的其它函数依赖是非冗余的,所以,FM2为最小函数依赖集5、解:(1)可根据无损连接定理判断本题因为AB∩BC=BAB-BC=ABC-AB=C所以B→A∉F+B→C∉F+故P1为有损连接2)根据无损连接定理判断本题。
因为AB∩AC=AAB-AC=BAC-AB=C所以B→A∉F+故P2为无损连接6、解:(1)该函数依赖集不是最小函数依赖集因为CJ→I中的J为冗余属性证明如下:因为C→J,CJ→I (已知)所以C→I逻辑蕴含CJ→I2)该关系的候选码为ABCD因为{ABCDGJ}是一个超码所谓超码是指所有出现在函数依赖左边的属性以及没有在F中出现的属性的集合因为C→J (已知)所以可将J从超码中去掉又因为AB→G (已知)所以可将G从超码中去掉此时,超码中只剩下ABCD,由于它们都没有在函数依赖集的任何一个函数依赖的右边出现,即它们也是L属性,所以它们都不能从超码中去掉故候选码为ABCD所谓超码是指能唯一标识关系中的每一个元组,但超码可能有冗余属性,不含冗余属性的是候选码7、解:(1)从函数依赖集F中看出,候选关键字至少包含BE,因为BE为L类属性在关系模式R中,无NLR属性,BE不依赖于谁,而(BE)+ = ABCDE,所以,BE是R的候选关键字2)构造一个二维表,如下表所示属性模式ABCDEADABBCCDEAEa1a1b31b41a1b12a2a2b42b52b13b23a3a3b53a4b24b34a4b54b15b25b35a5a5①根据A→C,对上表进行处理,由于属性列A上第一、二、五行相同,但属性列C上对应的一、二、五行上无ai元素,所以,只能将b13、b24、b53改为行号最小值b13。
又根据C→D,将属性列D上b34改为a4,修改后的表如下表所示属性模式ABCDEADABBCCDEAEa1a1b31b41a1b12a2a2b42b52b13b13a3a3b13a4b24a4a4b54b15b25b35a5a5②根据B→C,对上表进行处理,由于属性列B上第二、三行相同,但属性列C上对应的三行为a3元素,所以,只能将第二行b13改为a3又根据DE→C,CE→A不能修改此表,所以修改后的表如下表所示属性模式ABCDEADABBCCDEAEa1a1b31b41a1b12a2a2b42b52b13a3a3a3b13a4b24a4a4b54b15b25b35a5a5③根据A→C,对上表进行处理,由于属性列A上第一、二、五行相同,但属性列C上对应的一、二、五行上有a3元素,所以只能将第一、五行b13改为a3又根据C→D将属性列D上b24、b24改为a4,修改后的表如下表所示属性模式ABCDEADABBCCDEAEa1a1b31b41a1b12a2a2b42b52a3a3a3a3a3a4a4a4a4a4b15b25b35a5a5④根据CE→A,对上表进行处理,由于属性列CE上第四、五行相同,但属性列A上对应的第五行为a1元素,所以,将第四行b41改为a1。
所以修改后的表如下表所示属性模式ABCDEADABBCCDEAEa1a1b31a1a1b12a2a2b42b52a3a3a3a3a3a4a4a4a4a4b15b25b35a5a5⑤继续扫描F不能修改此表,由于找不到一行全为a,所以该分解是有损的3)考虑A→C,因为AC不包含候选关键字,所以AC不是BCNF,故将ABCDE分解为两个子模式:R1(AC)和R2(ABDE)此时,R1∈BCNF继续分解R2,考虑B→D,将ABDE分解为两个子模式:R21(BD)和R22(ABE),此时R21和R22均属于BCNF所以R分解为BCNF,并具有无损连接性的分解如下:P={AC,BD,ABE}8、解:(1)根据“每个学生每学一门课只有一个成绩”的语义,可写出FD(S#,C#)→GRADE,根据“每门课只有一个任课教师”的语义,可写出FD C# →TNAME,根据“每个教师有一个地址”的语义,可写出FD TNAME →TARRD(其他据推理规则推出的FD就不必写出),候选码是 (S#,C#) 因为从 (S#,C#) 可函数决定全部属性2)由于 R 中存在下列两个 FD: (S#,C#) → TNAME 和 C# → TNAME因此 (S#,C #) → TNAME 是一个局部 FD, 即 TNAME局部依赖候选码 (S#, C#) 。
也就是 R 不是 2NF 此时 ,R 中就会存在数据冗余和数据异常,如果一门课程有 50 个学生选修,那么在关系中就会出现 50 个元组,即这门课程的任课老师姓名和地址就要重复出现 50 次这就是数据冗余,随之就会出现各种操作异常 如果把 R 分解成 R1(S#,C#,GRADE) 和 R2(C#,TNAME,TADDR), 就能消 除上面提到的局部 FD 和数据冗余问题,并且 R1 和 R2 都是 2NF 模式 (3)前面 R1 已是 3NF 了,但 R2 还不是 3NF 因为在 R2 中候选码是 C#, 并且存在下列两个 FD: C# → TNAME和TNAME→ TADDR 即 TADDR 传递依赖于候选码 C#, 所以也不是 3NF 此时 ,R2 中也会出现数据冗余和操作异常如果一个教师开设 5 门课,那么在关系中就会出现 5 个元组,即这个教师的地址就要重复出现 5 次这也是数据冗余,随之也会产生 各种操作异常如果把 R2 分解成 R21( C# ,TNAME) 和 R22(TNAME,TADDR), 就会消除上面提到的传递依赖和数据冗余问题,并且 R21 和 R22 都是 3NF 模式。
因此 R 分解成的 3NF 模式集是 {R1,R21,R22}9、解:{A,B}+={A,B,C,D},{B,C}+={A,B,C,D},{B,D}+={A,B,C,D}所以候选码为AB,BC,BD10、解:先计算{A,B,C}的所有非空的真子集的闭包:A+ = A B+ = B C+ = ACE (AB)+ = ABCDE (AC)+ = ACE (BC)+ = ABCDE 忽略D,E得到S的函数依赖集{C→A,AB→C,BC→A},由C→A可推出BC→A,所以函数依赖集也可以是{C→A,AB→C}11、{A,C}+={A,B,C,D,E}; {A,C,F}+={A,B,C,D,E,F,G},所以函数依赖集F蕴涵函数依赖ACF→DG友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!12 / 12。