找到关系的所有候选键

时间:2011-11-22 22:00:51

标签: database database-normalization functional-dependencies

我正在使用this PDF中的算法,以便从给定的功能依赖项中找到关系的所有候选键。

我发现我的所有属性都是中间属性,因此没有必要的属性。算法的第4步(第6页)说:Let L be the list of all non-empty subsets of M (the middle-ground attributes)。但是我有7个中间地面属性,这意味着我需要L中的127个元素。我做错了吗?

有人可以解释一下如何在给定一组功能依赖项的情况下找到候选键吗?

2 个答案:

答案 0 :(得分:0)

你引用的论文确实表明你需要从拥有127个元素的L开始。不要忘记,一旦找到一组中间地面属性可以迅速减少L的大小,这些属性可以补充候选键的必要属性集。

答案 1 :(得分:0)

步骤4:在pdf中计算所有超级密钥而不是候选密钥。你不会得到127个候选密钥..

以下是候选人和超级钥匙之间的区别:

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

候选键: 候选键是超级键,没有适当的子集是超级键。换句话说,候选键是最小的超级键。

让我们考虑一个例子:
    关系是 R(A,B,C,D,E)

功能依赖是:

  

A→BCDE这意味着属性“A”唯一地确定其他属性B,C,D,E。   BC→ADE这意味着属性'BC'共同确定关系中的所有其他属性A,D,E。

主键:A

候选钥匙:A,BC

超级钥匙:A,BC,ABC,AD

ABC,AD不是候选密钥,因为它们都不是最小的超级密钥。

希望这有帮助