(4)BCNF
BCNF是3NF处理R有多个候选码的扩展,当R有多个候选码时即使
如果关系模式R的所有不平凡的、完全的函数依赖的决定因素(左边的属性集)都是候选码,则
若要求保持函数依赖和无损联接,则总可以达到3NF,但不一定满足BCNF;因为BCNF可以达到无损连接,但不一定保持函数依赖
11.5 关系模式分解为范式的分解算法
(1)保持函数依赖地分解R到3NF
算法步骤:
求出R的最小函数依赖集F 把所有不在F中出现的属性组成一个关系模式R’,并在U中去掉这些属性 若F中存在X→A且XA=U,则算法结束输出{R’,R(U)},否则继续下一步 对F中的FD按相同的左部分组构成一个关系模式Ri(Ui),Ui包括了该组FD涉及的所有属性 去掉{Ri(Ui)}中属性集Ui是其他某个关系模式属性集Uj子集的关系模式Ri,得到最终的分解p={R1,R2,…,Rk,R’},p能够保持函数依赖地把R分解到3NF
(2)无损连接且保持函数依赖地分解R到3NF
算法步骤:
按算法(1)中步骤求出保持函数依赖的3NF分解,设q={R1,R2,…,Rk} 设X是R的主码,p={R1,R2,…,Rk,R(X)} 若X是q中某个Ri(Ui)属性集Ui的子集,则删除p中的R(X) 输出p,p能够无损连接且保持函数依赖地把R分解到3NF
(3)无损联接地分解R到BCNF
算法步骤:
p={R} 检查p中各关系模式是否满足BCNF,是则终止输出p 设p中S(Us)非BCNF,则必存在X→A且X不是S的候选码:S分解为S1(XA)和S2(Us-A),把p中的S替换为S1、S2,跳转至第二步