3NF:提出问题第三范式的目的是要消除传递依赖!!!关系模式S#S SD(S# , SN, SD , DEAN)码是S#,属于2NF,但仍然具有不良特性。SDSN分析其依赖情况,发现该关系模式具有不良特性的原因DEAN是:存在非主属性对码的传消除!!提出递函数依赖函数依赖示意3NF。16
16 3NF:提出问题 关系模式 S_SD(S# , SN , SD , DEAN) 码是S#,属于2NF,但仍然具 有不良特性。 分析其依赖情况,发现该关 系模式具有不良特性的原因 是:存在非主属性对码的传 递函数依赖 - 消除!! 提出 3NF。 S# SD SN DEAN 函数依赖示意 第三范式的目的 是要消除传递依 赖!!!
3NF:定义(参见P176.)定义6.7关系模式R<U,F>中,若不存在这样的码X, 属性组Y及非主属性Z(Z ± Y),使得下式成立,X-→Y (Y+X), Y-→Z则称RE3NF。3NF的定义要求消除非主属性对码的传递依赖1例如,关系模式S SD3NF。因为存在非主属性对码的传递依赖。从 S#一→SD,SD 十 S#,SD-DEAN,可得S# DEAN(S#是码,DEAN是非主属性)。17
17 3NF: 定义(参见P176.) 定义6.7 关系模式R< U , F >中,若不存在这 样的码X,属性组Y及非主属性Z(Z Y),使 得下式成立, XY (YX), YZ 则称R3NF。 3NF的定义要求消除非主属性对码的传递依赖。 例如,关系模式S_SD3NF。因为存在非主属性对码 的传递依赖。 从 S#SD, SD → S#,SDDEAN, 可得 S# t DEAN (S#是码, DEAN是非主属性)
对非3NF模式进行分解,转为3NF通过模式分解,消除非主属性对码的传递依赖。■将S SD分解为:SNS#STUDENT(S# , SN, SD)SDDEPT(SD , DEAN)SDDEAN它们都是3NF的。函数依赖图练习:设有关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF。(ABC, C-→D)18
18 对非3NF模式进行分解,转为3NF 通过模式分解,消除非主属性对码的传递依赖。 将S_SD分解为: STUDENT(S# , SN , SD) DEPT(SD , DEAN) 它们都是3NF的。 {AB→C, C→D} 练习:设有关系模式R(A, B, C, D), 码为AB,给出它 的一个函数依赖集,使得R属于2NF而不属于3NF。 S# SN SD SD DEAN 函数依赖图
关于3NF的结论1.不存在非主属性的关系模式属于3NF。■没有非主属性2.全码关系模式属于3NF。■没有非主属性3.二目关系模式属于3NF。■不会存在传递依赖4.若R属于3NF,那么R也属于2NF。■可证明,反证5.若R属于2NF,但R不一定属于3NF。·例如,关系模式 S SD(S#,SN,SD,DEAN)19
19 关于3NF的结论 1. 不存在非主属性的关系模式属于3NF。 没有非主属性 2. 全码关系模式属于3NF。 没有非主属性 3. 二目关系模式属于3NF。 不会存在传递依赖 4. 若R属于3NF,那么R也属于2NF。 可证明,反证 5. 若R属于2NF,但R不一定属于3NF。 例如,关系模式 S_SD(S#, SN, SD, DEAN)