Database 函数依赖的规范覆盖
我正在学习或试图学习DBMS,在理解如何计算规范封面时遇到了各种各样的问题:Database 函数依赖的规范覆盖,database,functional-dependencies,Database,Functional Dependencies,我正在学习或试图学习DBMS,在理解如何计算规范封面时遇到了各种各样的问题: A -> BCD BC -> DE B -> D D -> A 我只能找到一个如何计算其中一个的例子,但这并不能帮助我理解如何处理BC和B依赖关系。这是我提出的,这肯定是错误的,但是任何帮助我分解这一点以便我能够理解的方法都比实际答案更有价值 A -> BCD BC -> DE D -> A 这里有一种方法可以查看这两个FD BC->DE,和 B->D 从BC->DE导
A -> BCD
BC -> DE
B -> D
D -> A
我只能找到一个如何计算其中一个的例子,但这并不能帮助我理解如何处理BC和B依赖关系。这是我提出的,这肯定是错误的,但是任何帮助我分解这一点以便我能够理解的方法都比实际答案更有价值
A -> BCD
BC -> DE
D -> A
这里有一种方法可以查看这两个FD
- BC->DE,和
- B->D
BC->E
B->D
这个BC->D是可归约的,因为在BC->D中,左边C是一个无关的属性。我们可以使用无关属性的公式来检查这一点。我认为正确的答案是:
a->bc
bc->e
b->d
d->a
要查看是否可以删除关系,假设我们正在考虑关系R1=a->b
计算F+(a),而不考虑R1关系本身。如果你仍然可以以某种方式到达b(b在F+(a))那么你可以移除R1,给定:
F = {
A -> BCD,
BC -> DE,
B -> D,
D -> A
}
D
是A->BCD
中的一个无关属性,
因为A+=ABCDE
和D
属于A+
因此:
Fc = {
A -> BC,
BC -> DE,
B -> D,
D -> A
}
现在,C
是BC->DE
中的一个无关属性,
因为B+=ABCDE
和DE
属于B+
因此:
Fc = {
A -> BC,
B -> DE,
B -> D,
D -> A
}
Fc = {
A -> BC,
B -> E,
B -> D,
D -> A
}
现在D
是B->DE
中的一个无关属性,
因为B+=ABCDE
和D
属于B+
因此:
Fc = {
A -> BC,
B -> DE,
B -> D,
D -> A
}
Fc = {
A -> BC,
B -> E,
B -> D,
D -> A
}
使用联合规则,我们得到:
Fc = {
A -> BC,
B -> DE,
D -> A
}
现在已经没有其他无关的属性了。
因此,这是
F
的最后一个经典封面。你的教科书有算法吗?没有,它只是给出了一个类似于本网站的例子(见第5页):这是教科书中的同一个例子,也是我唯一能找到的。我基本上理解它,但它并不能真正解释我上面的问题。最后一步的理由是什么?BC->D的LHS是可还原的。非正式地说,BC->D没有告诉我们任何我们在B->D中还不知道的东西。正式地说,从B->D开始,我们知道BC->DC(扩充)和BC->D(分解)。