假设我们有一个R(A,B,C,D,E,F)和它的函数依赖F,其是否满足BCNF?如果不是将其化为BCNF
F={A -> BCD
BC->DE
B->D
D->A}
首先我们需要求出该函数依赖集的最小函数依赖集(正则覆盖canonical cover, minimal)这里不赘述求法了,得到
F'={A->BC B->DE D->A}
首先观察A->BC,其不符合BCNF的条件。同时我们应该注意到 B->DE D->A所以分裂后变成A->BCDE
使用A->BCDE进行分裂,变成两部分,一部分是ABCDE, 另一部分是R(A,B,C,D,E,F)删掉BCDE(箭头右面的元素)后留下的的AF,此时AF已经没有对应的函数依赖,输出AF。观察ABCDE,依旧含有A->BC B->DE D->A三个函数依赖,但三个函数依赖都满足BCNF条件,输出ABCDE。
同理:
R={A,B,C,D,E,F,G,H},F={AB->CD D->FG FG->H},转换为BC范式
过程就不写了,直接上分解树
澳大利亚格里菲斯大学有一个非常好用的范式计算器,可以计算2,3,4,BCNF,可以用来学习和参考。计算器传送门