功能依赖lhs具有素数和非素数属性

时间:2017-05-11 06:49:46

标签: normalization database-normalization functional-dependencies bcnf

考虑表动物园(a,b,c,d,e,f,g)和FD的

a→b,d,e,g
c,d→f
f→c
e,g→d

对其执行规范化。

候选键是{a,c} {a,f},所以素数是{a,c,f}

a→b,d,e,g违反了<2> 2NF

然后新表是t1(a,b,d,e,g),zoo(a,c,f)

eN g违反了3NF

然后新表是t2(e,g,d),t1(a,b,e,g),zoo(a,c,f)

BCNF违规是素数 - &gt;但是,c和f是素数,但d是非素数,所以lhs既有素数也有非素数,而rhs是素数。

然后我的问题是如何处理FD c,d→f?

1 个答案:

答案 0 :(得分:1)

TL; DR 您似乎无法理解规范化。你的最后一句话没有意义。

  1. 对给定NF的归一化不会经历较低的NF。 (当然,你可能被告知要正常化为2NF然后3NF然后BCNF。)

  2. 对给定NF的归一化涉及遵循已被证明可以帮助您的算法。最好&#34;保留FD&#34;。找到算法。

  3. 分解后,你必须确定FD&amp;每个新组件的CK。还要注意持有的FD是给定的,加上遵循阿姆斯特朗公理的那些。

  4. &#34; BCNF违规是素数 - &gt;素......&#34;是难以理解的。细节很重要。查找教科书定义。您没有正确说明/使用涉及3NF和主要属性的BCNF定义。

  5. 查找有关标准化的学术教科书/演示文稿/课程参考。遵循他们的定义&amp;算法(一个或多个)。

    分解t2(e,g,d),t1(a,b,e,g),动物园(a,c,f)为3NF。 (但似乎你没有遵循正确的规范化程序。)对于t3,CK(候选键)集合为{{e,g}},对于t1和{{c,f}}为{{a}}为动物园。这是BCNF,因为每个表中保存的每个非平凡FD都不在超级密钥中。 (你的BCNF理由的一些问题是你需要解决所有3个表格而且没有表格有c,f&amp; d。)FD c,d→f不会在任何表格中保留,因为没有表格全部三个那些属性,所以你不需要用它做任何事情。但是,BCNF可能会或可能不会分解,其中原始数据中的每个FD都存在,并且可能每个可能的分解都有一些不能保留的FD。但是你需要学习如何规范化。