0

我在将其分解为 BCNF 时遇到问题:

Relation: R[A E P M N S T L]

FD's:
A -> EM, 
A -> L, 
M -> ST,
M -> N,
S -> T, 
E -> P, 
P -> E, 
L -> A

这是我过去的一次考试,我真的不知道如何解决它。

我是在 Coursera 上由编写我们课程文献的女士 (Jennifer Widom) 了解到的:

-------------- BCNF ALGORITHM ------------
1. Take a FD that violates BCNF.
2. Decompose the FD to two other relations
3. First relation: The whole FD
4. Second relation: The rest of the Relation + the left hand side of the chosen FD 
5. Iterate until all the new relations have key on its left hand side
-------------- BCNF ALGORITHM ------------

And I also tried another one that is basically the same, but written in a different way:
X->Y: R1({X}+), R2(R - {X}+ ; X) (Relation minus {X}+ (XY in this case), plus X.

到目前为止,我在这里:显然,A 是关键,所以它的 FD 已经在 BCNF 中。问题是,我可以擦除任何多余的 FD 吗?如果是这样,拇指规则是什么?

R1(MST) <-- BCNF.
R2(A E P M N L)
R3()

而且不知道该去哪里。

4

1 回答 1

0
1. Take a FD that violates BCNF.
5. Iterate until all the new relations have key on its left hand side

提到 BCNF 违规的第 1 步只有在这意味着您应该识别每个原始和生成关系的密钥和非密钥隐含 FD 时才有意义。此外,步骤 5 的终止不能仅在左侧有键时终止,因为可能存在非键确定器。显然,当所有关系都在 BCNF 中时,停止是必要且足够的。算法的特定完整描述可以描述等效的重组和/或测试,而无需明确提及 BCNF。

如果 A 是键,那么 L 也是键,因为 L->A。

MSTNAELP keys A and L plus M->ST, S->T, E<->P

这些 FD 来自非密钥。你选择了 M->ST。我们得到:

MST key M plus S->T
MNAELP keys A and L plus E<->P

两者都有不是来自键的确定器,因此不在 BCNF 中。选择 S->T 和 E->P。我们得到:

ST key S in BCNF
SM key M in BCNF
EP keys P and E in BCNF
EMNAL keys A and L in BCNF
于 2014-05-22T04:25:44.760 回答