数据库系统概论(第5版) 王珊 萨师煊 第六章课后练习
第6章 关系数据库理论
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)各关系模式的最小函数依赖集如下: A、学生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传递函数依赖存在。 B、班级C(Class,Pname,Dept,Cnum,Cyear)最小函数依赖集如下: Class->Pname,Class->Cnum,Class->Cyear,Pname->Dept. 由于Class->Pname,Pname->Class,Pname->Dept 所以C1ass与Dept传递函数依赖存在。 C、系D(Dept,Dno,Office,Dnum)最小函数依赖集如下: Dept->Dno,Dno->Dept,Dno->Office,Dno->Dnum 根据上述函数依赖,Dept与Office,Dept与Dnum之间没有传递依赖。 D、学会M(Mname,Myear,Maddr,Mnum)最小函数依赖集如下: Mname->Myear,Mname->Maddr,Mname->Mnum 这种模式没有传输依赖。 (3)各关系模式的候选码和外部码,全码如下: A、学生S候选码:Sno;外部码:Dept、Class;无全码 B、班级C候选码:Class;外部码:Dept;无全码 C、系D候选码:Dept或Dno;无外部码;无全码 D、学习M候选码:Mname;无外部码;无全码