關聯式資料庫的四種正規化

2021-08-22 19:05:14 字數 1985 閱讀 4379

什麼是正規化

一張資料表的表結構所符合的某種設計標準的級別

主屬性非主屬性

1 第1正規化 每個屬性必定不能再分

錯誤例子:

編號 品名 進貨(數量|單價) 銷售(數量|單價) 備註

修改後:

編號 品名 進貨數理 進貨單價 銷售數量 銷售單價 備註

2 第2正規化 2nf在1nf的基礎之上,消除了非主屬性對於碼的部分函式依賴

錯誤例子:學號 姓名 系名 系主任  課名  分數

資料冗餘過大

新建系如何暫時沒有招生,就在資料庫建立不了資料進入資料庫內-新增異常

學生畢業後刪除記錄,連系主任都會被刪除-刪除異常

某學生轉系,哪麼多條記錄中與系主任相關的記錄會被修改-修改異常

函式依賴:

系名->系主任

學號->系主任

(學號,課名)->分數

不成立的函式依賴:

學號->課名

學號->分數

課名->系主任

(學號,課名)->姓名 //仔細想課名是決定不了姓名的,一點關係都沒有

函式依賴三種型別(完全函式依賴,部分函式依賴,傳遞函式依賴)

完全函式依賴

在一張表中,若x->y,x中的任何乙個真子集,都無法確定y,但其全集可以確定,這個就記作xf->y

eg:學號f-> 姓名

(學號,課名)f->分數 學號或者課名都不能單獨確定分數

部分函式依賴

假如y函式依賴於x,但同時y並不完全函式依賴於x,記作x p->y

eg:(學號,課名) p->姓名

也就是說碼存在兩個主屬性以上的時候,才可能會出現非主屬性對碼的部分函式依賴

傳遞函式依賴

如果z函式依賴於y,且y函式依賴於x,x不依賴於y,那麼就記作x t-z

叫z傳遞函式依賴於x。

也就是說碼和非主屬性存在2個以上的時候,才可能會出現非主屬性對碼的傳遞函式依賴

碼設k為某錶中的乙個屬性或屬性組,若除k之外的所有屬性都完全函式依賴於k,稱k為碼。

主屬性包含在任何乙個碼中的屬性成為主屬性

如:學號與課名組成的碼,它們兩分別為主屬性

判斷是否符合2nf步驟:

1 找出所有的碼

2 根據第1步的碼,找出所有的主屬性

3 在資料表中,除去所有的主屬性,剩下的就都是非主屬性

4 檢視是否存在非主屬性對碼的部分函式依賴

eg,使用上面2nf的錯誤表結構,

訣竅:如果a是碼,哪麼所有包含了a的屬性組都不會是碼了,因為作為碼的要求裡有乙個「完全函式依賴」,把屬性全部列出來,連線

第一步: 碼是(學號,課程)

第二步:主屬性:學號與課名

第三步:非主屬性:姓名,系名,系主任,分數

第四步:(學號,課名)->姓名 ,學號->姓名, 所以(學號,課名)p->姓名

(學號,課名)->系名,學號->系名,所以(學號,課名)p->系名

(學號,課名)->系主任,學號->系主任,所以(學號,課名)p->系名

解決方案:將大資料表拆分成兩個或者更多個更小的資料表,

3 第3正規化 3nf在2nf的基礎之上,消除了非主屬性對於碼的傳遞函式依賴

在2nf的基礎上:產生三張新錶

表1 選課 (學號 課名 分數)

表2 學生 (學號 姓名 系名)

表3 系 (系名,系主任)

bcnf正規化 解偶用的,重點觀察插入和刪除的時候,屬性對應的資料會出現哪些異常

eg:實體(倉庫名,管理員,物品名,數量)

主屬性:倉庫名,管理員,物品名

碼:(管理員,物品名),(倉庫名,物品名)

主屬性不能為空,刪除資料,倉庫名和管理員會被刪除,更改管理員,所以物品的記錄會被更新

,所以得出乙個結論,即使滿足3nf,也可能存在插入,刪除,修改異常。

原因是什麼?存在主屬性對於碼的部分函式依賴與傳遞函式依賴,主屬性(倉庫名)對於碼(管理員,物品名)的部分函式依賴

解決辦法:在3nf的基礎上消除主屬性對於碼的部分與傳遞函式依賴

資料庫 四種正規化

部分函式依賴 設x,y是關係r的兩個屬性集合,存在x y,若x 是x的真子集,存在x y,則稱y部分函式依賴於x。舉個例子 學生基本資訊表r中 學號,身份證號,姓名 當然學號屬性取值是唯一的,在r關係中,學號,身份證號 姓名 學號 姓名 身份證號 姓名 所以姓名部分函式依賴與 學號,身份證號 完全函...

關聯式資料庫正規化

在建立乙個資料庫的過程中,必須依照一定的準則,這些準則被稱為正規化,從第一到第六共六個正規化,一般資料庫設計只要遵循第一正規化,第二正規化,和第三正規化就足夠了。滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂...

關聯式資料庫正規化

判斷是第幾正規化 概念 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。種類 目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf...