1

给定关系R(A,B,C,D,E)FDs = {A->BC, CD->E, B->D, E->A}
将 R 转换为 BCNF:

ABCDE -> BD & ABCE 将是第一个分解
BD 在 BCNF

关于 ABCE:

意见 1: ABCE 有 FD:A->BCE,E->ABC,BC->AE
因此它已经在 BCNF

意见2 ABCE有FDs: A->BC, E->ABC
因此需要分解为ABC & AE

我相信第一个应该是正确的,因为在第二个中我们假设 A->E 和 BC->E 是不可能的,因为 D 不是关系的属性之一。但我不确定。
请告诉ABCE A->EBC->E是否成立?

4

1 回答 1

1

您已经正确地确定了问题所围绕的问题。也就是说,“BC->AE”是否确实适用于 ABCE。要适用于 ABCE,需要证明它适用于原始 ABCDE。你能证明吗?(提示:从原始的 B->D 开始,然后用平凡的 C->C 扩充以获得 BC->CD)。

现在进行重要的讨论。请完全静下心来。

现在退后一步,看看第一次分解时模式/设计发生了什么。第一次分解将 BD 挑出到它自己的表/模式中。这使得现有的 FD“CD->E”在任何剩余的表/模式中都无法表达(在 ABCE 中,因为那个没有 D,在 BD 中,因为那个没有 ACE)。但是这个 FD 所表达的业务规则仍然适用。这意味着在替换设计中(BD 单出来的那个),需要在两个表之间定义一个额外的约束,并且这个约束必须对两个表的组合(它们的 JOIN,也就是说)就像 FD 在最初的单表设计上所做的那样。也就是说,该约束必须在两个表的任何 JOIN 中强制执行该约束,

没有附加约束的替换设计永远不会完全等同于包含 FD 的原始设计。但是因为这两种设计确实应该是等价的,所以应该允许您假设这个额外的约束确实存在(并且相应的 FD 仍然“适用于 JOIN”)。请注意,我个人从未见过或听到过明确说明。归一化理论的处理往往会忽略额外的约束,即使它们等同于之前给出的 FD。

如果您不能做出这样的假设,并且您被迫只查看剩余的 FD 对它们适用的单个表的含义,那么您将无法证明 BC->AE 在您的 ABCE 表中成立/架构。您将被迫得出结论,选项 2 是正确答案。

(这里的重要结论。)唉,周围也有很多糟糕的教学,而且几乎不能肯定所有归一化理论课程在这些问题上都采取相同的立场。因此,尽管我的信念/意见是您是对的,但不幸的是,我的回答必须是“这取决于您的老师对标准化理论的理解程度他/她自己”。

于 2015-06-08T15:02:14.977 回答