0

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

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

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

4

2 回答 2

1

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

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

@ErwinSmout 的这个 SO 回答描述了一种适用于铅笔和纸的算法。大多数教科书都包含适用于自动化的算法。

于 2013-01-07T13:30:10.407 回答
0

让我们简单点:这是Super,candidate键的定义

超级钥匙

超级密钥代表密钥的超集。

超级密钥是一组一个或多个属性,它们被集体采用,并且可以唯一地标识所有其他属性。

候选键

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

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

通过闭包属性,我们得到

A+=ABCD

自从

A->BCD给定

A-> 自反性规则

因此 A 是候选键。

希望这可以帮助!

于 2015-05-10T09:34:19.577 回答