对于任何关系,规范封面总是唯一的吗?

Is canonical cover always unique for any relationship?

假设我有如下关系

C -> B
CB -> AC
CAE -> FB
D -> E
CA -> B

我书中给出的规范封面是C -> AB, CE -> F, D -> E

但是 Canonical 封面也可以是 C - AB, D - EF? 我们可以为一个关系设置两个不同的 canonical 封面吗?

是的,一组函数依赖(不是关系)可以有多个规范覆盖。 Date 在 数据库系统简介,第 7 版,p346f 中练习 10.12 的答案中给出了逐步推导。

Date 没有使用术语 规范封面。他或多或少地使用了不可约覆盖

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。所以我们有:

  1. X→Y
  2. X→Z
  3. Y→X
  4. Y→Z
  5. Z→X
  6. Z→Y

第二 没有多余的 LHS。已经满意了

第三删除所有多余的FD。现在我们可以删除 (2)、(3) 和 (6) 作为冗余依赖项并将最小覆盖设置为:

1:

X→Y,
Y→Z,
Z→X

或者我们可以删除 (1)、(4) 和 (5) 作为冗余依赖项并将最小覆盖集设置为:

2:

Z→Y,
Y→X,
X→Z

因此,在这种情况下,我们对同一关系有两个规范覆盖。