找到SuperKeys

时间:2015-05-07 04:09:25

标签: mysql sql database relation candidate-key

我正在做一些教科书练习,要求找出关系R和超级密钥的候选键。

我已经解决了候选键,但我不确定如何解决超级键?我有点困惑。

这是关系模式和功能依赖关系:

Relation Schema: **S(A, B, C, D)** 

**FD's:**

A-->B

B-->C

B-->D

所以我发现{A,AB}是解决后的候选键。我只是不确定如何为此找到超级密钥。任何帮助将不胜感激。谢谢大家。

1 个答案:

答案 0 :(得分:0)

要查找候选键,您需要查看使用依赖项的所有属性的路径。因此,您对A的信息是正确的,因为从A开始,您可以B达到{C, D}AB不能被视为候选密钥,因为您的依赖项中从未提及过它。考虑它的另一种方法是记住候选键是保证行中唯一性的最小属性数。但由于A已经是候选键,因此AB不是最小集合。 由于您只有一个候选键AA称为键属性,所有其他属性称为非键属性。然后根据2确定超级密钥的数量与非密钥属性(B, C, D)的数量的关系。在这种情况下,您应该有8个超级密钥。找到它们的方法只是将A与所有可能的非键属性组合进行混搭。所以你的超级密钥将是A, AB, AC, AD, ABC, ABD, ACD, ABCD