我对第四种正常形式(4NF)有疑问。 我有点困惑,因为我看到了一些定义,其中一些定义彼此不同。
我看到的最简单的定义是:[翻译自德语维基百科] - English Wikipedia:
如果表格是Boyce-Codd普通形式(BCNF)并且只包含普通的多值依赖项(MVD),则表格为4NF。
使用维基百科的MVD定义 (https://en.wikipedia.org/wiki/Multivalued_dependency)
根据维基百科,一个微不足道的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。
我的假设是正确的还是我一路上犯了错误?
答案 0 :(得分:1)
如果表格是Boyce-Codd普通形式且仅包含普通的多值依赖项(MVD),则表格为4NF。
这仅使用""糟糕。此外,它使用"包含"在初学者的背景下可能含糊不清。它似乎试图说:
然而,这是错误的。
如果FD X→Y成立则MVDX↠Y成立。 (人们常说FD是MVD,但这是不正确的.FD和MVD是带箭头的表达式。但FD描述了与MVD相同的条件。)非正式地,当MVD表示所有的一些子行值时因为Y必须与X的所有子行值一起出现,所有Y子行的集合只有一个元素。
这些方面的正确描述是:
(不要将维基百科作为技术参考,仅作为补充。特别是关键模型的大多数条目都有错误和混淆。)
(请参阅我的答案4NF和MVD。)