1. 程式人生 > >資料庫設計原則之三大正規化

資料庫設計原則之三大正規化

                     

首先宣告,本文為筆記記錄。可能不適合作為部落格文章,所以如果看著不舒服,還望“另請高明”,(^__^) 嘻嘻……

資料庫設計的時候有三大正規化,現簡述如下:

第一正規化(1NF): 原子性,資料不可再分

原則就是使得表列為原子性,每一個欄位內容不能再分解。

第二正規化(2NF):唯一性,消除部分依賴

第二正規化要求滿足如下兩個要求,

每一行資料具有唯一性

這一點,只要是有主鍵就可以實現。因為主鍵的存在使得每一行資料都具有唯一性。

消除資料之間的部分依賴

 

依賴的定義:主鍵確定了其他欄位,其他欄位依賴於主鍵而存在。

 

部分依賴: 某個欄位值依賴於部分欄位,則發生這種現象的前提是該表主鍵位置擁有多個欄位。

 

完全依賴: 某個欄位完全依賴與主鍵的所有欄位。當一個表的主鍵僅有一個欄位時,必然是完全依賴。

解決辦法:

將部分依賴轉換成完全依賴,拆表!

            將原來存在部分依賴的表拆分,簡單來說就是該表主鍵有幾個欄位,就拆成(幾個+1)的表,前幾個欄位將分別作為其所在表的唯一主鍵,即成為完全依賴模式。最後一個表為之前的那幾個欄位並存的聯合主鍵。用於維護表與表之間的關係。  

第三正規化(3NF):獨立性,消除傳遞依賴

也就是說,有些欄位的值能夠使用現有的表列來計算得出,這樣的欄位就屬於冗餘欄位,會產生傳遞依賴現象。

解決辦法

將傳遞依賴部分提取出來,拆表!

            將原來的表中存在傳遞依賴的欄位提取出來,新建一個表。該新表的主鍵即為原表中被依賴的那個欄位。此欄位在原來的表中將作為外來鍵而存在。