狂學數據庫之三大範式

在這裏插入圖片描述

在瞭解三大範式之前,我們需要了解一下它的背景就是關係數據庫模式的規範化理論。

規範化的基本思想是消除關係模式中的數據冗餘,消除數據依賴中的不合適的部分,解決數據插入、刪除與修改時發生的異常現象。這就要求關係數據庫設計出來的關係模式要滿 足一定的條件。
規範化的含義:一個低一級範式的關係模式,通過模式分解可以轉換爲若干個高一級範式的關係模式的集合
關係數據庫的規範化過程中爲不同程度的規範化要求設立的不同的標準或準則稱爲範式

滿足最低要求的叫第一範式,簡稱 1NF。
在第一範式中滿足進一步要求的爲第 二範式(2NF)
,其餘以此類推。R 爲第幾範式就可以寫成 R∈xNF(x 表示某範式名)。

第一範式(1NF)

1NF 定義

如果關係模式 R 的每一個關係 r 的屬性值都是不可分的原子值,那麼稱 R 是第一範式 (first normal form,簡記爲 1 NF)的模式。
不是 1NF 的關係稱爲非規範化的關係,滿足 1NF 的關係稱爲規範化的關係。關係數據庫研究的關係都是規範化的關係。

1NF的問題

滿足第一範式的關係模式並不一定是一個合理的關係模式。

第二範式(2NF)

2NF定義

若 R∈1NF,且 R 中的每一個非主屬性都完全函數依賴於 R 的任一候選碼,則 R∈2NF。

2NF應滿足的條件

2NF 關係中不存在非主屬性對候選碼的部分函數依賴。

 例如,在關係模式:SOC (Sno, Sdept, Soff, Cno, Grade)中 Sdept﹑Soff 屬性存在對碼的部 分函數依賴。
 爲了消除這些部分函數依賴,可以採用投影分解法,
 把 SOC 分解爲兩個關係 模式: 
 SC(Sno, Cno, Grade) SO(Sno, Sdept, Soff) 

例題:

2NF的問題

可以在一定程度上解決原 1NF 關係中存在的插入異常,刪除異常, 數據冗餘度大,修改複雜等問題.但是將一個 1NF 關係分解爲多個 2NF 的關係後,並不能完全消除關係模式中的各種異常情況和數據冗餘.也就是說
2NF 關係並不能解決所有問題。

第三範式(3NF)

3NF定義

如果關係R的任何一個非主屬性都不傳遞函數依賴於它的任何一個候選碼,則R∈3NF。
由定義可以證明,若 R∈3NF,則 R 的每一個非主屬性既不部分函數依賴於候選碼,也不傳 遞函數依賴於候選碼。顯然,如果 R∈3NF,則 R 也是 2NF。

判別3NF方法

①找候選碼,確定非主屬性。
②考察非主屬性對候選碼的函數依賴是否存在部分函數依賴。如果存在,則相應的關係 模式不是 2NF,否則是 2NF。
③考察非主屬性之間是否存在函數依賴。如果存在,相應模式不是 3NF,否則是 3NF。 也可根據 3NF 定義,判斷是否存在非主屬性對候選碼的傳遞函數依賴。這種判別方法 的好處是能夠逐級判別關係模式的範式級別。

3NF的問題

可以在一定程度上解決原 2NF 關係中存在的插入異常,刪除異常, 數據冗餘度大,修改複雜等問題.但是將一個 2NF 關係分解爲多個 3NF 的關係後,並不能完全消除關係模式中的各種異常情況和數據冗餘.也就是說,
屬於 3NF 的關係模式並不一 定是一個好的關係模式.

在這裏插入圖片描述
END!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章