我有一个关系和函数依赖关系如下:
R = (A, B, C, D, E)
F = (A -> B C,
B C -> D,
A C -> D E)
现在我将使用这个视频计算最小/规范覆盖。
因此,首先我检查我的 FD 中是否有单例右侧。不,我没有,所以我必须把它们分开。即A -> B C
分为A -> B
和A -> C
。同样对于A C -> D E
。
所以现在我有...
F = (A -> B,
A -> C,
B C -> D,
A C -> D,
A C -> E)
其次,我检查是否有任何 FD 具有超过 1 个 LHS 属性。如果是这样,我看看是否可以通过检查它们的闭包是否包含另一个元素来消除它们中的任何一个。如果是这样,那么我们不需要其他元素。
所以对于B C -> D
, B closure
isB
和C closure
is C
。没有一个闭包包含 other 属性,所以我们不能消除B C -> D
。
所以现在我们移动到A C -> D
. A closure
就是ABCDE
,我们可以瞬间看到那个A
的闭包C
。C
和无关属性也是如此 ,并且可以删除,因此我们的新 FD 集是...
F = (A -> B,
A -> C,
B C -> D,
A -> D,
A C -> E)
所以现在我们转到最后一个:A C -> E
,同样,A
的闭包是ABCDE
,它包含C
所以我们可以C
从 FD 中消除 。所以我们的 FD 集现在是:
F = (A -> B,
A -> C,
B C -> D,
A -> D,
A -> E)
最后,我们检查是否有任何冗余 FD。我们通过遍历每个 FD 来做到这一点,将其覆盖,并查看其 LHS 的关闭是否包含其 RHS。
因此A -> B
,我们将其掩盖并计算A closure
,即ACDE
不包含B
因此我们无法消除A -> B
。我们对所有 FD 执行此操作,我们最终看到我们只能消除A -> D
,因为当我们掩盖A -> D
并计算A closure
它 containsD
时,我们不需要A -> D
所以现在我们的新 FD 集是:
F = (A -> B,
A -> C,
B C -> D,
A -> E)
现在我的问题是:
我的最后一组 FD 是正确的最小/规范封面吗?能不能换成别的写法?此外,在视频中,它说对于给定的一组功能依赖关系可以存在多个规范封面。我怎样才能发现这些?
感谢您的时间。