1

我有一个关系A,B,C,d,E与函数依赖如何找到一个候选键

1)A-> BC

2)CD->电子

3 )B-> d

4)E->甲

使用1给出了一个,d,E,然后使用4将使它d,E

使用2给出了A, B,C,d,然后使用3给出A,B,C并使用1给出了一个

使用2给出了A,B,C,d,并使用1给出了A,d

使用4给出了B, C,d,E和使用2给出了B,C,d,并使用3给出B,C

使用3给出了A,B,C,E和使用1给出了A,E和使用4给出ë

所以我会有5个超级按键? (A,E,AD,BC,DE)。而从我的超级键我会选择独特的。

因为我可以给E得到A,我可以删除和AD(因为DE是一样的),因为我可以从AI得到BC可以删除,所以我留下了

E,DE

这是我的超级钥匙吗?或者它只是E?

回答

3

根据定义,关系的候选关键字K是一组属性,它确定所有其他属性,并且我们不能从中删除任何属性而不会丢失该属性。

要找到关系的所有关键点,如果你不遵循正式算法,那么你可以从FD的每个行列式检查开始,看看它是否是(超级或候选)关键点,通过计算它关闭。例如,从A开始,你可以找到:

A+ = A 
    = ABC (by using 1) 
    = ABCD (by using 3) 
    = ABCDE (by using 2) 

左右,决定了所有的属性,并为此是一个候选键(而不是一个严格的超密钥,因为你不能从中删除任何属性!)

计算其他因素的关闭,你可以发现:

CD+ = ABCDE (candidate key, since C+ and D+ do not contain all the attributes) 
B+ = BD (not a key) 
E+ = ABCDE (candidate key) 

现在你有三个候选键,A,E,和CD。而且由于B只确定D,我们可以尝试添加一些东西来看它是否可以成为一个键的一部分。我们不要加A或E,因为它们已经是钥匙,而我们不要加D,因为它已经被B确定了(这样它就会产生一个超级钥匙)。所以我们尽量C:

BC+ = ABCDE (candidate key, since B+ and C+ do not contain all the attributes) 

所以,最后,我们可以说,关系有四个(只有四)候选键:

A 
BC 
CD 
E 
+0

谢谢!我感到困惑,因为我认为我们删除了可以由另一个密钥确定的密钥。就像从AB列表中删除BC一样,因为A-> BC。我现在明白了! –