Database design 从UNF正常化为1NF
我目前正在练习数据库规范化,我发现很多源在实现1NF的方法上有所不同 例如,这是我的UNF表:Database design 从UNF正常化为1NF,database-design,normalization,Database Design,Normalization,我目前正在练习数据库规范化,我发现很多源在实现1NF的方法上有所不同 例如,这是我的UNF表: customer +----+--------+----------------------+ | id | name | phone | +----+--------+----------------------+ | 1 | achmed | 06-101010, 06-111111 | +----+--------+----------------------
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,您可以在数据中采用三种方法 方法1:(您的第一个选项)将多个值拆分为单独的元组 方法2:添加其他列,即添加phone1和phone2 方法3:(你的第二个选择)有父母/子女关系 方法3更好,因为它不仅是1NF,而且是2NF和3NF
在规范化数据库时,我们通常希望以3NF结束。我们可以采取缓慢的方法,通过1NF,2NF,然后是3NF,或者直接到3NF。在完成这个任务30年后,我自然会首先生成3NF。1NF和2NF仅在修改现有数据库和项目时间限制阻止我们实施3NF时发生。因此,如果我理解正确,规范形式更多的是关于“不要违反这些规则”,并且只要不违反规则,就没有错误的方法?但从长远来看,方法3将节省一些时间。@ErwinOlie&SteveWright问题是关于1NF的,这与更高的NFs无关。此外,标准化到更高的NF不会经过更低的NFs,而不是期望的1NF;这可以消除期望的可能更高的NF设计。可能的Hi复制。你的问题到底是什么?你自己说的:没有标准的“1NF”含义。也没有标准的“UNF”意思。无论您所说的“UNF”是什么意思,它都不涉及关系表,因为关系表每列和每行有一个值,所以您必须告诉我们您或您的课程/参考想要这样的数据结构在关系上对应什么。此外,“1NF”的概念是混乱的、模糊的,最终是关于好的设计,但与规范化到更高的NFs不同。他们希望你在课程中做什么?它的参考资料怎么说?