2

给定以下对关系 R(ABCDEFG) 的函数依赖

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。

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

4

1 回答 1

2

该算法尝试查找快捷方式(第 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 是一个候选键。

于 2012-04-17T10:54:19.063 回答