实例分析
描述一个关于系、学生、班级、学会等诸多信息的关系数据库
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系名、系号、系办公室地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数;
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况,讨论函数依赖是完全函数依赖还是部分函数依赖。
解答:
关系模式:
学生Student(Sno,Sname,Sbirth,Dname,Cno,Saddr)
班级Class(Cno,Pname,Dname,Cnum,Cyear)
系Dept(Dname,Dno,Daddr,Dnum)
学会Academic(Aname,Ayear,Aaddr,Anum)
学生-学会SA(Sno,Aname,SAyear)
极小函数依赖集:
学生Student:
Sno->Sname;Sno->Sbirth;Sno->Cno;Cno->Dname;Dname->Saddr
班级Class:
Cno->Pname;Cno->Cnum;Cno->Cyear;Pname->Dname;(Pname,Cyear)->Cno
系Dept:
Dname->Dno;Dno->Dname;Dname->Daddr;Dname->Dnum
学会Academic:
Aname->Ayear;Aname->Addr;Aname->Anum
学生-学会SA:
(Sno,Aname)->SAyear
传递函数依赖
学生Student:
Sno->Cno,Cno->Dname 可得Sno->Dname
Cno->Dname,Dname->Saddr 可得Cno->Saddr
Sno->Cno Cno->Dname Dname->Saddr 可得Sno->Saddr
班级Class:
Cno->Pname Pname->Dname 可得Cno->Dname
(Pname,Cyear)->Cno和(Sno,Aname)->SAyear 全是完全函数依赖
803



被折叠的 条评论
为什么被折叠?



