?求候選鍵:
- 只出現在函式依賴(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 都是主屬性。
? 判斷正規化步驟
以上面的題為例
- 先求 \(F_{min}\)
- 再求出候選鍵
CEG - 每個 FD 的左部都是超鍵——BCNF
FD 中沒有左部包含 CEG 的依賴,故 R 不是 BCNF - 每一個屬性都不依賴於其它非主屬性——3NF
C、E、G 是主屬性,FD 中有 A → D,D → B,CD → A;這些都依賴於非主屬性,故 R 不是 3NF - 每一個非主屬性都完全依賴於 R 的候選鍵——2NF
可知非主屬性 A、B、D, FD 中有 E → D,由於 E ⊂ CEG,所以非主屬性 D 不完全依賴於 CEG,故 R 不是 2NF - 否則是 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。
?例題
判斷下列關係模式的正規化:
- R1(ABC), F={AB→C}
候選鍵:AB,FD 的左部都是超鍵(包含 AB),故為 BCNF。 - R2(ABC), F={A→B,A→C}
候選鍵:A,FD 的左部都是超鍵,故為 BCNF。 - R3(ABC), F={AC→B,B→C}
候選鍵:AC,左部不都是超鍵,不是 BCNF;C 依賴於非主屬性 B,不是 3NF;每個非主屬性完全依賴於 AC,故為 2NF。 - R4(ABCD), F={AB→C,B→D}
候選鍵:AB,可知不是 BCNF;每一個屬性都不依賴於非主屬性,故為 3NF。 - R5(ABC), F={A→BC,B→A,B→C}
候選鍵:A、B;左部都是超鍵(包含 A、B),故為 BCNF。 - R6(ABC), F={A→B,B→C,C→A}
候選鍵:A、B、C;左部都是超鍵(包含 A、B、C),故為 BCNF。
?做完了,來一大碗寬面!?