寻找候选钥匙/超级钥匙

时间:2015-05-07 18:47:24

标签: mysql sql database relation candidate-key

我正在处理另一个问题,它要求候选键和超级键。我相信我有正确的候选键,但是如果有人可以证明这将是伟大的。我也很难找到超级钥匙。我不知道是否有一个通用的公式可以找到它们或等等。

以下是问题:

Relation Schema: U(A,B,C,D)

FD's: 

A-->B

B-->C

C-->D

D-->A

我发现候选键是:{A},{B},{C},{D}。如果有人可以验证这是否正确,我将不胜感激。另外,如果你能让我知道如何找到这个的超级钥匙,这将是伟大的。我不是直接寻找答案,我只是想知道我对候选键的答案是否正确以及如何找到这个以及可能的其他问题的超级键(如果有通用的方法来找到它们)。

希望有人可以提供帮助。一旦有人帮我解决这个问题,它会给出最佳答案。

为每个人欢呼。

1 个答案:

答案 0 :(得分:0)

让我解释一下如何以简单的方式找到候选键:

形成三列,左,右和中

  

在左栏中,添加仅出现在FD的左侧手侧的属性

     

在右栏中,添加仅出现在FD

右侧手侧的属性      

在中间栏中,添加在FD的右侧和左侧出现两者的属性

说明:

  

左列的属性表示,每个可能的候选键必须包含这些属性

  

右列的属性表示候选键不应包含它

  

中间的属性可能包含也可能不包含在超级键中

在给定的例子中, 所有属性都在中间

然后,应用关闭属性

  

A + = ABCD

因为

  

A-> 反身性规则

     

A-> B 给予

     

A-> C 及物性规则 A-> B和B-> C

     

A-> D 传递性规则 A-> B和B-> C和C-> D

同样,我们也可以将其他键显示为候选键。

超级密钥只是候选键和非素数属性的超集

因此,您的答案是正确

这种关系的超级密钥是一组超级候选密钥,因此

超级键是 AB AC ABC 等等。

希望这会有所帮助。