gpt4 book ai didi

database - 规范化中第四范式的定义

转载 作者:搜寻专家 更新时间:2023-10-30 20:35:05 25 4
gpt4 key购买 nike

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

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

A table is in 4NF if it is in Boyce–Codd normal form (BCNF) and only contains trivial multivalued dependencies (MVDs).

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

MVD

根据维基百科,一个简单的 MVP:

A multivalued dependency X ->> Y is trivial if Y is a subset of X, or if X ∪ Y is the whole set of attributes of the relation.

使用这个定义,下表不应该在 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 中。

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

最佳答案

A table is in 4NF if it is in Boyce–Codd normal form and only contains trivial multi-valued dependencies (MVDs).

这个“只”用得不好。此外,它对“包含”的使用在初学者的上下文中可能是模糊的。似乎在说:

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

然而,这是错误的。

如果 FD X → Y 成立,则 MVD X ↠ Y 成立。 (人们常说 FD 是 MVD,但这是不正确的。FD 和 MVD 是带箭头的表达式。但 FD 声明的条件比 MVD 更受限制。)非正式地,虽然 MVD 表示所有子行Y 的值必须与 X 的所有子行值一起出现,FD 表示所有 Y 子行的集合只有一个元素。

正确的描述是:

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

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

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

关于database - 规范化中第四范式的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com