对于具有以下功能依赖性的{A,B,C,D}关系 -
A -> BCD
B -> C
CD -> A
使用我在其中一个网站上找到的特定方法,我将候选密钥作为ABCD。是对的吗 ?什么是正确的候选键?
答案 0 :(得分:1)
ABCD是一个微不足道的超级钥匙。每个算法都必须生成ABCD。但ABCD不是这种关系的候选关键。根据定义,候选键是最小的超级键。
您可以通过简单的检查判断链接中的算法是否不足。它不会生成A作为候选键,但是你给了A - > BCD,所以A显然是候选键。除A之外还有两个候选键。
This SO answer by @ErwinSmout描述了一种适用于铅笔和纸张的算法。大多数教科书都包含适合自动化的算法。
答案 1 :(得分:0)
让我们简单一点: 以下是候选键
的定义超级密钥
超级键代表键的超集。
超级密钥是一组共同采用的一个或多个属性,可以唯一地标识所有其他属性。
候选键
候选键是超级键,没有适当的子集是超级键。
换句话说,候选键是最小的超级键。
通过关闭属性, 我们得到
<强> A + = ABCD 强>
因为
A-> BCD 给予
A-&gt; 反身性规则
因此A是候选键。
希望这有帮助!