Thuật toán tách lược đồ thành tập các lược đồ 3NF với phép tách không mất mát thông tin:
+ Vào: Lược đồ quan hệ R(U). Tập phụ thuộc hàm F.
+ Ra: ρ={R1(U1), ...,Rm(Um) | Ri(Ui), i=1, ..., m là 3NF} với phép tách không mất mát thông tin.
+ Phương pháp:
Bước 1: Tìm phủ tối thiểu F' của F.
Bước 2:
i) Đặt U0= X với X là tập các thuộc tính không xuất hiện trong bất kỳ một phụ thuộc hàm nào (cả vế trái lẫn vế phải) của F'.
Nếu U0 ≠∅ thì lập một lược đồ R0(U0).
ii) Nếu tồn tại phụ thuộc hàm dạng L → A ∈F' mà LA = U\U0
thì ta lập một lược đồ R1(U\U0) và khi đó ρ (R0(U0), R1(U\U0)) là phép tách R thành các lược đồ 3NF.
iii) Nếu ∃Li→Ai1, ..., Li →Aik , k≥1 thì lập lược đồ Ri(LiAi1 . . . Aik). Khi đó ρ (R0(U0), Ri(Ui)) là phép tách R thành các lược đồ 3NF.
Bước 3:
i) Tìm một khóa K của R(U).
ii) Nếu tồn tại Ui mà K ⊆ Ui thì ρ(R0(U0), Ri(Ui)) là phép tách R thành các lược đồ 3NF, không mất mát thông tin (Giữ nguyên kết quả bước 2).
iii) Nếu không tồn tại Ui thoả ii) nhưng tồn tại Ui mà K⊆ U0 ∪ Ui
thì ρ(Ri(Ui), R0(K)) (thay U0 =K) là phép tách R thành các lược đồ 3NF, không mất mát thông tin.
iv) Nếu không tồn tại Ui thoả iii) thì ρ(Ri(Ui), R0(U0), R(K)) là phép tách R thành các lược đồ 3NF, không mất mát thông tin (Thêm vào lược đồ R(K)).
Ví dụ 1: Cho lược đồ quan hệ R(U), với U={A, B, C, D, E, G } và tập phụ thuộc hàm F={A→G, CG→D, CD→A, AE→B, CE→D}.
Hãy tách lược đồ R thành dạng 3NF với phép tách không mất mát thông tin.
Phủ tối thiểu của F là F' = F
* Không tồn tại thuộc tính không xuất hiện trong mọi PTH của F' (U0=∅)
* Không tồn tại PTH dạng L → A mà LA = U\U0
* Không tồn tại các PTH có vế trái giống nhau Vậy ta có phép tách là
ρ(R1(AG), R2(CGD), R3(CDA), R4(AEB), R5(CED)).
Ta tìm được một khóa của R là K=EC. Do K ⊆ U5=CED nên ρ(R1(AG), R2(CGD), R3(CDA), R4(AEB), R5(CED)).
là lược đồ chuẩn hoá không mất mát thông tin.
Ví dụ 2: Cho lược đồ quan hệ R(U) với U= {A, B, C, D, E, F, G} và tập phụ thuộc hàm F={A→BC, D→E, AD→F}. Hãy tách lược đồ quan hệ trên thành tập các lược đồ dạng 3NF với phép tách không mất mát thông tin.
1. Tìm phủ tối thiểu F' của F
Ta có F' = {A→B, A →C, D→E, AD →F}. 2. Tách
i) Do G có mặt trong bất kỳ PTH nào của F' nên đặt U0 = G và xác định lược đồ R0(G).
ii) Không tồn tại phụ thuộc hàm dạng L → A mà LA = U - U0.
iii) Từ A →B, A → C ta xác định lược đồ : R1(ABC) Từ D →E xác định R2(DE)
Từ AD →F xác định R3(ADF)
Vậy phép tách là: ρ (R0(G),R1(ABC), R2(DE), R3(ADF)). 3. Đưa ra kết quả:
+ Không tồn tại Ui mà K ⊆ Ui,
+ Tồn tại U3= ADF để K = ADG ⊆U3∪G = ADGF nên ta có phép tách thành các lược đồ 3NF không mất mát thông tin của R là: ρ (R0(ADG), R1(ABC), R2(DE), R3(ADF)).
CÂU HỎI VÀ BÀI TẬP
1. Cho lược đồ quan hệ R(U), quan hệ r xác định trên R và tập phụ thuộc hàm
F = {AB → E, AG → D, BE → I, E → G, GI → H}
Chứng minh rằng nếu quan hệ r xác định trên R thoả F thì r cũng thoả AB→GH.
2. Cho lược đồ quan hệ R, quan hệ r xác định trên R và tập phụ thuộc hàm
F = {AB → C, B → D, CD → E, CE → GH, G → A}
Chứng minh rằng nếu quan hệ r thoả F thì r cũng thoả AB→E, AB→G.
3. Cho lược đồ quan hệ R trên tập thuộc tính U={A, B, C, D, E, F, G, H} và tập phụ thuộc hàm F = {A → D, AB → DE, CE → G, E → H}
a. Tính (AB)+.
b. Tìm các khóa của R.
4. Cho lược đồ quan hệ R(U) với U = {A, B, C, D, E, F, G, H, I, K, L} và tập phụ thuộc hàm
F = {BK → FG, G → F, A → CDL, ABEK → H} Hãy tìm một khóa của R.
5. Cho lược đồ quan hệ R(U), U={A, B, C, D, E, F, G, H} và tập phụ thuộc hàm F={A → CD, C →D, EG → F, B → H} trên U.
Hãy tách lược đồ trên thành tập các lược đồ 3NF với phép tách không mất mát thông tin.
6. Cho lược đồ quan hệ R trên tập thuộc tính U={A, B, C, D, E, F, G, H} và tập phụ thuộc hàm
F = {AEF → CD, A → GH, EF → B, G → H}
Hãy tách lược đồ R thành tập các lược đồ ở dạng chuẩn 3 với phép tách không mất mát thông tin.
7. Cho lược đồ quan hệ R(U) với U = {A, B, C, D, E} và tập phụ thuộc hàm
F = {A → BC, B → C, AD → E}
Hãy tách lược đồ R thành tập các lược đồ 3NF với phép tách không mất mát thông tin.
8. Cho lược đồ quan hệ R(U) với U={A, B, C, D, E, G, H} và tập phụ thuộc hàm F xác định trên U như sau: F={A→BH, B→H, C→D, DE→G, D→E}.
Tính (AD)+ . AD có phải là một khóa của R không? Tại sao? Tìm một khóa của R.
Tách lược đồ R thành các lược đồ 3NF với phép tách không mất mát thông tin.
Chương 5
AN TOµN Vµ TOµN VÑN D÷ LIÖU