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

Is this in BCNF, 3NF or neither?

我的疑问是对于一组给定的函数依赖 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是质数属性,即候选键的属性,依赖B→E不违反3NF,所以关系是3NF。再次给出 3NF 的定义之一:“对于 F+ 中的所有非平凡依赖 X → A,则 X 是超键或 A 是素数属性”,是由于一个定理说这个条件等同于检查,“对于每个函数依赖 X → A1,...,An 在 F 中,对于 {1..n} 中的每个 i,Ai 属于 X,或者 X 是一个超级键,或者 Ai 是素数”。这由 F.

的两个依赖项满足

当你claim/show其中有一个关系时,你需要使用 NF 的定义。

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

你反对BCNF的观点是对的。您使用的定义是 FD 的所有决定因素(功能依赖性)都不在超级键中。你找到了一个反例 FD B → E.

如果这是关于 BCNF 与 3NF 的非此即彼的问题,您可以到此为止。

in the first functional dependency the left side is a candidate key and in B -> E, E is contained in a candidate key

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

both of the following conditions hold:

  • The relation is in 2NF
  • Every non-prime attribute is non-transitively dependent on every [candidate] key

for each of its functional dependencies X → A, at least one of the following conditions holds:

  • X contains A
  • X is a superkey
  • each attribute in A-X is prime

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

在实践中,通过应用 3NF 算法可以更容易地显示模式在 3NF 中。