为了满足题意,所以不能直接修改成3NF,所以做以下的修改满足2NF:
S-L(SNO,Sdept,Sloc) S-C(SNO,Cno,G)
这样SNO是S-L主键,Sdept,Sloc唯一依赖SNO,而(SNO,CNO)是S-C主键,G唯一依赖(SNO,CNO)。
但是,Sloc可由Sdept唯一确定,所以这个解其实不满足3NF。
做以下的修改转换为3NF。
S-D(SNO, Sdept) D-L(Sdept,Sloc),S-C(SNO,CNO,G)
问题解决了。
这种问题你就明确的记住2NF和3NF的规则,然后就把每个表的主键弄出来,把非主键和其他字段进行比较,判断是否唯一由全部主键确定就好。
1,查询学生表中。sdept为计算机的人,并按sno降序排列SELECT Sname, Ssex, Sage, Sdept
FROM S
WHERE Sdept = '计算机'
ORDER BY Sno DESC
2,查询Ccredit为5 并且grade大于60 的学好,姓名,性别。
SELECT Sno, Sname, Ssex
FROM S
WHERE sno IN (SELECT SC.Sno
FROM SC, C
WHERE SC.CNO = C.Cno
AND C.Ccredit = 5
AND SC.Grade >60)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)