|
|
【定义7.12】若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性 使得X→Y, 成立,则关系模式R∈3NF。
|
|
|
|
即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。
|
|
|
|
例如,FIRST1?3NF,因为在分解后的关系模式FIRST1中有Sno→Status,Status→City,存在着非主属性City传递依赖于码Sno。若此时将FIRST1继续分解为:
|
|
|
|
FIRST11(Sno,Sname,Status)∈ 3NF
|
|
|
|
|
|
通过上述分解,数据库模式FIRST转换为FIRST11(Sno,Sname,Status)、FIRST12(Status,City)、FIRST2(Sno,Pno,Qty)三个子模式。由于这三个子模式都达到了3NF,因此称分解后的数据库模式达到了3NF。
|
|
|
|
可以证明,3NF的模式必是2NF的模式。产生冗余和异常的两个重要原因是部分依赖和传递依赖。因为3NF模式中不存在非主属性对码的部分函数依赖和传递函数依赖,所以具有较好的性能。对于非3NF的1NF、2NF其性能弱,一般不宜作为数据库模式,通常要将它们变换成为3NF或更高级别的范式,这种变换过程称为“关系模式的规范化处理”。
|
|
|