2、设有关系模式:ST(学号Sno,姓名Sname,导师号Tno,导师名Tname,课程号Cno,课程说明Ttile,成绩Grade)。 语义:每个学生的学号,每门课程号以及导师号唯一;一名学生只有一个导师,一个导师可以带多名学生;学生可选多门课,一门课可以有多个学生选,每个学生选完一门课后有一个成绩。 问: (1)分析此题的FD,给出候选码。ST属于第几范式?为什么? (2)对ST进行合理的逐步分解(到3NF为止)
时间: 2024-01-03 15:04:11 浏览: 101
(1) 根据语义,可以得出以下函数依赖(FD)关系:
Sno -> Sname, Tno
Tno -> Tname
Cno -> Title
Sno, Cno -> Grade
其中,Sno -> Sname, Tno 表示学生的学号唯一确定学生姓名和导师号,Tno -> Tname 表示导师号唯一确定导师姓名,Cno -> Title 表示课程号唯一确定课程说明,Sno, Cno -> Grade 表示学生和课程的组合唯一确定成绩。
候选码可以选择 {Sno, Cno} 或 {Sno, Cno, Tno}。
ST属于第二范式,因为所有非主属性都完全依赖于候选码,不存在部分依赖。
(2) 对ST进行逐步分解:
首先,根据 FD Tno -> Tname,可以将 ST 分解为两个关系:
ST1(Sno, Sname, Tno)
ST2(Tno, Tname)
其中,ST1 是由原关系 ST 中去掉 Tname 属性得到的。
接下来,根据 FD Cno -> Title,可以将 ST 分解为两个关系:
ST1(Sno, Sname, Tno)
ST2(Tno, Tname)
ST3(Cno, Title)
其中,ST3 是由原关系 ST 中去掉 Title 属性得到的。
最后,根据 FD Sno, Cno -> Grade,可以将 ST1 分解为两个关系:
ST4(Sno, Cno, Grade)
ST5(Sno, Sname, Tno)
其中,ST4 是由原关系 ST1 中去掉 Sname 和 Tno 属性得到的,ST5 是由原关系 ST1 中去掉 Grade 属性得到的。
至此,ST 已经被分解到第三范式。分解后的所有关系中,都不存在传递依赖。