鉴于关系R(A B C D E F G)的以下功能性依赖性
AB → CF
BG → C
AEF → C
ABG → ED
CF → AE
A → CG
AD → FE
AC → B
我已经通过使用将属性放在左,中,右列中的方法计算出候选键,这取决于它是在依赖项,右侧还是两者的左侧看到的。左表示属性是必需的,中间是未知的,右表示不是键的一部分。
我明白了:
L | M | R
--|---------|----
- | ABCDEFG | -
从这里我找出了每个属性和排列的闭包:BC,BD,BE,BF,BG,CD,CF ......
我发现只有A和CF的关闭包含所有属性,因此是候选键,但问题的解决方案也有BFG。
有人可以解释我在计算候选键时做错了什么吗? 感谢
答案 0 :(得分:2)
This algorithm尝试查找快捷方式(第3页),但在您的情况下,它找不到任何快捷方式。要确定属性的任何特定组合是否是键,您可以尝试确定该组合是否确定所有其他属性。在你的情况下,你已经完成了所有的工作;你只是缺少一些关于BFG的东西。
Logic Attributes
--
BFG -> BFG, ∴ ... { B FG}
BG -> C, ∴ BFG -> CF { BC FG}
BFG -> CF and CF -> AE, ∴ BFG -> AE {ABC EFG}
BFG -> AE, ∴ BFG -> A
BFG -> A and ABG -> ED, ∴ BFG -> ED {ABCDEFG}
所以BFG是候选键。