假设我有如下关系
C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B
我书中给出的规范封面是 C -> AB, CE -> F, D -> E
但是 Canonical cover 也可以是 C - AB, D - EF?
我们可以为一个关系设置两个不同的 canonical cover 吗?
最佳答案
But Canonical cover can also be
C - AB
,D - EF
?
不,它不能是您的功能依赖项 (FD) 集合的规范覆盖。 F 的规范覆盖是泛函的“最小”集 依赖项等同于 F,没有冗余依赖项或依赖项的冗余部分。
您建议的规范封面不等同于 F
。例如,函数依赖性 CAE->FB
未完全包含在您建议的规范覆盖中,因此它不是规范覆盖。
另一方面,您的书中给出的 C -> AB, CE -> F, D -> E
是规范封面,唯一 规范封面这组 FD 是可能的。
Can we have two different canonical cover for one relationship?
是的我们可以。为了找到规范的封面,我们这样做 -
- 首先确保单例右侧(RHS)
- 其次删除任何无关的左侧 (LHS) 属性
- 第三删除任何多余的功能依赖
由于上面的第三步,我们可以对一种关系有不同的规范覆盖。我将用一个例子来解释这一点。
给定 FD 为:
X→YZ
Y→XZ
Z→XY
首先确保单例RHS。所以我们有:
- X→Y
- X→Z
- Y→X
- Y→Z
- Z→X
- Z→Y
第二 没有无关的 LHS。已经很满意了。
第三 删除任何多余的 FD。现在我们可以删除 (2)、(3) 和 (6) 作为冗余依赖项并将最小覆盖集设置为:
1:
X→Y,
Y→Z,
Z→X
或者我们可以删除 (1)、(4) 和 (5) 作为冗余依赖并将最小覆盖集设置为:
2:
Z→Y,
Y→X,
X→Z
因此,在这种情况下,我们有相同关系的两个规范覆盖。
关于database - 对于任何关系,规范封面总是唯一的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332781/