2017-10-18 127 views
0

我目前正在使用数据库正常化,并且我发现很多来源在获取1NF的方法上有所不同。正常化从UNF到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 | 
+----+-----------+ 

两者都会l在更高的正常形式之后最终变得相似,但是为什么1NF应该是“最佳实践”?

+0

[数据库管理系统规范化]的可能重复(https://stackoverflow.com/questions/40623169/normalization-in-database-management-system) – philipxy

+0

嗨。你的问题到底是什么?你自己说过:没有标准的“1NF”含义。没有标准的“UNF”。无论你的“UNF”是什么意思,都不涉及关系表,因为关系表每列和每行都有一个值,所以你必须告诉我们你或你的课程/参考是否打算将这样的数据结构对应于关系。此外,“1NF”的概念是混淆和模糊的,并且最终是关于良好的设计,但与归一化到更高的NF有不同的冗余。他们希望你在*你的课程中做什么?它的参考文献说什么? – philipxy

回答

0

有三种方法可以将1NF与数据一起使用。

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

方法2:添加额外的列,即。添加PHONE1和PHONE2

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

方法三是不仅能更好地实在是1NF,而且2NF和3NF。

正常化数据库时,我们通常希望以3NF结束。我们可以采取缓慢的方法,通过1NF,2NF,然后3NF,或者我们可以直接前往3NF。在完成这项任务30年后,我自然会生成3NF作为第一步。 1NF和2NF只有在修改现有数据库和项目时间限制阻止我们实施3NF时才会发生。

+0

所以,如果我理解正确,正常形式更多的是关于“不违反这些规则”,并且没有错误的方法,只要规则没有被侵犯?但是方法3可以节省一些时间。 –

+1

@ErwinOlie&SteveWright问题是关于1NF,这与更高的NFs无关。对更高的NF进行标准化也不会通过除期望的1NF以外的更低的NF;可以消除所需的更高NF设计。 – philipxy