【发布时间】:2020-05-15 07:09:21
【问题描述】:
所以我正在阅读数据库规范化,而且似乎在大多数情况下,我们很多人已经在关注 2NF 甚至 3NF 而没有意识到这一点。我想知道为什么我们的教授在 4 年前告诉我们这是硕士数据库课程中讨论的主题,因为它“太复杂”了哈哈……听起来对我来说真的很直接……
无论如何,this article here 的一部分讨论了 3NF,为了实现这一点,您需要有 2NF 并且没有传递函数依赖。
给出的例子是这张图片,但我不明白......非键列的值如何改变另一个非键列的值?如果有的话,在我看来,如果发生这种情况,这听起来像是系统中的一个小故障......
考虑表 1。更改非键列 Full Name 可能会更改 Salutation。
【问题讨论】:
-
我不知道为什么 3NF 会被描述为“太复杂”。 “一次存储数据并将其放入适当的实体”的原则对我来说似乎很简单。诚然,它确实有一些反作用。
-
@GordonLinoff 是的,实际上,整个规范化主题在当时对本科生来说被认为“太复杂”了。所以我当时是个天真的 CS 学生,我只是按照我们被告知的内容滚动,并没有费心去探索它,因为我认为这是一个 PHD 主题或什么的。你学到的东西......
-
。 .我发现它的学术处理相当复杂。向学生展示一些构建数据库的正确方法的示例;解释关键原则;给他们家庭作业如何解决一些问题。然后测试它们。从实际数据库设计的角度来看,我发现1NF、2NF等的处理有点抽象。
-
@GordonLinoff 我不骗你,我记得在数据库课上学过的只是理论和数学。实际实施和实际建立数据库?不,我们是靠自己的。我希望他向我们展示了我们开始所需的工具,以及现有的不同数据库并实际向我们展示了示例。一直以来这只是理论上的,我发现主键/外键/复合键的概念非常混乱,直到我不得不在工作中实现它时才理解它。它如此简单,但它们使事情变得如此复杂,荒谬
-
。 .我想我很幸运。我不得不从头开始构建一个——然后是另一个——来了解数据库。理论中唯一引起共鸣的部分是底层算法的算法和复杂性。
标签: relational-database database-normalization functional-dependencies