關係型資料庫幾大正規化的理解總結
正規化的定義
關係型資料庫中的關係是需要滿足一定條件的,滿足這些不同程度的規範化就叫做正規化。
正規化按照規範化程度從低到高排序為第一正規化,第二正規化,第三正規化,BC正規化,第四正規化,第五正規化。
前導知識
函式依賴
R(U)是屬性集U的關係模型,X,Y是U的一個子集,對於R(U)中的任一個關係r,不可能存在兩個元組在X上屬性值相同,而在Y上屬性值不同。則稱X函式確定Y,或Y函式依賴X。
- 說人話:U是表(可能不止一個表,可以是有關係的多個表)的所有列,X,Y分別是這些屬性列的一個子集,也就是若干個屬性,對於所有在X這些屬性上的值一樣的行,在Y上的屬性上也必須一樣,滿足這樣條件的這若干個屬性 X和Y叫稱其函式依賴。
- X相同則Y必須相同,但X不同Y可以相同,也可以不同。
- 如果Y是X的子集,就叫平凡的函式依賴,一般不考慮這種,因為就是廢話,X整個都相同,子集肯定相同。
- 如果Y不是X的子集,叫做非平凡的函式依賴。
- 如果Y函式依賴X,那麼X稱為決定因素。
- 如果Y函式依賴X,但不依賴X的任何一個真子集,也就是X是極小的,那就稱Y完全函式依賴X,否則稱Y部分函式依賴X。
- 如果X決定Y,Y決定Z,且Y不決定X,那麼稱Z對X傳遞函式依賴。
碼(鍵)
- U是屬性全集,K是U的子集,若U完全函式依賴K,則稱K為候選碼,候選碼若有多個,任意選擇一個都可作為主碼,若U部分函式依賴K,則稱K為超碼。顯然,候選碼當然也是超碼,而且是最小的超碼。
- 包含在任何一個候選碼的屬性都叫主屬性,其他都叫非主屬性。
- 在本書中主碼和候選碼統稱為碼,屬性集K不是該關係模式(表)的碼,而是另一個關係模式(表)的碼,則稱K為該關係模式(表)的外碼。
求候選碼
例子:
舉例
有這樣一個配件管理表WPE(WNO,PNO,ENO,QNT),其中WNO表示倉庫號,PNO表示配件號,ENO表示職工號,QNT表示數量。
有以下約束要求:
(1)一個倉庫有多名職工;
(2)一個職工僅在一個倉庫工作;
(3)每個倉庫裡一種型號的配件由專人負責,但一個人可以管理幾種配件;
(4)同一種型號的配件可以分放在幾個倉庫中。
分析表中的函式依賴關係,可以得到:
(1)ENO->WNO;
(2)(WNO,PNO)->QNT
(3)(WNO,PNO)->ENO
(4)(ENO,PNO)->QNT
觀察法?:
候選碼的定義就是一組能決定所有列(某一個元組)的屬性。
所以根據這4個函式依賴關係,(WNO,PNO)顯然肯定是,因為它可以決定QNT,也可以決定ENO,加上它本身,就是屬性全集U了。
而(ENO,PNO),雖然只有一個決定QNT,但是ENO可以單獨決定WNO,所以顯然(ENO,PNO)也就能一起決定QNT和WNO,因此也是候選碼。
六大正規化?
第一正規化
定義
滿足最基本的條件,每一個分量都是不可分的資料項。
- 說人話,每一列對應只有一個值。
第二正規化
定義
R屬於第一正規化,且每一個非主屬性完全函式依賴於任何一個候選碼,則R屬於第二正規化
- 說人話,除了主碼候選碼之外的其他屬性都要完全函式依賴於主碼。
- 因為任意一個候選碼都能作為主碼,所以,也就是說,如果存在某個屬性不是完全函式依賴於某一個候選碼,可能是部分函式依賴,那就沒了。
- 比如主鍵是(學號,課程號),但是現在有一個屬性完全函式依賴於學號,而部分函式依賴於(學號,課程號),那就不滿足第二正規化。
第三正規化
定義
R屬於第二正規化,若R中不存在碼X,屬性子集Y,非主屬性Z,使得X決定Y,Y不決定X,Y決定Z,則R屬於第三正規化。
- 說人話,非主屬性必須直接完全函式依賴於主鍵,中間不能有其他函式,即不能是傳遞函式依賴。
BC正規化
定義
R屬於第一正規化,若X決定Y,且Y不是X的子集時X必含有碼,即每一個決定因素都包含碼,則R屬於BC正規化。
- 說人話, 若R是第一正規化,且每個屬性不部分函式依賴於候選碼也不傳遞函式依賴於候選碼,則R是BC正規化,具體以下三點。
- 所有非主屬性對每一個碼都是完全函式依賴。(也是第二正規化要求)
- 所有主屬性對每一個不包含它的碼也是完全函式依賴。(也就是排除了所有屬性對碼的部分依賴)
- 沒有任何屬性完全函式依賴於非碼的任何一組屬性。(排除傳遞函式依賴)
- 實際上,BC正規化就是在第三正規化的基礎上消除了主屬性的傳遞依賴。
第四正規化
多值依賴
說人話,多值依賴就是一個表中多對多的關係,如果可以分成兩列,這兩列多對多,這就平凡的多值依賴,如果是分成三列,固定某一列的值,其他兩列多對多,這就是非平凡的多值依賴,第四正規化要消除的就是非平凡的多值依賴。
函式依賴是特殊的多值依賴,因為多對多其實也是一對多。
定義
R屬於第一正規化,對應R的每一個非平凡多值依賴,X->->Y,X都含有碼,則R屬於第四正規化。
- 說人話,在滿足第三正規化的基礎上,關係表中不能含有一個實體的兩個或多個相互獨立的多值因子。dalao部落格
- 或者說,滿足第四正規化即要求每個非平凡的多值依賴都含有碼,也就是實際上是函式依賴。
第五正規化
定義
第五正規化是指關係模式R依賴均由R候選碼所隱含。
這輩子應該不會用到的內容,就不管了