这是在BCNF,3NF中还是两者都不是?



我的疑问是给定的功能依赖关系集 F = { AE -> BCD, B -> E }.这是在BCNF还是3NF?这是我最近做的一个测试中的一个问题,我会说它是3NF,但我的老师说它既不是3NF也不是BCNF。(我认为这是一个错误)。

我已经获得了候选键AE和AB,并且在第一个功能依赖项中,左侧是候选键,而在B -> E中,E包含在候选键中,因此它在3NF中。

这是在BCNF,3NF中还是两者都不是?

假设关系的所有属性都是 A B C D 和 E,并且给出的唯一依赖关系是描述的两个 (F),那么您是正确的。由于(唯一)候选键是正确的 A E 和 A B,并且由于函数依赖关系 B → E 具有不是超键的行列式,因此关系不在 BCNF 中。给定 BNCF 的定义之一:"对于 F+的所有非平凡依赖关系 X → Y,X 是一个超键",有一个定理表明,一个必要和充分的条件是作为超键的属性对 F 中的所有依赖都成立。

另一方面,由于 E 是素属性,即候选键的属性,因此 E →依赖关系不违反 3NF,因此关系在 3NF 中。同样,给定3NF的定义之一:"对于F+中的所有非平凡依赖关系X→A,则X是超键或A是素属性",这是由于一个定理说这个条件等价于检查,"对于每个功能依赖X→F中的1,...,An, 对于 {1..n} 中的每个 i,要么 A i 属于X,要么 X 是超键,要么 Ai是素数"。这被 F 的两个依赖关系所满足。

当您声明/显示关系在其中时,您需要使用 NF 的定义。

你实际上并没有说出所有属性是什么。我假设属性是 A 到 E.否则,CK(候选键)不是你所说的。

你反对BCNF的论点是对的。您正在使用以下定义:FD(功能依赖关系)的所有行列式都超出了超键。你找到了一个反例FD B→E。

如果这是一个关于BCNF与3NF的非此即彼的问题,你可以停在那里。

在第一个功能依赖关系中,左侧是候选键,在 B -> E 中,E 包含在候选键中

您没有证明该表满足以下任一定义的条件(来自维基百科,恰好是正确的),即表在 3NF 中当且仅当:

以下两个条件都成立:

  • 关系在 2NF 中
  • 每个
  • 非素数属性都非传递地依赖于每个 [候选] 键

对于其每个功能依赖项 X → A,至少满足以下条件之一:

  • X 包含
  • X 是一个超级键
  • A-X 中的每个属性都是素数

您似乎使用了定义 2(但没有这么说)。您显示 AE → BCD 的项目符号 2 保持。指出E在B→E中是素数似乎是表明E-B都是素数的一部分。但是你需要证明每个FD都满足一颗子弹。请注意,持有的 FD 比给定的 FD 多。阿姆斯特朗的公理告诉你所有的FD是什么。

在实践中,通过应用 3NF 算法可以更轻松地显示架构在 3NF 中。

相关内容

最新更新