我正在学习或尝试了解 DBMS,并且在理解如何为此计算规范覆盖时遇到各种问题:
A -> BCD
BC -> DE
B -> D
D -> A
我只能找到 1 个示例来说明如何计算其中之一,它并不能帮助我理解如何处理 BC 和 B 依赖项。这就是我想出的,这肯定是错误的,但是任何有助于我理解的分解都会比实际答案更有价值。
A -> BCD
BC -> DE
D -> A
我正在学习或尝试了解 DBMS,并且在理解如何为此计算规范覆盖时遇到各种问题:
A -> BCD
BC -> DE
B -> D
D -> A
我只能找到 1 个示例来说明如何计算其中之一,它并不能帮助我理解如何处理 BC 和 B 依赖项。这就是我想出的,这肯定是错误的,但是任何有助于我理解的分解都会比实际答案更有价值。
A -> BCD
BC -> DE
D -> A
这是查看两个 FD 的一种方法
从 BC->DE,导出 BC->D 和 BC->E(分解)。
BC->D
BC->E
B->D
观察到 BC->D 的 LHS 是可约的,因为 B->D。这将顶部的两个 FD 减少到
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
}
NowC
是 , 中的一个无关属性BC -> DE
,因为B+ = ABCDE
和DE
属于B+
因此:
Fc = {
A -> BC,
B -> DE,
B -> D,
D -> A
}
NowD
是 , 中的一个无关属性B -> DE
,因为B+ = ABCDE
和D
属于B+
因此:
Fc = {
A -> BC,
B -> E,
B -> D,
D -> A
}
使用联合规则,我们得到:
Fc = {
A -> BC,
B -> DE,
D -> A
}
现在没有更多无关的属性了。因此,这是 的最终规范封面F
。