哪个范式是满足函数依赖关系(DBMS)的最高范式?


让我们考虑依赖关系 F= {AB->CDEF, AF->ED, F->B},以下哪一项是表 R=ABCDEF 可以满足的最高范式。

从以下选项中选择一个 -

  • 不满足任何范式。
  • Boyce-Codd 范式
  • 第一范式
  • 第二范式
  • 第三范式

给定 F 的函数依赖关系如下 -

AB ---> CDEF

AF ---> ED

F ---> B

现在在 F 的函数依赖关系的 RHS(右侧),属性 B、C、D、E、F 都存在,但属性 A 缺失。因此,属性 A 必须是超键的一部分。

我们需要找到 A 的闭包 (A+),

A+ = 仅 A,因此单独的属性 A 不能成为键。因此,我们需要将 A 与 F 的其他属性组合,然后找到 F 的候选键。

查找 F 的候选键

AB+ = ABCDEF

AC+ = AC

AD+ = AD

AE+ = AE

AF+ = AFBCDE

现在由于 (AC、AD、AE) 的闭包没有覆盖 F 的所有属性。因此,我们还需要组合 AC、AD、AE 来检查它们的组合是否成为 F 的候选键。

所以 ACD+ = ACD

ACE+ = ACE

ADE+ = ADE

ACDE+ = ACDE

因此,最终,我们确认 AB 和 AF 是 F 的唯一候选键,因为它们的闭包覆盖了 F 的所有属性。

因此,F 的主属性是 A、B、F,F 的非主属性是 C、D、E。

检查最高范式 (NF)

我们将从最高的范式开始,其中 BCNF 是最高的范式,如果 F 处于 BCNF 范式,那么它也将处于 1NF、2NF 和 3NF。

检查 BCNF

F 的所有函数依赖关系 X ---> Y,其中所有 X 必须是超键。

在 F 的所有函数依赖关系中,只有 AF 和 AB 是超键,但 F 不是超键。

(AB ---> CDE, AF ---> ED, F ---> B)

因此,F 不在 BCNF 中,因为 (X ---> Y) 的所有 X 都不是超键。

检查 3NF

对于 F 处于 3NF,不应该出现非主属性的传递函数依赖,或者说 F 中的任何非主属性都不应该导出到其他非主属性。

并且在 F (X --> Y) 中,函数依赖关系的所有 X 都是主属性,因为 AF、AB 是超键,并且 F 是主属性。因此,没有传递依赖关系的出现,因此它在 3NF 中。

并且 F 也在 2NF 中,因为没有部分依赖关系,即候选键的任何部分都不会导出到任何非主属性。

如果 F 在 3NF 中,那么它也在 2NF 和 1NF 中。因为 3NF 是其中最高的范式。

结论

表 R(A,B,C,D,E) 满足 3NF。

更新于: 2021年7月6日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告