导航菜单

第6章 关系数据理论

第2篇设计与应用开发篇第6章关系数据理论

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。

相关推荐: