Database 规范化中第四范式的定义

Database 规范化中第四范式的定义,database,relational-database,relation,database-normalization,Database,Relational Database,Relation,Database Normalization,我有一个关于第四范式(4NF)的问题。 我有点困惑,因为我看到了一些定义,其中一些定义彼此不同 我看到的最简单的定义是:[翻译自德语维基百科]: 如果一个表是Boyce–Codd范式(BCNF),并且只包含平凡的多值依赖项(MVD),那么它就是4NF 使用Wikipedia中的MVD定义 () 根据维基百科,一个微不足道的MVP是: 如果Y是X的子集,则多值依赖项X->>Y是微不足道的,或者 如果X∪ Y是关系的整个属性集 使用此定义,下表不应包含在4NF中: CourseNr Book

我有一个关于第四范式(4NF)的问题。 我有点困惑,因为我看到了一些定义,其中一些定义彼此不同

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

如果一个表是Boyce–Codd范式(BCNF),并且只包含平凡的多值依赖项(MVD),那么它就是4NF

使用Wikipedia中的MVD定义 ()

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

如果Y是X的子集,则多值依赖项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

我的假设是正确的还是我在这过程中犯了错误

如果一个表是Boyce–Codd范式,并且只包含平凡的多值依赖项(MVD),那么它就是4NF

这使用“仅”很差。此外,它对“contains”的使用在初学者的上下文中可能是模糊的。它似乎试图说:

  • 如果一个表在BCNF中,那么它就在4NF中,并且它满足的唯一MVD是微不足道的
然而,这是错误的

如果fdx→ Y持有MVD X↠ 是的。(人们常说FD是MVD,但这是不正确的。FD和MVD是带箭头的表达式。但FD声明的条件比MVD更严格。)非正式地说,虽然MVD说Y的所有某些子程序值必须与X的所有某些子程序值一起出现,但FD说所有Y子程序集只有一个元素

以下是正确的描述:

  • 如果一个表在BCNF中,并且它满足的每个MVD都是平凡的或对应于一个FD,那么它就在4NF中
  • 如果一个表在BCNF中,那么它在4NF中,并且它满足的每一个MVD都不对应于FD,那么它就是平凡的
(不要将维基百科用作技术参考,仅作为补充。尤其是关系模型的大多数条目都有错误和混乱。)


(请参阅我关于4NF和MVDs的回答。)

我总是发现,只要远离教科书/规范化术语,4NF就很容易理解。试着这样做:看了视频,虽然我确实理解他是什么,解释了什么,以及他说了什么。NF是关于以及如何“实现”它的,它仍然困扰着我,我对4的正式定义有一些问题。NF。但也许我应该停止在所有事件中试图理解正式定义,而只是开始使用视频的非正式解释。(正如Brian Finnegan在视频中所说:“你现在可以告诉人们,你明白,作为一名称职的数据建模师,你需要了解4.NF”)。无论如何,谢谢你的回答:)重新发布,请尽可能使用文本。无法搜索或剪切粘贴部分图像。问题应该是独立的。(如果你想使用特殊字符,请参阅wiki的Unicode字符列表,特别是数学链接。)你的意思不是“这几乎就是维基百科中[4NF]的定义”,而是“这满足了”它。加上“差不多”,你想说什么,因为它要么有,要么没有?既然“它”是一个表,“它不再符合多值依赖关系的定义”意味着什么?这是如何导致“因此该表不再包含一个微不足道的MVD”?你是说,不平凡?这是如何导致“并因此应该在4.NF中”的呢?PS最后一个表实际上满足了一些非平凡的FDs和MVD,确定了CourseNr。假设您考虑的是持有该值的变量,不满足那些FD/MVD,已经放弃了MVD约束。