规范化消除了冗余属性

时间:2017-03-09 05:47:44

标签: database database-design relational-database relational-algebra

如果我具有功能依赖性:F = {ABH-> CK,A-> D,C-> E, BGH-> L,L-> AD,E-> L,BH-> E}

任何人都可以解释为什么ABH-> CK中的A是多余的,AB,BH和AH的闭包是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

BH -> E -> L -> AD以来,我们可以通过两次应用阿姆斯特朗的传递规则来说BH -> A,然后进行分解。从那里,如果我们包含琐碎的FD BH -> BH,我们就会看到BH -> ABH。再次使用传递性,BH -> ABH -> CK可以缩减为BH -> CK,即A不需要CK来确定BH

可以通过再次使用Armstrong的规则来计算关于给定行列式的一组FD的关闭,以直接或间接地从所选择的行列式组合所有功能依赖性。例如,对于BH -> BH (trivial) BH -> BEH (union with BH -> E) BH -> BEHL (union with BH -> L which follows from BH -> E -> L) BH -> ABDEHL (union with BH -> AD which follows from BH -> L -> AD) BH -> ABCDEHKL (union with BH -> CK since BH -> ABH -> CK)

BH* = ABCDEHKL

所以G。请注意,BH未派生,因此Dockerfile不是候选键。