BCNF分解?
BCNF Decomposition?
给定关系 R(A,B,C,D,E) 和 FDs = {A->BC, CD->E, B- >D, E->A}
将 R 转换为 BCNF 时:
ABCDE -> BD & ABCE会先分解
BD 在 BCNF
关于 ABCE:
Opinion 1: ABCE has FDs: A->BCE, E->ABC, BC->AE
Therefore its already in BCNF
Opinion 2 ABCE has FDs: A->BC, E->ABC
Therefore needs to be decomposed into ABC & AE
我认为第一个应该是正确的,因为第二个我们假设 A->E 和 BC->E 是不可能的,因为 D 不是关系的属性之一。但我不确定。
请告诉ABCE A->E和BC->E是否成立?
您已经正确识别了问题所围绕的问题。也就是说,"BC->AE" 是否确实适用于 ABCE。要将其应用于 ABCE,需要证明它适用于原始 ABCDE。你能证明吗? (提示:从原来的 B->D 开始,然后用普通的 C->C 扩充以获得 BC->CD)。
下面是重要的讨论。请完全坐下来。
现在退后一步,看看 schema/design 在第一次分解时发生了什么。第一次分解将 BD 单独分离出来 table/schema。这使得现有的 FD "CD->E" 无法在任何剩余的 tables/schemas 中表达(在 ABCE 中因为那个没有 D,在 BD 中因为那个没有 ACE)。但是这个 FD 表达的业务规则仍然适用。这意味着在替换设计中(BD被挑出来的那个),有一个额外的约束要定义在两个table之间,这个约束必须对两者的组合有相同的效果tables(他们的 JOIN,即),因为 FD 在原始的单一 table 设计上。也就是说,该约束必须在两个 table 的任何 JOIN 中强制执行,绝不会出现相同 CD 值组合与不同 (>1) E 值一起出现的情况。
没有附加约束的替换设计永远不会完全等同于包含 FD 的原始设计。但是因为这两个设计确实应该是等价的,你应该被允许假设这个额外的约束确实存在(并且相应的 FD 仍然 "applies to the JOIN")。请注意,我个人从未看到或听到过明确说明。归一化理论的处理往往会忽略额外的约束,即使它们等同于早先给出的 FD。
如果你不能做出那个假设,并且你被迫只看剩余的 FDs 对他们适用的个人 table 意味着什么,那么你就没有办法证明 BC ->AE 持有您的 ABCE table/schema。您将被迫得出选项 2 是正确答案的结论。
(这里是重要的结论。)唉,周围也有很多糟糕的教学,而且很难确定所有归一化理论课程在这些问题上都采取相同的立场。所以虽然我的 conviction/opinion 是你是对的,但不幸的是我的答案必须是 "it depends on how well your teacher understands normalization theory him/herself".
给定关系 R(A,B,C,D,E) 和 FDs = {A->BC, CD->E, B- >D, E->A}
将 R 转换为 BCNF 时:
ABCDE -> BD & ABCE会先分解
BD 在 BCNF
关于 ABCE:
Opinion 1: ABCE has FDs: A->BCE, E->ABC, BC->AE
Therefore its already in BCNFOpinion 2 ABCE has FDs: A->BC, E->ABC
Therefore needs to be decomposed into ABC & AE
我认为第一个应该是正确的,因为第二个我们假设 A->E 和 BC->E 是不可能的,因为 D 不是关系的属性之一。但我不确定。
请告诉ABCE A->E和BC->E是否成立?
您已经正确识别了问题所围绕的问题。也就是说,"BC->AE" 是否确实适用于 ABCE。要将其应用于 ABCE,需要证明它适用于原始 ABCDE。你能证明吗? (提示:从原来的 B->D 开始,然后用普通的 C->C 扩充以获得 BC->CD)。
下面是重要的讨论。请完全坐下来。
现在退后一步,看看 schema/design 在第一次分解时发生了什么。第一次分解将 BD 单独分离出来 table/schema。这使得现有的 FD "CD->E" 无法在任何剩余的 tables/schemas 中表达(在 ABCE 中因为那个没有 D,在 BD 中因为那个没有 ACE)。但是这个 FD 表达的业务规则仍然适用。这意味着在替换设计中(BD被挑出来的那个),有一个额外的约束要定义在两个table之间,这个约束必须对两者的组合有相同的效果tables(他们的 JOIN,即),因为 FD 在原始的单一 table 设计上。也就是说,该约束必须在两个 table 的任何 JOIN 中强制执行,绝不会出现相同 CD 值组合与不同 (>1) E 值一起出现的情况。
没有附加约束的替换设计永远不会完全等同于包含 FD 的原始设计。但是因为这两个设计确实应该是等价的,你应该被允许假设这个额外的约束确实存在(并且相应的 FD 仍然 "applies to the JOIN")。请注意,我个人从未看到或听到过明确说明。归一化理论的处理往往会忽略额外的约束,即使它们等同于早先给出的 FD。
如果你不能做出那个假设,并且你被迫只看剩余的 FDs 对他们适用的个人 table 意味着什么,那么你就没有办法证明 BC ->AE 持有您的 ABCE table/schema。您将被迫得出选项 2 是正确答案的结论。
(这里是重要的结论。)唉,周围也有很多糟糕的教学,而且很难确定所有归一化理论课程在这些问题上都采取相同的立场。所以虽然我的 conviction/opinion 是你是对的,但不幸的是我的答案必须是 "it depends on how well your teacher understands normalization theory him/herself".