3NF分解与BCNF分解

时间:2024-03-13 12:23:31

1. 3NF分解

3NF分解与BCNF分解

  1. 先求出正则覆盖Fc
  2. 对于Fc里面的所有函数依赖a->b,均转化为Ri=ab
  3. 对于所有的模式Ri
    • 如果包含候选码,进行第4
    • 如果都不包含候选码, 将任意一个候选码添加到模式Ri里面
  4. 如果一个模式被另一个模式包含,则去掉此被包含的模式。

例子:U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D}
1.正则覆盖为{B->DG,CE->B,C->AD}
2.R1=BDG,R2=CEB,R3=CAD
3.CE是候选码,R2包含CE
4.R1,R2,R2没有包含关系
5.3NF分解为{BDG},{CEB},{CAD}

2.BCNF分解

3NF分解与BCNF分解3NF分解与BCNF分解例:R(A,B,C,D,E)
F={A->C,C->D ,B->C,DE->C,CE->A}
考虑A->C,
R1=AC,R2=ABDE
F2={A->D,B->D,DE->D}
考虑A->D
R21=AD,R22=ABE
F22={BE->A}(由B->C, CE->A得到)
所以为{AC,AD,ABE}