【问题标题】:4NF decomposition with MVD使用 MVD 进行 4NF 分解
【发布时间】:2018-02-23 05:47:01
【问题描述】:

考虑具有属性 A 和 B 的表

 A                B



222              Jack

222              Jill

222              Joe

这里 A ->-> B 成立。我的书说上面的关系是4NF。

我不明白 4NF 中的关系如何在 4NF 中,如果存在形式为 A->->B 的 MVD,A 应该是该关系的超级键。

A 是如何成为超级键的?对于相同的 A (222) 值,我们有多个 B 值。

【问题讨论】:

  • 如果A 是一个键列并且B 不包含给定键的重复名称,那么这个表必须是4NF,因为不存在非平凡的多值依赖。我认为您需要第三列来说明打破 4NF。
  • @TimBiegeleisen 你能告诉我 A->-> B 是怎么回事吗?
  • 规范化(包括 4NF)是关于消除表中的冗余。如果A 是一个键,并且没有重复的(A, B) 关系,则该表在4NF 中。正如我所提到的,因为它属于 4NF,所以我必须添加第三列来显示什么不是 4NF。
  • 好的。维基百科说,如果 A 和 B 的联合为我们提供了整个关系的属性,那么它就是微不足道的 MVD。现在,如果您在餐厅的维基百科中看到示例,我们可以通过 union property 组合两个 MVD。所以新的 MVD 将是餐厅 -> 披萨外卖(披萨和外卖是两个属性)。现在即使在这里联合是整个关系,但维基百科说它不在 4NF 中。为什么会这样? en.m.wikipedia.org/wiki/Fourth_normal_form
  • @TimBiegeleisen 我理解了维基百科的整篇文章。但关键是他们没有考虑 MVD 的联合属性,而是分别对待每个 MVD。你看我之前的评论了吗?

标签: database database-normalization


【解决方案1】:

这种关系甚至不在 2NF 中

我的书说上面的关系是4NF

你为什么这么说?你的书是什么?该关系值具有唯一的 CK {B} 但满足 FD {} -> A 是非主属性对 CK 的部分依赖,因此它甚至不在 2NF 中。

你的暗示是错误的

对于处于 4NF 中的关系,如果存在 A->->B 形式的 MVD,则 A 应该是该关系的超级键

让我们简化这个复杂的措辞:如果一个关系在 4NF 中,那么如果 MVD(多值依赖){A} ->> {B} 成立,那么 {A} 就是一个超键。

来自Wikipedia

一个表在 4NF 中当且仅当,对于它的每一个非平凡的多值依赖 X ↠ Y,X 是一个超键

这告诉我们,如果一个关系在 4NF 中,那么如果 非平凡 MVD X ->> Y 成立,那么 X 是一个超键。

所以它没有告诉我们您声称的内容。您遗漏了“非平凡”。

但由于关系不在 4NF 中,因此内部含义并不重要。

MVD 是微不足道的,所以如果我们 4NF,那么内部含义将不适用

在您的关系中 {A} ->> {B} 成立,但它是微不足道的,因为 {A} U {B} 是所有属性的集合,并且

一个平凡的多值依赖 X ↠ Y 是其中一个 Y 是 X 的一个子集,或者 X 和 Y 一起构成了关系的整个属性集

因此,如果关系在 4NF 中,则 {A} 不必是超级键。

(MVD对应的(平凡)(二进制)JD(连接依赖)是*{{A},{A,B}},即关系是它在{A}和{A上的投影的连接, B}。)

其他违反 4NF 的 MVD 持有

定义告诉我们,4NF 中的关系要求如果 非平凡 MVD X ->> Y 成立,则 X 是超键。

如果您列出与该关系相关的所有 MVD,那么您会发现它们都是微不足道的,除了 {} ->> {A} 和 {} ->> {B}。碰巧这两个都成立。 (它们表达了相同的条件,即相同的 JD 成立,即关系是特定的连接。)但是 {} 不是超键。所以违反了4NF。

(就 JD 而言:唯一可能的非平凡二进制 JD 是 *{{A}, {B}},它恰好成立。但这不是 CK 所暗示的,即它不必当 CK 集为 {{B}} 时成立,即(根据 Fagin 的隶属度算法)其两个元素的连接不在包含两者的 CK 的公共列集上。因此该关系不在 4NF 中。)

但是我们已经知道违反了 4NF,因为我们知道违反了 2NF。

【讨论】:

  • {} -> B 如何有效?什么都没有或空集怎么能决定 B?
  • 我没有说 {} -> B。我说的是 {} ->> {B}。将 {} 和 {B} 插入到 MVD 何时成立的定义中。例如,关系是 {A} U {} join {} U {B}。我确实说过 {} -> A. 将 {} & A 插入到 FD(确定属性)何时成立的定义中。 (不幸的是,许多教科书和当然网页都有错误和草率的定义。)
  • PS 我在this answer to a question by you 中使用 {} 寻址 FD。 (我还写了关于正确推理和使用术语、定义和定理的文章。)
  • 对于downvoters:请先说出您认为错误的地方,然后阅读我对值与变量的 NFs 问题的最后评论。
猜你喜欢
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多