从功能依赖中查找候选键

时间:2013-01-02 16:21:26

标签: functional-dependencies candidate-key

对于具有以下功能依赖性的{A,B,C,D}关系 -

A -> BCD
B -> C
CD -> A

使用我在其中一个网站上找到的特定方法,我将候选密钥作为ABCD。是对的吗 ?什么是正确的候选键?

2 个答案:

答案 0 :(得分:1)

ABCD是一个微不足道的超级钥匙。每个算法都必须生成ABCD。但ABCD不是这种关系的候选关键。根据定义,候选键是最小的超级键。

您可以通过简单的检查判断链接中的算法是否不足。它不会生成A作为候选键,但是你给了A - > BCD,所以A显然是候选键。除A之外还有两个候选键。

This SO answer by @ErwinSmout描述了一种适用于铅笔和纸张的算法。大多数教科书都包含适合自动化的算法。

答案 1 :(得分:0)

让我们简单一点: 以下是候选

的定义

超级密钥

  

超级键代表键的超集。

     

超级密钥是一组共同采用的一个或多个属性,可以唯一地标识所有其他属性。

候选键

  

候选键是超级键,没有适当的子集是超级键。

     

换句话说,候选键是最小的超级键。

通过关闭属性, 我们得到

  

<强> A + = ABCD

因为

  

A-> BCD 给予

     

A-&gt; 反身性规则

因此A是候选键。

希望这有帮助!