1. 程式人生 > >第一正規化、第二正規化、第三正規化的理解

第一正規化、第二正規化、第三正規化的理解

第一正規化(1NF):

1、每個屬性不可再分。

2、相近或一樣的屬性要儘量合併在一起確保不會產生冗餘資料。

上表如果要求把省/市單獨劃分出來,則不符合1NF。

上表產生資料冗餘。

2、第二正規化(2NF):非主屬性對關鍵字完全依賴,消除部分依賴。

比如有選課關係表:學號,姓名,成績,課程,學分。主鍵為(學號,課程)的屬性組。

存在部分依賴:學號->姓名;課程->學分。因此不符合2NF。

3、第三正規化(3NF):消除傳遞依賴,每個屬性和主鍵有直接關係而不是間接關係,即屬性不依賴於其他非主屬性。

比如有學生檔案表:學號,姓名,生源地,生源地編號,郵政編碼。主鍵為(學號)。

存在傳遞依賴:學號->生源地編號->生源地,郵政編碼。因此不符合3NF。

4、BCNF:不存在任意欄位對任意候選關鍵欄位的傳遞函式依賴。

比如寢室管理關係表 (寢室ID,室長ID,物品ID,數量),選主鍵的時候

寢室ID物品ID)---->(室長ID,數量

也可以

室長ID物品ID)------>(寢室ID數量)

5、第四正規化(4NF):存在多值依賴。

例如(商品,買商品的客戶,附贈品)

商品)-->-->(買商品的客戶),

商品)-->-->(附贈品

都是1:N關係,且聯絡獨立,存在多值依賴關係。