功能依赖的候选键?

Candidate Keys on Functional Dependencies?

关系R=(A,B,C,D,E)和函数依赖F如下:

F={A->BC, CD->E, B->D, E->A}

E, BC and CD can be a candidate keys, but B cannot.


谁能告诉我这个事实是如何计算出来的?我google它但不能像我以前所知道的那样理解更多。

您可以通过计算其函数依赖的闭包来找到给定属性集的所有依赖属性。让我演示一下:

A -> ABC -> ABCD -> ABCDE

A 确定 BC(给定)以及它自己(平凡地)因此 A -> ABC。添加 B -> D 得到 ABC -> ABCD。最后加上CD -> E得到ABCD -> ABCDE。我们停在这里是因为我们已经确定了整个关系,因此 A 是一个候选键。

你应该验证一下,从EBCCD开始,你确实可以确定整个关系。

B 开始,我们得到:

B -> BD

就是这样。关系的其余部分无法从 BD 确定,因此它不是候选键。

一种更直观的方法是勾勒出函数依赖关系:

从任意一组属性开始,尝试按照箭头找到通往其他所有属性的路径。如果您从 E 开始或访问了 CD

,您只能到达 E

B,你可以到达D,但如果没有C,你就不能去E,这也不包括A ].所以 B 不能成为候选键。