【資料庫】關係模式的正規化的簡明判斷

RioTian 發表於 2021-06-19
資料庫

🐒求候選鍵:

  • 出現在函式依賴(FD)左邊的,或者沒出現在 FD 中的屬性一定是主屬性。(組成候選鍵的屬性都叫主屬性)
  • 出現在函式依賴右邊的屬性一定是非主屬性。(不是主屬性即為非主屬性)
  • 如果一個出現在函式依賴左邊的屬性它的閉包包含了所有的屬性,則它是唯一候選鍵
例:

設關係模式 \(R(ABCDEG),F = \{A → D,E → D,D → B,CD → A\}\)

照理先求 \(F_{min}\) ,但是不巧,這裡的 \(F\) 已經是 \(min\) 了。

求 R 的候選鍵:

只出現在左邊 兩邊都出現 只出現在右邊 均未出現
C、E A、D B G

可得 C、E、G 一定是主屬性,這時分別求它們的閉包,發現:C+ = {C}; E+ = {EDB};都 ≠ U。但是:CE+ = {CEDBA}, 那麼 CEG 就是 R 的候選鍵,相應的,C、E、G 都是主屬性。

🖊 判斷正規化步驟

以上面的題為例

  1. 先求 \(F_{min}\)
  2. 再求出候選鍵
    CEG
  3. 每個 FD 的左部都是超鍵——BCNF
    FD 中沒有左部包含 CEG 的依賴,故 R 不是 BCNF
  4. 每一個屬性都不依賴於其它非主屬性——3NF
    C、E、G 是主屬性,FD 中有 A → D,D → B,CD → A;這些都依賴於非主屬性,故 R 不是 3NF
  5. 每一個非主屬性都完全依賴於 R 的候選鍵——2NF
    可知非主屬性 A、B、D, FD 中有 E → D,由於 E ⊂ CEG,所以非主屬性 D 不完全依賴於 CEG,故 R 不是 2NF
  6. 否則是 1NF

上面例題可以判斷,應該是 1NF。

👫完全函式依賴:

對於函式依賴 W → A,如果還有 X ⊂ W (X 是 W 中的一個屬性(真子集))使得 X → A 成立,那麼 W → A 就是一個區域性依賴;否則 W → A 為完全依賴。

隱含所有屬性都依賴於候選鍵

👶 第一正規化(1NF)

定義:
  • 關係模式 R 的所有屬性都是不可分的原子屬性,則 R 是 1NF。屬性不可拆。

👨第二正規化(2NF)

定義:
  • 若關係模式 R 是 1NF,並且每個非主屬性都完全依賴於 R 的候選鍵,則 R 是 2NF

👴第三正規化(3NF)

定義:
  • 關係模式 R 是 2NF,且每個非主屬性都不傳遞依賴於 R 的候選鍵

  • 百度上有一句對第 3NF 非常經典的解釋:“簡而言之,第三正規化就是每一個屬性都不依賴於其它非主屬性。”

傳遞函式依賴:指如果存在 X → Y,Y → Z,且 Y !→ X,Z ∉ Y, 則 Z 傳遞函式依賴於 X。

👪BCNF正規化

定義:
  • 若關係模式 R 是 1NF,並且每個屬性都不傳遞依賴於 R 的候選鍵,則 R 是 BCNF。
  • 還有這個等價定義:對 FD 中每個非平凡的 X → Y(非平凡表示:Y ∉ X),都有 X 是 R 的超鍵。
  • 常用的判斷方式是:每一個屬性都依賴於超鍵,則 R 是 BCNF。

📚例題

判斷下列關係模式的正規化:

  1. R1(ABC), F={AB→C}
    候選鍵:AB,FD 的左部都是超鍵(包含 AB),故為 BCNF。
  2. R2(ABC), F={A→B,A→C}
    候選鍵:A,FD 的左部都是超鍵,故為 BCNF。
  3. R3(ABC), F={AC→B,B→C}
    候選鍵:AC,左部不都是超鍵,不是 BCNF;C 依賴於非主屬性 B,不是 3NF;每個非主屬性完全依賴於 AC,故為 2NF。
  4. R4(ABCD), F={AB→C,B→D}
    候選鍵:AB,可知不是 BCNF;每一個屬性都不依賴於非主屬性,故為 3NF。
  5. R5(ABC), F={A→BC,B→A,B→C}
    候選鍵:A、B;左部都是超鍵(包含 A、B),故為 BCNF。
  6. R6(ABC), F={A→B,B→C,C→A}
    候選鍵:A、B、C;左部都是超鍵(包含 A、B、C),故為 BCNF。

📕做完了,來一大碗寬面!🍜