假设我有以下关系
C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B
我书中给出的规范封面是C -> AB, CE -> F, D -> E
但是Canonical cover 也可以是C - AB, D - EF?
一个关系我们可以有两个不同的canonical cover 吗?
假设我有以下关系
C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B
我书中给出的规范封面是C -> AB, CE -> F, D -> E
但是Canonical cover 也可以是C - AB, D - EF?
一个关系我们可以有两个不同的canonical cover 吗?
但Canonical封面也可以
C - AB
,D - EF
?
不,它不能成为您的一组功能依赖项 (FD) 的规范封面。F 的规范覆盖是等效于 F的“最小”函数依赖集,没有冗余依赖或依赖的冗余部分。
您建议的规范封面不等同于F
. 例如CAE->FB
,您建议的规范覆盖没有完全覆盖功能依赖,因此它不是规范覆盖。
另一方面,您书中给出的C -> AB, CE -> F, D -> E
封面是规范封面,并且是这套 FD唯一可能的规范封面。
我们可以为一种关系提供两种不同的规范封面吗?
是的,我们可以。为了找到规范封面,我们这样做 -
由于上述第三步,我们可以为一种关系提供不同的规范覆盖。我将用一个例子来解释这一点。
给定FD为:
X→YZ
Y→XZ
Z→XY
首先确保单例 RHS。所以我们有:
第二没有多余的LHS。已经很满意了。
第三删除任何多余的FD。现在我们可以删除 (2)、(3) 和 (6) 作为冗余依赖项,并将最小覆盖集设置为:
1:
X→Y,
Y→Z,
Z→X
或者我们可以删除 (1)、(4) 和 (5) 作为冗余依赖项,并将最小覆盖集设置为:
2:
Z→Y,
Y→X,
X→Z
因此,在这种情况下,对于同一关系,我们有两个规范覆盖。
是的,一组功能依赖(不是关系)可以有多个规范覆盖。Date 在An Introduction to Database Systems,第 7 版,p346f中对练习 10.12 的答案进行了逐步推导。
Date 不使用术语canonical cover。他或多或少地使用了不可约的覆盖。