规范化中第四范式的定义

时间:2017-05-17 14:49:59

标签: database relational-database relation database-normalization

我对第四种正常形式(4NF)有疑问。 我有点困惑,因为我看到了一些定义,其中一些定义彼此不同。

我看到的最简单的定义是:[翻译自德语维基百科] - English Wikipedia

  

如果表格是Boyce-Codd普通形式(BCNF)并且只包含普通的多值依赖项(MVD),则表格为4NF。

使用维基百科的MVD定义 (https://en.wikipedia.org/wiki/Multivalued_dependency

MVD

根据维基百科,一个微不足道的MVP:

  

多值依赖性X - >>如果Y是X的子集,则Y是微不足道的   如果X∪Y是关系的整个属性集。

使用此定义,下表不应位于4NF中:

CourseNr Book     Lecturer
======== ====     ========
1        Math-A   Prof. Smith
1        Math-B   Prof. Bob
1        Math-A   Prof. Bob
1        Math-B   Prof. Smith

这几乎是维基百科的定义。 我现在的问题是: 如果我从此表中删除最后一行:

CourseNr Book     Lecturer
======== ====     ========
1        Math-A   Prof. Smith
1        Math-B   Prof. Bob
1        Math-A   Prof. Bob

如果此表现在在4NF? 我会说是的,因为它不符合定义 多值依赖,因此表格不包含 一个微不足道的MVD,因此应该在4NF。

我的假设是正确的还是我一路上犯了错误?

1 个答案:

答案 0 :(得分:1)

  

如果表格是Boyce-Codd普通形式且仅包含普通的多值依赖项(MVD),则表格为4NF。

这仅使用""糟糕。此外,它使用"包含"在初学者的背景下可能含糊不清。它似乎试图说:

  • 如果表格在BCNF中,则表格为4NF,并且它满足的唯一MVD是微不足道的。

然而,这是错误的。

如果FD X→Y成立则MVDX↠Y成立。 (人们常说FD是MVD,但这是不正确的.FD和MVD是带箭头的表达式。但FD描述了与MVD相同的条件。)非正式地,当MVD表示所有的一些子行值时因为Y必须与X的所有子行值一起出现,所有Y子行的集合只有一个元素。

这些方面的正确描述是:

  • 如果表格在BCNF中,则表格在4NF中,并且每个满足的MVD都是微不足道的或者对应于FD。
  • 如果表格在BCNF中,则表格在4NF中,并且每个MVD满足且不对应于FD是微不足道的。

(不要将维基百科作为技术参考,仅作为补充。特别是关键模型的大多数条目都有错误和混淆。)

(请参阅我的答案4NF和MVD。)