考虑具有以下函数依赖关系的关系 R(A, B, C, D, E):A->BC, D->CE, C->E
AD+ = ABCDE
主要属性:AD 非主要属性:BCE
分解为 3NF 但不分解为 BCNF
R1(A, B, C, D) R2(C,E)
考虑具有以下函数依赖关系的关系 R(A, B, C, D, E):A->BC, D->CE, C->E
AD+ = ABCDE
主要属性:AD 非主要属性:BCE
分解为 3NF 但不分解为 BCNF
R1(A, B, C, D) R2(C,E)
自从我这样做以来,我已经很长时间了。但是,如果我记得在 3NF 中正确的话,如果一列传递依赖于另一列,则不允许列在表中。
在这种情况下,唯一的传递依赖是 A -> C -> E,这意味着需要从 R 中提取 E。
这是你对我的理解所做的。有些东西告诉我你可能需要从 R1 中提取 C,但这可能只是 BCNF 中的必需品。
在您的情况下,第三种范式如下:
R 1 (ABC)
R 2 (CE)
R 3 (CD)
R 4 (广告)
请注意,这是以保留依赖关系的第三范式分解关系的唯一方法,并且所有生成的依赖关系都使得所有分解的模式也在 BCNF 中。
最后,可以注意到,相同的关系可以通过失去一些函数依赖性以不同的方式在 BCNF 中分解。