2NF的定义 如果R∈1NF,且每一个非主属性完全函数依赖于
码,则, R∈2NF 。
2NF(续)
例: 关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade) 其中,Sloc为学生住处,假设每个系的学生住在同一个地方。 主键:{Sno,Cno}
函数依赖包括:
F={(Sno, Cno) f Grade, Sno → Sdept, Sno → Sloc, Sdept → Sloc}
Sno → Sname
完全
(Sno,Cno) → Grade
完全
(Sno,Sname) → Sdept
部分
直接函数依赖与传递函数依赖
如果X→Y,Y→Z,且Y X,Y→X,则称Z传递函数依赖于 X。
例如: Student(Sno, Sname, Sdept, Mname, Cno, Grade)
因为Sno → Sdept, Sdept → Mname 所以存在传递依赖Sno → Mname
将一个2NF关系分解为多个3NF的关系后,并不能完全消 除关系模式中的各种异常情况和数据冗余。
课堂练习2:
将Student(Sno, Sname, Sdept, Mname, Cno, Grade)分解为一组2NF模式:
SC(Sno, Cno, Grade) SD(Sno, Sname, Sdept, Mname)
主键:{Sno}
6.2.5 3NF
3NF的定义 如果R 是2NF,且每个非主属性都不传递依赖 于R的候选码,则R属于3NF。
3NF(续)
分析下面的两个2NF,它们是不是属于3NF。 SC(Sno, Cno, Grade) 是 SL(Sno, Sdept, Sloc) 不是