1. 程式人生 > >關系數據庫 · 規範化理論

關系數據庫 · 規範化理論

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

三、“好的”關系數據庫系統應具有的特點

  • 適度減少數據冗余
    • 對關系模式的屬性間允許的數據依賴加以限制,減少表中非主屬性間存在的函數依賴,避免更新異常問題。
    • 非主屬性完全函數依賴於碼。
    • 非主屬性不傳遞依賴於碼
  • 關系明確,表與表之間主外鍵設置明確,表名稱明確。
  • 選擇合理的數據庫引擎,查詢操作較多的與增刪改操作較多的數據庫分別使用不同的引擎。

關系數據庫 · 規範化理論