2

我有关系R(ABCDEF)和功能依赖F{AC->B, BD->F, F->CE}

我必须找到关系的所有候选键(阿姆斯特朗公理)。

我这样做了:

A->A, B->B, C->C, D->D, E->E, F->F

来自F->CE=>F->C and F->E

And then:
 1. BD->F
 2. F->E
 3. BD->E
 4. BD->EF
 5. BD->BD
 6. BD->BDEF
 7. BD->F
 8. F->CEF
 9. BD->CEF     => BD->BCDEF

现在我正试图让 BD 成为候选键A的右侧。BD->BCDEF

如果有人可以提供帮助,那就太好了。

编辑:

 1. ABD->ABCDEF
 2. ACD->BD
 3. ACD->ABD    => AC->B and ACD->ABCDEF => BD->ABCDEF
4

2 回答 2

1

您(已编辑)逻辑的最后一步是

AC->B and ACD->ABCDEF, therefore BD->ABCDEF

看起来您已将左侧的 AC 替换为 B。您似乎在用算术术语思考,而不是根据阿姆斯特朗的推理规则。没有一条推论规则说“如果 AC-> B,那么无论 AC 出现在哪里,你都可以用 B 替换 AC”。(有时看起来就是这样,但事实并非如此。)AC 和 B 不相等,它们也不相等。

想象人们的名字是独一无二的。那么“名字”将决定“身高”,“名字”将决定“体重”。但是你不能身高代替名字;你不能说“身高”决定“体重”。术语不相等,也不等价。

BD 不是候选键,但 ABD 是。(还有其他人。)

于 2014-07-10T17:50:32.947 回答
0

经验法则:

An Attribute appearing only on the left hand side in your FDs is in all keys.
An Attribute not appearing in any of your FDs is in all keys.
An Attribute only appearing on the right hand side in your FDs is not in any key.

A candidate key is the left hand side of a derived FD on which all attributes depend.

例子:

R(ABCDE), (A->C, AB->D, D->B)

E 不会出现在任何 FD 中。E 在所有键中。A 仅出现在左侧。A 在所有键中。C 只出现在右手边。C 不在任何键中。

键将包括以下属性:

AE

使用来自 AE 的每个可能的键查找依赖项:

A->C
A->AC    (X->XY axiom)
E->E
AE->ACE  (from previous 2 FDs)

并非所有属性都在右侧,因此 AE 不是键,只是所有键的一部分。

开始将 AE 与 BCD 结合起来,看看会发生什么:

ADE->ABCDE   (as D->B, and by X->XY axiom D->BD. This is a key, by last rule of thumb)
ACE->ACE
ABE->ABCDE (AE->ACE, B->BD from axioms, this is a key)
ABCE->ABCDE, ABDE->ABCDE (superkeys of ABE, so ignore)
ACDE->ABDCE (superkey of ADE)

假设我做对了,那么 ABE 和 ADE 是关键。

于 2015-04-02T03:16:32.423 回答