目录
1 建立一个关于系、学生、班级、学会等诸信息的关系数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份:
描述系的属性有:系名、系号、系办公室地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数。
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班
有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在
传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完
全函数依赖还是部分函数依赖。
指出各关系的候选码、外部码,并说明是否全码存在。
2 试由Armostrong公理系统推导出下面三条推理规则。
(1)合并规则:若X→Z,X→Y,则有X→YZ。
(2)伪传递规则:由X→Y,WY→Z,有XW→Z。
(3)分解规则:X->Y,Z⊆Y,有X→Z。
3 有关系模式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)关系模式如下:
学生:S(Sno, Sname, Sbirth, Dept, Class, Rno)
班级:C(Class, Pname, Dept, Cnum, Cyear)
系:D(Dept, Dno, Office, Dnum)
学会:M(Mname, Myear ,Maddr, Mnum)
(2)每个关系模式的最小函数依赖集如下:
①学生的函数依赖如下:
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存在传递函数依赖
②班级的函数依赖如下:
Class->Pname, Class->Cnum, Class->Cyear, Pname->Dept
传递函数依赖如下:
因为Class->Pname, Pname-/>Class, Pname->Dept
所以Class与Dept存在传递函数依赖
③系的函数依赖如下:
Dept->Dno, Dno->Dept, Dno->Dnum, Dno->Office
显然,无传递函数依赖
④学会的函数依赖:
Mname->Myear, Mname->Maddr, Mname->Mnum
显然无传递函数依赖
(3)各关系模式的候选码、外部码,全码如下:
候选码 |
外部码 |
全码 |
|
学生 |
Sno |
Dept、Class |
无 |
班级 |
Class |
Dept |
无 |
系 |
Dept或Dno |
无 |
无 |
学会 |
Mname |
无 |
无 |
因为X->Z,由增广律得:XY->YZ,
又因为X->Y能得XX->XY
所以XX->XY->YZ
即X->YZ
因为X->Y, 根据增广律得:XW->YW
又因为WY->Z
所以XW->Z
因为Z⊆Y,由自反律可得:Y->Z
又因为X->Y
所以X->Z
由定义得,属性组BC含有码时,R是BCNF。BCNF的所有决定性因素都含有码,所以BC应该含有码。
R的所有码:ACE、BCE、CDE。
由函数依赖关系A→B,BC→D,DE→A可得,A可以决定B,加上C决定D,再加上E可得R,故第一组ACE。由BC可决定D,加上E可决定A,亦可得R,第二组BCE。由DE可决定A,B传递依赖于DE,加上C可得R,第三组即CDE。
R属于3NF,不属于BCNF。
ABCDE都是主属性,BCNF中不存在主属性对码的部分依赖。在R中的函数依赖中决定性因素不包含码。