2017-10-18 163 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