假设有一个关系R,其属性为ABCDE。以下是给定的依赖关系:A -> B,BC -> E和ED -> A。答案已经给出,是CDE、ACD和BCD。我只需要知道如何得出答案。谢谢。
假设有一个关系R,其属性为ABCDE。以下是给定的依赖关系:A -> B,BC -> E和ED -> A。答案已经给出,是CDE、ACD和BCD。我只需要知道如何得出答案。谢谢。
候选键是最小的超键。换句话说,键中没有不必要的属性。找到候选键的第一步是找到所有超键。对于那些不熟悉的人,超键是一个属性集,其闭包是所有属性的集合。换句话说,超键是一个您可以从中开始,并按照功能依赖性,将引导您到包含每个属性的集合的属性集。
由于我们有以下功能依赖关系:A -> B,BC -> E和ED -> A,因此我们有以下超键:
(这里的一个技巧是,由于C和D从未出现在功能依赖关系的右侧,因此每个键都必须包括C和D)
现在我们有了所有的超键,我们可以看到只有最后三个是候选键。因为前四个都可以被删减。但是我们不能从最后三个超键中取走任何属性,并仍然使它们保持超键。
因此,候选键是:ACD,BCD和CDE。
例如:当我拥有属性集ACD的ABCDE时,我可以停止。
如果您拥有所有属性,则具有超键。 例如:ACD是一个超键,因为我拥有ABCDE。
CD是候选键,因此ACD、BCD、CDE都可以成为候选键。C、D在任何功能依赖的右侧都不出现,这就是为什么CD是候选键的原因。
这个链接将帮助您理解。