- 建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:学号、姓名、出生年月、系名、班号、宿舍区。
班级:班号、专业名、系名、人数、入校年份。
系:系名、系号、系办公地点、人数。
学会:学会名、成立年份、办公地点、人数。
语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会
有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,
对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出
各关系模式的候选码、外部码,有没有全码存在?
-
关系模式:
学生: S(Sno, Sname, Sbirth, Dept, Class, Rno)
班级: C(Class, Pname, Dept, Cnum, Cyear)
系: D(Dept, Dno, Office, Dnum)
学会: M(Mname, Myear, Maddr, Mnum) -
最小函数依赖集
(1) 学生
a. 最小函数依赖集
Sno->Sname;
Sno->Sbith;
Sno->Class;
Class->Dept;
Dept->Rno;
b. 传递函数依赖:
Sno与Rno之间存在着传递函数依赖。
因为Sno->Dept;而Dept->Sno,Dept->Rno (宿舍区)
Class与Rno之间存在着传递函数依赖。
因为Class->Dept,Dept子Class, Dept ≥Rno
Sno与Dept之间存在着传递函数依赖。
因为Sno->Class,Class->Sno,Class->Dept
(2) 班级
a. 最小函数依赖集
Class->Pname;
Class->Cnum;
Class->Cyear;
Pname->Dept.
b. 传递函数依赖
Class与Dept之间存在着传递函数依赖。
因为Class ->Pname, Pname->Class, Pname->Dept
(3) 系
a. 最小函数依赖集:
Dept ->Dno;
Dno->Dept;
Dno ->Office;
Dno->Dnum
b. 传递函数依赖
Dept 与Office; Dept 与Dnum之间不存在传递依赖。
(4) 学会
a. 最小函数依赖集:
Mname ->Myear;
Mname-> Maddr;
Mname->Mnum;
b. 传递函数依赖
该模式不存在传递依赖。 -
候选码,外部码,全码
(1) 学生
候选码: Sno
外部码: Dept ,Class
全码:无
(2) 班级
候选码: Class
外部码: Dept
全码:无
(3) 系
候选码: Dept或Dno
外部码:无
全码:无
(4) 学会
候选码: Mame
外部码:无
全码:无
- 有关系模式R(A,B,C,D,E),回答下面各个问题:
(1) 若A是R的候选码,具有函数依赖BC->DE,那么在什么条件下R是BCNF?
当BC也是R的候选码时,R是BCNF。
(2) 如果存在函数依赖A->B, BC->D, DE->A,列出R的所有码。
R的码有: (ACE)、(BCE)、(CDE)
(3) 如果存在函数依赖A->B, BC->D, DE->A, R属于3NF还是BCNF。
R属于3NF - 下面的结论哪些是正确的?哪些是错误的?对于错误的请给一个反例说明之。
(1) 任何一个二目关系是属于3NF。
正确。
(2) 任何一个二目关系是属于BCNF.
正确。
(3) 任何一个二目关系是属于4NF的。
正确
(4) 当且仅当函数依赖A->B在R上成立,关系R(A,B,C)等于其投影R1(4, B)和R2(4, C)的连接
正确
(5) 若R.A->R.B,R.B->R.C,则R.A->R.C。
正确
(6) 若R.A->R.B, R.A->R.C, 则R.A->R.(B, C)。
正确
(7) 若R.B->R.A, R.C->R.A,则R.(B, C) ->R.A。
正确
(8) 若R.(B,C) ->R.A, 则R.B->R.A,R.C->R.A。
错误,如学生的班级号为B01,班内序号为01,班级号和班内序号结合(B01,01)可以唯一确定一个学生,但是班级号B01或班内序号01无法确定唯一一个学生