關系數據庫 · 規範化理論
阿新 • • 發佈:2019-02-16
nbsp 第一範式 選擇 數據 1nf 更新 函數依賴 bcnf spa
一、函數依賴
- 函數依賴: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傳遞函數依賴。
- 例:學號—>系號,(系號不函數決定學號) ,系號—>系主任,則系主任傳遞函數依賴於學號。
二、關系模式的規範化
- 滿足第一範式條件的關系模式(1NF):關系模式 R的每一個屬性都是原子域,元組的每一個分量都是不可分割的數據項。
- 滿足第一範式條件的關系模式(2NF):關系模式 R∈1NF ,每一個非主屬性完全函數依賴於碼
- 滿足第一範式條件的關系模式(3NF):關系模式 R∈2NF ,每一個非主屬性都不傳遞依賴於碼。
- 滿足第一範式條件的關系模式(BCNF):關系模式 R∈3NF ,對於每一個非平凡函數依賴X—>Y,都有X包含碼。(在函數依賴的範疇內,BCNF達到了最高的規範化程度)
- 滿足第一範式條件的關系模式(4NF):關系模式 R∈BCNF ,對於每一個非平凡的多值依賴X—>—>Y(Y?X),都有X包含碼。(限制關系模式的屬性之間不允許有非平凡且非函數依賴的多值依賴)
規範程度層次:4NF?BCNF?3NF?2NF?1NF
三、“好的”關系數據庫系統應具有的特點
- 適度減少數據冗余
- 對關系模式的屬性間允許的數據依賴加以限制,減少表中非主屬性間存在的函數依賴,避免更新異常問題。
- 非主屬性完全函數依賴於碼。
- 非主屬性不傳遞依賴於碼。
- 關系明確,表與表之間主外鍵設置明確,表名稱明確。
- 選擇合理的數據庫引擎,查詢操作較多的與增刪改操作較多的數據庫分別使用不同的引擎。
關系數據庫 · 規範化理論