数据库无关属性和分解

时间:2011-07-26 02:38:56

标签: database attributes functional-dependencies decomposition

我对外来属性的概念以及对3NF的适当分解感到困惑。

例如,我有以下关系:

r(A,B,C,D,E,F)

F = FD's
F = {A-> BCD, BC-> DE, B->D, D->A}

我想计算规范封面,以便使用算法将其分解为3NF。所以我必须从FD中删除无关的属性。

我计算了A+. B+, C+, D+ (A+ = ABCDE, B+ = BD, C+ = C, D+ = AD) 我开始尝试寻找无关的属性。首先,我查看了β

中的属性

我试图找出D是否与

无关
  

BC - > DE

并且使用BC + I发现D是无关的(因为BC +包含属性D)。 所以现在我的FD改为BC -> DE to BC -> E 现在我试图计算α的无关属性。

我查看了FD BC -> DE中B或C是否无关(计算B +和C +导致我既没有B也没有C是无关的,因为它们都没有包含E)。

我还看了A - >中的外来因素。 BCD并发现B和C都是无关的(因为A +包含所有属性)。所以我留下了以下内容:

A -> D
BC -> E
B -> D
D -> A

对于这个非常长的问题,我很抱歉,我只想写下我的所作所为。

我很困惑,如果这是正确的,或者我是否正确地这样做。我试图关注一些笔记和一些在线参考文献,但如果有人能指出我是否做得对,如果没有尝试并在某种程度上解释如何正确地找到无关的属性和分解,那将是很好的。

1 个答案:

答案 0 :(得分:1)

你的一些封闭是错误的(B + = ABCDE,例如由于B-> D,D-> A,A-> BCD,BC-> DE)。

B和C在A-> BCD中不是外来的。的确,关于A的关闭

  

{A - > D,BC - > E,B - > D,D - > A}

是AD而不是ABCDE。

让我们回到你上一步:

  

{A-> BCD,BC-> E,B-> D,D-> A}

由于A-> B和B-> D,因此D在A-> BCD中是无关的。我们从A->中消除D; BCD并获得:

  

{A-> BC,BC-> E,B-> D,D-> A}

C在BC-> E中是无关紧要的。实际上,B-> D,D-> A,A->公元前。因此,

  

{A-> BC,B-> E,B-> D,D-> A}

接下来,我们将所有fds与相同的左侧组合:

  

{A-> BC,B-> DE,D-> A}

这组函数依赖项不包含冗余依赖项或无关属性,因此是一个规范的封面。