在关系数据库设计中,对关系模式进行分解是为了避免冗余和异常 [1]。好的分解应该具有以下两个重要属性 [1]:
- 无损连接性 (Lossless Join):这意味着可以将原始关系投影(分解)到新的关系模式上,然后通过自然连接操作将这些分解后的关系重新组合,从而完全恢复原始关系,而不会产生额外(虚假)的元组。
- 依赖保持性 (Dependency Preservation):这意味着可以在分解后的关系中检查是否满足所有原始函数依赖(FD)和多值依赖(MVD),而无需将它们连接回原始关系 [1]。换句话说,原始关系中的所有依赖都可以通过检查分解后的关系来强制执行 [1]。
通常,一个好的关系模式分解应该同时满足无损连接性和依赖保持性,BCNF 分解可以实现无损连接,但并非总能保持依赖;而 3NF 分解可以同时实现无损连接和依赖保持 [1]。