1.理解并给出F列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、超码、主码、外码、伞码(all-key)、1NF、2NF、3NF、BCNF、多值依赖、4NF。
答:(1)函数依赖:设R(U)是属性集U上的关系模式。X、Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。(即只要X上的属性值相等,Y上的值一定相等)。
(2)部分函数依赖:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:
(3)完全函数依赖:在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′↛Y,则称Y对X完全函数依赖,记作
(4)传递依赖:在R(U)中,如果X→Y,(Y⊈X),Y↛X,Y→Z,Z∉Y,则称Z对X传递函数依赖,记为:
(5)候选码:设K为R中的属性或属性组合,若,则K为R的候选码。
(6)主码:若候选码多于一个,则选定其中的一个为主码。
(7)外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码。
(8)全码:整个属性组是码,称为全码。
(9)1NF:关系模式R的每一个分量是不可再分的数据项。
(10)2NF:关系模式R∈1NF,且每一个非主属性完全函数依赖于码。
(11)3NF:关系模式R中不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得X→Y,Y↛X,Y→Z成立。
(12)BCNF:关系模式R∈1NF,X→Y且Y不是X的子集时,X必含有码。
(13)多值依赖:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖x→→y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组y的值,这组值仅仅决定于X值而与Z值无关。
(14)4NF:关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y不是X的子集,Z=U-X-Y不为空),X都含有码。
2建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系名、系号、系办公室地点、人数:
描述学会的属性有:学会名、成立年份、地点、人数。
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。指出各关系的候选码、外部码,并说明是否全码存在。
答:(1)关系模式如下:
学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)
班级:C(Class,Pname,Dept,Cnum,Cyear)
系:D(Dept,Dno,Office,Dnum)
学会:M(Mname,Myear,Maddr,Mnum)
(2)每个关系模式的最小函数依赖集如下:
①学生S(Sno,Sname,Sbirth,Dept,Class,Rno)的最小函数依赖集如下:
Sno→Sname,Sno→Sbirth,Sno→Class,Class→Dept,DEPT→Rno。
传递依赖如下:
由于Sno→Dept,而Dept→Sno,Dept→Rno(宿舍区),所以Sno与Rno之间存在着传递函数依赖;由于Class→Dept,Dept→Class,Dept→Rno,所以Class与Rno之间存在着传递函数依赖;由于Sno→Class,Class→Sno,Class→Dept,所以Sno与Dept之间存在着传递函数依赖。
②班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:
Class→Pname,Class→Cnum,Class→Cyear,Pname→Dept。
由于Class→Pname,Pname→Class,Pname→Dept,所以C1ass与Dept之间存在着传递函数依赖。
③系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:
Dept→Dno,Dno→Dept,Dno→Office,Dno→Dnum。
Dept与Office,Dept与Dnum之间不存在传递依赖。
④学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:
Mname→Myear,Mname→Maddr,Mname→Mnum。
该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
①学生S候选码:Sno;外部码:Dept、Class;无全码。
②班级C候选码:Class;外部码:Dept;无全码。
③系D候选码:Dept或Dno;无外部码;无全码。
④学会M候选码:Mname;无外部码;无全码。
3试由Armostrong公理系统推导出下面三条推理规则。
(1)合并规则:若X→Z,X→Y则有X→YZ。
(2)伪传递规则:由X→Y,WY→Z有朋XW→Z。
(3)分解规则:X→Y,Z⊆Y有X→Z。
答:(1)已知X→Z,由增广律知XY→YZ,又因X→Y,可得XX→XY→YZ,根据传递律得X→YZ。
(2)已知X→Y,由增广律知XW→WY,又因WY→Z,可得XW→WY→Z,根据传递律得XW→Z。
(3)已知Z⊆Y,由自反律知Y→Z,又因X→Y,所以由传递律可得X→Z。
4关于多值依赖的另一种定义是:
给定一个关系模式R(X,Y,Z),其中X、Y、Z可以是属性或属性组合。
设x∈X,y∈Y,z∈Z,xz在R中的像集为
Yxz={r Y |r.X=x∧r.Z=z∧r∈R}
定义R(X,Y,Z)当且仅当Yxz=Yxz′对于每组(x,z,z′)都成立,则Y对X多值依赖,记作X→→Y。这里,允许Z为空集,在Z为空集时,称为平凡的多值依赖。请证明这里的定义和6.2.7节中定义6.9是等价的。
答:设Yxz=Yxz′对于每一组(x,z,z′)都成立,现证其能推出讲义中定义的条件:
设s,t是关系r中的两个元组,s[X]=t[X],由新定义的条件可知对于每一个z值,都对应相同的一组y值。这样一来,对相同的x值,交换y值后所得到的元组仍然属于关系r,即讲义中多值依赖的条件成立。
如果讲义定义的条件成立,则对相同的x值,交换y值后所得的元组仍属于关系r,由于任意性及其对称性,可知每个z值对应相同的一组y值,所以Yxz=Yxz′对于每一组(x,z,z′)都成立。
综上可知,两者是等价的。
5试举出三个多值依赖的实例。
答:(1)关系模式MSC(M,S,C)中,M表示专业,S表示学生,C表示该专业的必修课。假设每个专业有多个学生,有一组必修课。设同专业内所有学生选修的必修课相同,实例关系如下。按照语义对于M的每一个值Mi,S有一个完整的集合与之对应而不论C取何值,所以M→→S。由于C与S的完全对称性,必然有M→→C成立。
(2)关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组的活动项目。假设每个兴趣小组有多个学生,有若干活动项目。每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。按照语义有I→→S,I→→A成立。
(3)上课(学号,教师工号,教室),一个学生可由多个教师来教,一个学生可在多教室上课,而且一个教师可在多个教室上课,一个教室可由多个教师上课。所以存在如下多值依赖:学号→→教师工号和学号→→教室。
6有关系模式R(A,B,C,D,E),回答下面各个问题:
(1)若A是R的候选码,具有函数依赖BC→DE,那么在什么条件R是BCNF?
(2)如果存在函数依赖A→B,BC→D,DE→A,列出R的所有码。
(3)如果存在函数依赖A→B,BC→D,DE→A,R属于3NF还是BCNF。
答:(1)A是R的候选码,且(BC)也是R的候选码,则R是BCNF。
(2)(ACE)、(BCE)、(CDE)均为R的候选码。
(3)R属于3NF,R不属于BCNF。
7F面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。
(1)任何一个二目关系是属于3NF的。
(2)任何一个二目关系是属于BCNF的。
(3)任何一个二目关系是属于4NF的。
(4)当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)若RA→RB,RB→RC,则RA→RC。
(6)若RA→RB,RA→RC,则R.A→R,(B,C)。
(7)若RB→RA,RC→RA,则R,(B,C)→RA。
(8)若R,(B,C)→RA,则RB→RA,RC→RA。
答:(1)正确。因为关系模式中只有两个属性,所以无传递。
(2)正确。按BCNF的定义,若X→Y,且Y不是X的子集时,每个决定因素都包含码,对于二目关系决定因素必然包含码。
(3)正确。因为只有两个属性,所以无非平凡的多值依赖。
(4)错误。当A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。反之则不然。正确的是当且仅当函数依赖A→→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)正确。
(6)正确。
(7)正确。
(8)错误。反例关系模式SC(S#,C#,G),(S#,C#)→G,但S#↛G,C#↛G。
8证明:
(1)如果R是BCNF关系模式,则R是3NF关系模式,反之则不然。
(2)如果R是3NF关系模式,则R一定是2NF关系模式。
证明:(1)用反证法:设R是一个BCNF,但不是3NF,则必存在非主属性A和候选码x以及属性集y,使得x→y,y→A,其中A→x,A→y,y→x不在函数依赖中,这就是说y不可能包含R的码,但y→A却成立。根据BCNF定义,R不是BCNF,与题设矛盾,所以一个BCNF范式必是3NF。
(2)反证法:假设R中非主属性A部分依赖于关键字K,则存在K′是K的子集,使得K′→A,因K′是K的子集有K→K′,但K′↛K,于是有K→K′,K′↛K,K′→A,并且A不属于K,因而A传递以来于K,即R不属于3NF,与已知矛盾,所以一个3NF一定是2NF。