什麼是第一,第二,第三正規化

2021-07-12 07:23:37 字數 1773 閱讀 5246

我們在資料庫表設計時,經常說,某某表要遵循第三正規化。下面通過例項介紹第一,第二,第三正規化

所謂第一正規化,就是資料表的列不可再分。

看下面資料表,對於選課列明顯是可以再分的,所以它是違反第一正規化的。

學號姓名

選課10001

張三數學,語文,英語

10002

李四語文,英語

10003

王五語文,英語,歷史

第二正規化是指,首先滿足第一正規化,並且表中非主鍵列不存在對主鍵的部分依賴。

看下面的學生選課表:

學號課程

成績課程學分

10001

數學100

610001

語文90

210001

英語85

310002

數學90

610003

數學99

610004

語文892

表中主鍵為 (學號,課程),我們可以表示為 (學號,課程) -> (成績,課程學分), 表示所有非主鍵列 (成績,課程學分)都依賴於主鍵 (學號,課程)。 但是,表中還存在另外乙個依賴:(課程)->(課程學分)。這樣非主鍵列 『課程學分『 依賴於部分主鍵列 』課程『, 所以上表是不滿足第二正規化的。

我們把它拆成如下2張表:

學生選課表:

學號課程

成績10001

數學100

10001

語文90

10001

英語85

10002

數學90

10003

數學99

10004

語文89

課程資訊表:

課程課程學分數學6

語文3英語2

那麼上面2個表,學生選課表主鍵為(學號,課程),課程資訊表主鍵為(課程),表中所有非主鍵列都完全依賴主鍵。不僅符合第二正規化,還符合第三正規化。 

再看這樣乙個學生資訊表:

學號姓名

性別班級

班主任10001張三男

一班小王

10002李四男

一班小王

10003王五男

二班小李

10004

張小三男

二班小李

上表中,主鍵為:(學號),所有字段 (姓名,性別,班級,班主任)都依賴與主鍵(學號),不存在對主鍵的部分依賴。所以是滿足第二正規化。

第三正規化定義是,滿足第二正規化,並且表中的列不存在對非主鍵列的傳遞依賴。

對於上面的學生資訊表,雖然滿足第二正規化,所有欄位都依賴主鍵(學號),但是,表中存在乙個傳力依賴,(學號)->(班級)->(班主任)。也就是說,(班主任)這個非主鍵列依賴與另外乙個非主鍵列 (班級)。所以不符號第三正規化。

把這個表拆分成如下2個表,

學生資訊表:

學號姓名

性別班級

10001張三男

一班10002李四男

一班10003王五男

二班10004

張小三男二班

班級資訊表:

班級班主任

一班小王

二班小李

這樣,對主鍵的傳遞依賴就消失了。上面的2個表都符合第3正規化。

對應上面的班級資訊表,完全可以設計成這樣:

班級班主任

班級人數

一班小王

40二班

小李45

這顯然是符合第三正規化的,所有列都依賴主鍵(班級),也不存在傳遞依賴。但是列(班級人數) 顯然可以通過統計方法獲得,出現在這張表,會造成維護困難或者不一致的情況。這就需要更高階別正規化的約束。

什麼是正規化?第一正規化 第二正規化 第三正規化的區別

總結 正規化的含義 符合某種級別的關係模式的集合。表示乙個關係內部的各屬性之間聯絡的合理化程度。可以理解為 資料表的表結構所符合的某種設計標準的級別。第一正規化 是對關係模式的基本要求。不滿足第一正規化的關係,不能稱為關係型資料庫。符合第一正規化的關係,每個屬性都不可以再分割。但是如果僅僅滿足第一正...

第一正規化,第二正規化,第三正規化

第一正規化 存在非主屬性對碼的部分依賴關係 r a,b,c ab是碼 c是非主屬性 b c b決定c c部分依賴於b 第一正規化 定義 如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的 那麼符合第一模式的特點就有 1 有主關鍵字 2 主鍵不能為空,3 主鍵不能重複,4 欄位不可以...

第一正規化,第二正規化,第三正規化

第一正規化 存在非主屬性對碼的部分依賴關係 r a,b,c ab是碼 c是非主屬性 b c b決定c c部分依賴於b 第一正規化 定義 如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的 那麼符合第一模式的特點就有 1 有主關鍵字 2 主鍵不能為空,3 主鍵不能重複,4 欄位不可以...