題組內容
二、R(A,B,C,D,E,F,H,I)為一個含有A、B、C、D、E、F、H、I八個屬性,且符合1NF(firstnormalform)要求之關聯表格。該表格有五個功能相依(FunctionalDependency):AB→F;A→E;B→H;BC→I;C→D。
(二)繼上題,試將R分割成符合2NF(secondnormalform)及3NF(third normalform)要求的關聯表格,並標出各關聯表格之primarykey。 (20分)
詳解 (共 2 筆)
詳解
其2NF之拆解結果如下-
R1(A,B,F)
R2(B,H)
R3(B,C,I)
R4(A,E)
R5(C,D)
R6(A,B,C)
本關聯經第二正規化後並無出現遞移相依,故已符合第三正規化。
詳解
要將關聯表格 R(A, B, C, D, E, F, H, I)分割成符合2NF和3NF要求的關聯表格,我們需要考慮之前提到的功能相依(Functional Dependency):
- AB → F
- A → E
- B → H
- BC → I
- C → D
第二正規型式(2NF)
2NF要求在1NF的基礎上,消除非主鍵屬性對主鍵的部分依賴。換句話說,每個非主鍵屬性必須完全依賴於主鍵。
在1NF中,我們已經確定(A, B, C)是主鍵。現在我們要檢查是否有任何非主鍵屬性是對主鍵的部分依賴。
根據功能相依:
- A → E(A是主鍵的一部分,E部分依賴於A)
- B → H(B是主鍵的一部分,H部分依賴於B)
- C → D(C是主鍵的一部分,D部分依賴於C)
這些部分依賴意味著我們需要將R分解成多個表格,以消除部分依賴。
分解步驟:
- 把屬性A和E分成一個表(R1)。
- 把屬性B和H分成一個表(R2)。
- 把屬性C和D分成一個表(R3)。
- 保留剩下的主鍵相關聯的表(R4)。
這樣,我們可以將R分解成以下表格:
- R1(A, E):A是主鍵
- R2(B, H):B是主鍵
- R3(C, D):C是主鍵
- R4(A, B, C, F, I):(A, B, C)是主鍵,並且包含F和I
第三正規型式(3NF)
3NF要求在2NF的基礎上,消除非主鍵屬性對主鍵的傳遞依賴。換句話說,非主鍵屬性必須直接依賴於主鍵,不能通過其他非主鍵屬性傳遞依賴於主鍵。
在我們的2NF分解中,R4(A, B, C, F, I)仍有以下功能相依:
- AB → F
- BC → I
這些是直接依賴,沒有傳遞依賴,所以R4已經符合3NF的要求。
總結:
-
R1(A, E)
- 主鍵:A
- 屬性:A, E
-
R2(B, H)
- 主鍵:B
- 屬性:B, H
-
R3(C, D)
- 主鍵:C
- 屬性:C, D
-
R4(A, B, C, F, I)
- 主鍵:(A, B, C)
- 屬性:A, B, C, F, I
這四個表格滿足2NF和3NF的要求,並消除了所有部分依賴和傳遞依賴,保證了資料的正規化。