该声明:
3NF 确保无损分解,而 BCNF 则不然。
是不正确的,因为 BCNF 和 3NF 都会产生具有Lossless-join Decomposition 属性的分解,也就是说:
(R 1 ,R 2 ) 是 R 相对于一组 FD F 的无损连接分解,如果对于满足 F 的 R 的每个实例 r:
? R1 (r) ? ? R2 (r) = r。
这可以看出,因为有一个定理表明,检查分解 (R1,R2) 是否为无损连接的一个简单标准是:
[R 1?[R 2?[R 1?F +,或
[R 1?[R 2?[R 2?F + ,
并且 BCNF 和 3NF 的算法都产生满足此属性的分解(请参阅有关该主题的文献,例如“Garcia-Molina, Hector. Database Systems: The Complete Book , Pearson Prentice Hall”第 3 章的演示) .
真正将 3NF 与 BCNF 区分开来的是,产生 3NF 的综合算法始终保留原始关系的依赖关系,而 BCNF 的分析算法则不然。
R 的分解 (R 1 , R 2 ),给定
F R 1 ={X ? 是 | X ?是吗?F + ? XY ? R 1 },和
F R 2 ={X ? 是 | X ?是吗?F + ? XY ? [R 2 }
保留依赖f iff f ? (F R 1 ? F R 2 ) +。
归档时间: |
|
查看次数: |
1918 次 |
最近记录: |