关系模式Student(Sno,Sname,Cno,Cname,Grade,Tname,Taddr)的属性分别表示学号,学生姓名,课程号,课程名,成绩,任课教师名和教师地址。其中一个学生可以选若干门课,一个教师可以讲授若干门课,一门课程可以由多个教师讲授,对于同一门课程,学生只能选定一个教师讲授一门课,教师不会重名。下列对关系的分解正确的并且是无损连接及保持函数依赖的是()。
A.(Sno,Sname,Cno,Tname,Taddr),(Sno,Sname,Cno,Cname,Grade)属于2NF
B.(Sno,Sname),(Sno,Cno,Grade Tname,Taddr),(Cno,Cname)属于2NF
C.(Sno,Shame),(Sno,Cno,Grade),(Tname,Taddr),(Cno,Cname)属于3NF
D.(Sno,Sname),(Sno,Cno,Grade),(Tname,Taddr),(Tname,Cno),(Cno,Cname)属于3NF
参考答案:D
解析:
A选项中(Sno,Sname,Cno,Tname,Taddr)的码是(Sno,Cno,Tname),则由Sno→sname可知非主属性sname部分依赖于码(Sno,Cno,Tname),这个对题中关系的分解不符合2NF。
同理,B选项(Sno,Cno,Grade,Tname,Taddr)也存在Taddr对码(Sno,Cno,Tname)的部分依赖,这样的关系分解也不属于2NF。
C、D均满足3NF。但本题要求无损连接,所谓无损连接,就是分解后的关系能恢复成原来的关系。选项C,(Sno,Sname)(Sno,Cno,Crade)
(Tname,Taddr)
(Cno,Cname)=(Sno,Sname,Cno,Grade,Cname)
(Tname,Taddr),剩下的连接不能完成原关系的恢复不具有无损性,因此C错误。
D选项,(Sno,Sname)(Sno,Cno,Grade)
(Tname,Taddr)
(Tname,Cno)
(Cno,Cname)=(Sno,Sname,Cno,Grade,Tname,Taddr,Cname)恢复到题中关系。因此为正确答案。