给出功能依赖性的候选键

时间:2012-04-16 21:52:53

标签: database functional-dependencies

鉴于关系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。

有人可以解释我在计算候选键时做错了什么吗? 感谢

1 个答案:

答案 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是候选键。