規范化理論的通俗解讀:
一、關系依賴
- 函數依賴:X—>Y,即X函數決定Y,或Y函數依賴於X。
- 例:學號—>姓名 #學號決定姓名
- 平凡函數依賴:X—>Y,但X包含Y (Y包含於X)。
- 例:(學號,課號)—>課號 #課號存在於 (學號,課號) 之中。
- 非平凡函數依賴: X—>Y,但X不包含Y。
- 例:(學號,課號)—>成績 #成績不存在於 (學號,課號) 之中。
- 完全函數依賴:X—>Y,對於X的任意一個真子集X'都有X'不能函數決定Y。
- 例:(學號,課號)—>成績 #只有學號或姓名無法決定成績,二者缺一不可。
- 部分函數依賴:X—>Y,存在X的某一個真子集X'能夠函數決定Y。
- 例:(學號,課號)—>姓名 #只有學號就能決定姓名,課號為冗余項。
- 傳遞函數依賴:X—>Y,X不包含Y,Y不函數決定X,Y—>Z,即Z對X傳遞函數依賴。
- 例:學號—>系號,(系號不函數決定學號) ,系號—>系主任,則系主任傳遞函數依賴於學號。
- 多值依賴:X—>—>Y,設R(U)是屬性集U上的一個關系模式。X,Y,Z是U的子集,並且Z=U-X-Y。關系模式R(U)中多值依賴X—>—>Y成立,當且僅當對R(U)的任一關系r,給定的一對(x,z)值有一組Y的值,這組值僅僅決定於x值而與z值無關。
- 例:關系模式R(倉庫,管理員,物品)
-
一個倉庫有若干個管理員
-
一個倉庫可以存放多個物品
-
一個管理員管理一個倉庫中的所有物品
-
一種物品只能放在一個倉庫里
-
- 例:關系模式R(倉庫,管理員,物品)
則:倉庫—>—>物品,倉庫—>—>管理員
表中,R = 倉庫+管理員+物品,(倉庫,管理員)確定一組物品,但是物品其實與管理員無關,僅由倉庫確定,所以:倉庫—>—>物品。又因為(R-倉庫-物品)不是空集,所以 倉庫—>—>物品為非平凡多值依賴。
表中,R = 倉庫+管理員+物品,(倉庫,物品)確定一組管理員,但是管理員其實與物品無關,僅由倉庫確定,所以:倉庫—>—>管理員。又因為(R-倉庫-管理員)不是空集,所以 倉庫—>—>管理員為非平凡多值依賴。
- 平凡的多值依賴:若X—>—>Y, 並且X,Y,Z是U的子集,Z=U-X-Y,而Z為空集,則稱X—>—>Y為平凡的多值依賴;
- 非平凡的多值依賴:若X—>—>Y, 並且X,Y,Z是U的子集,Z=U-X-Y,若Z不為空,則稱X—>—>Y為非平凡的多值依賴。
- 連接依賴:為提高規范化程度,都是通過把低一級的關系模式分解為若干個高一級的關系模式來實現的,在此過程中,應該保證分解后產生的關系模式與原來的模式等價。常用的等價標准有兩種:要求分解具有無損連接性和要求分解保持函數依賴。
- 無損連接性的判別:將關系模式R<U,F>分解為關系模式R1<U1,F1>,R2<U2,F2>。如果(U1 ∩ U2 —>U1)∈F+(F的閉包,即F所蘊含的函數依賴的全體),或(U1 ∩ U2 —>U2)∈F+ ,即U1 ∩ U2 是R1的候選碼或是R2的候選碼,則這個分解一定是具有無損連接性的。
二、關系模式的規范化
- 滿足第一范式條件的關系模式(1NF):關系模式 R的每一個屬性都是原子域,元組的每一個分量都是不可分割的數據項。
- 滿足第二范式條件的關系模式(2NF):關系模式 R∈1NF ,每一個非主屬性完全函數依賴於碼,消除非主屬性對碼的部分函數依賴。
- 滿足第三范式條件的關系模式(3NF):關系模式 R∈2NF ,每一個非主屬性不傳遞依賴於碼,消除非主屬性對碼的傳遞函數依賴(對非主屬性的函數依賴)。
- 滿足Boyce-Code范式條件的關系模式(BCNF):關系模式 R∈3NF ,對於每一個非平凡函數依賴X—>Y,都有X包含碼,消除主屬性對於碼的部分函數依賴與傳遞函數依賴。(在函數依賴的范疇內,BCNF達到了最高的規范化程度)
- 滿足第四范式條件的關系模式(4NF):關系模式 R∈BCNF ,對於每一個非平凡的多值依賴X—>—>Y(Y⊄X),都有X包含碼。(限制關系模式的屬性之間不允許有非平凡且非函數依賴的多值依賴)
- 滿足第五范式條件的關系模式(5NF):關系模式 R∈4NF,消除屬於4NF的關系模式中存在的連接依賴。
規范程度層次:5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
三、“好的”關系數據庫系統應具有的特點
- 適度減少數據冗余。
- 關系明確,表與表之間主外鍵設置明確,表名稱明確。
- 對關系模式的屬性間允許的數據依賴加以限制,減少表中非主屬性間存在的函數依賴,避免更新異常問題。
- 非主屬性完全函數依賴於碼,不允許有非主屬性對碼的部分函數依賴。
- 非主屬性不傳遞依賴於碼。
- 選擇合理的數據庫引擎,查詢操作較多的與增刪改操作較多的數據庫分別使用不同的引擎。
