首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BCNF分解?

BCNF分解?
EN

Stack Overflow用户
提问于 2015-06-07 10:09:45
回答 1查看 1.1K关注 0票数 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有FDs: 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中是否存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-08 15:02:14

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

下面是重要的讨论。请完全置身事外。

现在后退一步,看看模式/设计在第一次分解时发生了什么。首先,分解将BD单独指定为它自己的表/模式。这使得现有的FD "CD->E“在任何剩余的表/模式中都是不可表达的(在ABCE中是因为没有D,在BD中是因为没有ACE)。但是这个FD所表达的业务规则仍然适用。这意味着在替换设计(有BD单独出来的设计)中,需要在两个表之间定义一个额外的约束,并且这个约束必须对两个表(它们的连接)的组合产生与FD对原始单表设计的相同的影响。也就是说,该约束必须强制执行,在两个表的任何联接中,永远不会出现相同的CD值组合与不同的(>1) E值同时出现的情况。

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

如果您不能做出这样的假设,并且您不得不只查看其余的FDs对于它们应用到的单个表的含义,那么您就无法证明BC->AE在ABCE表/模式中的地位。你将被迫得出结论,选择2是正确的答案。

(这里的重要结论。)唉,周围也有很多糟糕的教学,而且在这些问题上,所有的正常化理论课程都采取同样的立场,这一点远不能确定。因此,尽管我的信念/观点是正确的,但不幸的是,我的回答必须是“这取决于你的老师对正常化理论的理解程度”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30692318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档