我遇到了与功能依赖关系有关的数据库设计问题。
以下是我正在使用的关系模式R及其功能依赖关系集F:
R = (A, B, C, D, E, F, G)
F = {A->BC, CD->AB, EF->AD, B->AEF}
我的目标是检查验证DE-> AC是否可以从F派生,即,是否在F +(F闭包)中。
我理解阿姆斯特朗的公理(基本上是关于函数依赖的代数式操作,可以将它们操纵成R和F的真实陈述)的反身性,增强,传递性,并集,分解和伪传递,但我是我不确定我是否以正确的方式应用它们以便达到对于是否包含在F +中是否包含DE-> AC的确定是或否的答案。
我一直在搞乱DE-> AC,这是我到目前为止所处的位置:
Given: A->BC
Given: CD->AB
Therefore: CD->A and CD->B
From there I deduced that CD->BC by the transitivity rule.
I then canceled out the C's on both sides:
D->B
After that I augmented E's on both sides:
DE->BE
By decomposition, I now have:
DE->B and DE->E, of which DE->B will be what I want to work with to try to make the right-hand-side AC.
我现在对这个功能依赖有适当的左侧但我不知道下一步做什么使右侧等效于AC。
你们中的任何人都能看到我在下一步该做什么时可能会缺少什么吗?
非常感谢你的帮助!
答案 0 :(得分:1)
继续使用DE-> BE和B-> AEF获得DE-> ABDEF。
现在继续使用A-> BC等,直到您在RHS上设置属性为AC的超集。