【问题标题】:Normalizing from UNF to 1NF [closed]从 UNF 规范化到 1NF [关闭]
【发布时间】:2018-03-30 09:18:43
【问题描述】:

我目前正在练习数据库规范化,我发现很多来源在达到 1NF 的方法上有所不同。

例如,这是我的 UNF 表:

customer
+----+--------+----------------------+
| id | name   | phone                |
+----+--------+----------------------+
| 1  | achmed | 06-101010, 06-111111 |
+----+--------+----------------------+
| 2  | jozef  | 06-232323            |
+----+--------+----------------------+
| 3  | maria  | 06-464646, 06-989898 |
+----+--------+----------------------+

一种方法将多值拆分为不同的元组,这会产生临时冗余:

customer
+----+--------+-----------+
| id | name   | phone     |
+----+--------+-----------+
| 1  | achmed | 06-101010 |
+----+--------+-----------+
| 1  | achmed | 06-111111 |
+----+--------+-----------+
| 2  | jozef  | 06-232323 |
+----+--------+-----------+
| 3  | maria  | 06-464646 |
+----+--------+-----------+
| 3  | maria  | 06-989898 |
+----+--------+-----------+

另一种方法将多值直接拆分为新关系,如下所示:

customer
+----+--------+
| id | name   |
+----+--------+
| 1  | achmed |
+----+--------+
| 2  | jozef  |
+----+--------+
| 3  | maria  |
+----+--------+
customer_phone
+----+-----------+
| id | phone     |
+----+-----------+
| 1  | 06-101010 |
+----+-----------+
| 1  | 06-111111 |
+----+-----------+
| 2  | 06-232323 |
+----+-----------+
| 3  | 06-464646 |
+----+-----------+
| 3  | 06-989898 |
+----+-----------+

在更高的范式之后,两者最终会相似,但哪种方法应该是 1NF 的“最佳实践”,为什么?

【问题讨论】:

  • 嗨。你的问题到底是什么?您自己说过:没有标准的“1NF”含义。也没有标准的“UNF”含义。无论您所说的“UNF”是什么意思,都不涉及关系表,因为关系表每列和每行都有一个值,所以必须告诉我们 i> 你或你的课程/参考想要这样一个数据结构对应的关系。此外,“1NF”的概念是混乱和模糊的,最终是关于良好的设计,但与对更高 NF 的规范化不同的冗余。他们希望你在你的课程中做什么?它的引用说明了什么?

标签: database-design normalization


【解决方案1】:

您可以对数据采取三种 1NF 方法。

方法 1:(您的第一个选项)将多值拆分为单独的元组。

方法 2:添加额外的列,即。添加电话1和电话2

方法 3:(您的第二个选项)有父/子关系

方法 3 更好,因为不仅是 1NF,还有 2NF 和 3NF。

在规范化数据库时,我们通常希望以 3NF 结束。我们可以采取缓慢的方法,然后通过 1NF、2NF 和 3NF,或者我们可以直接进入 3NF。做这个任务30年,我自然是第一步生成3NF。 1NF 和 2NF 仅在修改现有数据库和项目时间限制阻止我们实施 3NF 时发生。

【讨论】:

  • 所以,如果我理解正确的话,范式更多的是“不违反这些规则”,只要不违反规则,就没有错误的做法?但从长远来看,方法 3 会节省一些时间。
  • @ErwinOlie & SteveWright 问题是关于 1NF,这与更高的 NF 无关。除了一个人想要的 1NF 之外,对更高 NF 的标准化也不会通过更低的 NF;可以消除所需的可能更高 NF 设计。
猜你喜欢
  • 2016-01-05
  • 2023-03-18
  • 2016-04-20
  • 2016-08-17
  • 1970-01-01
  • 2014-12-14
  • 2016-01-06
  • 2012-12-31
  • 1970-01-01
相关资源
最近更新 更多