2012年2月6日 星期一

[SQL] 第一正規化 (1NF)

第一正規化(1NF,中國大陸譯作第一范式,台灣譯做第一正規化)是資料庫正規化中所使用的一種正規形式。第一正規化是為了要排除 重複群 的出現,所採用的方法是要求資料庫的每個欄位都只能存放單一值,而且每筆記錄都要能利用一個惟一的主鍵來加以識別。



重複群

重複群通常會出現在會計帳上,每一筆記錄可能有不定個數的值。舉例來說:
交易
顧客日期數量
PeteMonday19.00
-28.20
PeteWednesday-84.00
SarahFriday100.00
150.00
-40.00
'數量' 就是所謂的重複群了,而在這種情況下這份資料就不符合第一正規化。想要消除重複群的話,只要把每筆記錄都轉化為單一記錄即可:
交易
交易 ID顧客日期數量
1PeteMonday19.00
2PeteMonday-28.20
3PeteWednesday-84.00
4SarahFriday100.00
5SarahFriday150.00
6SarahFriday-40.00

[编辑]缺乏唯一識別碼

一樣是在交易這個例子中,同一天同一個人買了同樣的數量,這樣的交易做了兩次:
交易
顧客日期數量
PeteMonday19.00
PeteMonday19.00
如上所示,這兩筆交易可以說是一模一樣,也就是說如果只靠這些資料我們沒有辦法分辨這兩筆記錄。我們之所以說它不符合第一正規化,是因為上面這樣的表示法欠缺一個唯一識別碼,可以是一個欄位,也可以是一組欄位,而且可以保證在這個資料中唯一識別碼不會重複出現。要將它正規化到符合第一正規化的原則只需要加入一個唯一識別碼即可:
交易
交易 ID顧客日期數量
1PeteMonday19.00
2PeteMonday19.00

沒有留言:

張貼留言