關係數據理論

關係數據庫邏輯設計
  • 針對具體問題,如何構造一個適合於它的數據模式
  • 數據庫邏輯設計的工具──關係數據庫的規範化理論
數據依賴
  • 是一個關係內部屬性與屬性之間的一種約束關係。
  • 是現實世界屬性間相互聯繫的抽象
  • 是數據內在的性質
  • 是語義的體現
“好”的模式:

不會發生插入異常、刪除異常、更新異常,數據冗餘應儘可能少。
原因:由存在於模式中的某些數據依賴引起的
解決方法:通過分解關係模式來消除其中不合適的數據依賴。

規範化

函數依賴
定義:設R(U)是一個屬性集U上的關係模式,X和Y是U的子集。
若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數確定Y” 或 “Y函數依賴於X”,記作X→Y。
X稱爲這個函數依賴的決定屬性集(Determinant)。
Y=f(x)

平凡函數依賴與非平凡函數依賴
在這裏插入圖片描述 對於任一關係模式,平凡函數依賴都是必然成立的,它不反映新的語義,因此若不特別聲明, 我們總是討論非平凡函數依賴。

完全函數依賴與部分函數依賴
在這裏插入圖片描述
在這裏插入圖片描述
傳遞函數依賴
在這裏插入圖片描述

在這裏插入圖片描述

主屬性與非主屬性:

  • 包含在任何一個候選碼中的屬性 ,稱爲主屬性(Prime attribute)
  • 不包含在任何碼中的屬性稱爲非主屬性(Nonprime attribute)或非碼屬性(Non-key attribute)

全碼:

  • 整個屬性組是碼,稱爲全碼(All-key)

外部碼:
關係模式 R 中屬性或屬性組X 並非 R的碼,但 X 是另一個關係模式的碼,則稱 X 是R 的外部碼(Foreign key)也稱外碼。
如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關係模式S(Sno,Sdept,Sage)的碼,則Sno是關係模式SC的外部碼

範式

範式是符合某一種級別的關係模式的集合。
關係數據庫中的關係必須滿足一定的要求。滿足不同程度要求的爲不同範式。
範式的種類:
在這裏插入圖片描述
某一關係模式R爲第n範式,可簡記爲R∈nNF。
一個低一級範式的關係模式,通過模式分解可以轉換爲若干個高一級範式的關係模式的集合,這種過程就叫規範化

  • 1NF

    如果一個關係模式R的所有屬性都是不可分的基本數據項,則R∈1NF。
    第一範式是對關係模式的最起碼的要求。不滿足第一範式的數據庫模式不能稱爲關係數據庫。
    但是滿足第一範式的關係模式並不一定是一個好的關係模式。

  • 2NF

    定義6.6 若關係模式R∈1NF,並且每一個非主屬性都完全函數依賴於R的碼,則R∈2NF。
    消除非主屬性對碼的部分函數依賴。

  • 3NF
    在這裏插入圖片描述
    每一個非主屬性既不部分依賴於碼也不傳遞依賴於碼。
    如果R∈3NF,且R只有一個候選碼

  • BC範式(BCNF)
    在這裏插入圖片描述

多值依賴
在這裏插入圖片描述
多值依賴的3個要點:

  • 1)Z = U-X-Y
  • 2)Y的值決定於X上的值
  • 3)Y的值與Z值無關

平凡的多值依賴:
在這裏插入圖片描述

多值依賴的性質:

  • (1)多值依賴具有對稱性
    若X→→Y,則X→→Z,其中Z=U-X-Y
    多值依賴的對稱性可以用完全二分圖直觀地表示出來。

  • (2)多值依賴具有傳遞性
    若X→→Y,Y→→Z, 則X→→Z -Y

  • ( 3)函數依賴是多值依賴的特殊情況。
    若X→Y,則X→→Y。

4NF
在這裏插入圖片描述在這裏插入圖片描述

注意:

  1. 一個全是主屬性的關係模式一定可以達到3NF。
  2. 一個全碼的關係模式一定可以達到BCNF。
  3. 一個二目關係模式一定可以達到4NF。
  4. 函數依賴和多值依賴是兩種重要的數據依賴。在函數依賴的範疇內, BCNF是最高級別的範式。如果考慮多值依賴, 則4NF是最高的範式級別。
  5. 除FD和MVD外,還有其他數據依賴,如連接依賴,在連接依賴的概念上還可以定義5NF的範式級別。
    在這裏插入圖片描述

關係模式的規範化過程是通過對關係模式的投影分解來實現的, 把低一級的關係模式分解爲若干高一級的關係模式, 分解不是唯一的。
並不是規範化程度越高越好:

  • 規範化程度高, 可解決更新異常和冗餘大的問題, 但會失去檢索查詢方便快速的優點, 增加(自然)連接運算的開銷。
  • 必須結合應用環境和具體情況合理選擇DB模式, 經常用於檢索查詢的系統, 寧肯規範化程度低些。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章