我有一个函数依赖集 F = {ABH->CK, A->D, C->E, BGH->L,L->AD,E->L,BH->E}.
为什么ABH->CK中A是多余的?
AB、BH 和 AH 的关闭时间是什么?
从
BH -> E -> L -> AD
开始,我们可以通过应用阿姆斯特朗传递性规则两次然后进行分解来说BH -> A
。从那里开始,如果我们包括平凡的 FD BH -> BH
,我们就会看到 BH -> ABH
。再次利用传递性,BH -> ABH -> CK
可以简化为BH -> CK
,即不需要A
来确定CK
。
关于给定行列式的一组 FD 的闭包可以通过再次使用阿姆斯特朗规则来组合直接或间接遵循所选行列式的所有函数依赖性来计算。例如,对于
BH
:
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
不是候选键。