我正在遵循此PDF 中的算法,以便从给定的函数依赖关系中找到我的关系的所有候选键。
我发现我所有的属性都是中间属性,因此没有必要的属性。算法的第 4 步(第 6 页)说:Let L be the list of all non-empty subsets of M (the middle-ground attributes)
。但是我有 7 个中间属性,这意味着我需要 L 中的 127 个元素。我做错了什么吗?
请有人解释一下我应该如何在给定一组功能依赖项的情况下找到候选键?
我正在遵循此PDF 中的算法,以便从给定的函数依赖关系中找到我的关系的所有候选键。
我发现我所有的属性都是中间属性,因此没有必要的属性。算法的第 4 步(第 6 页)说:Let L be the list of all non-empty subsets of M (the middle-ground attributes)
。但是我有 7 个中间属性,这意味着我需要 L 中的 127 个元素。我做错了什么吗?
请有人解释一下我应该如何在给定一组功能依赖项的情况下找到候选键?
您引用的论文确实表明您需要从具有 127 个元素的 L 开始。不要忘记,一旦找到一组可以补充候选键的必要属性集的中间属性集,L 的大小就可以迅速减小。
第 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 不是候选键,因为它们都不是最小的超级键。
希望这可以帮助