2. Phụ thuộc hàm (Function Defendency-FD)
2.8. Tập phụ thuộc hàm tối thiểu
Các tập phụ thuộc hàm tương đương ? ĐN bao đóng của tập phụ thuộc hàm
- Hai phụ thuộc hàm gọi là tương đương nếu F+=G+ (nói cách khác F phủ G và G phủ F)
- Ký hiệu F∼G
Kiểm tra 2 tập phụ thuộc hàm có tương đương hay không
+ Lấy mỗi phụ thuộc hàm X→Y ∈F kiểm tra X→Y∈G+ không? + Lấy mỗi phụ thuộc hàm X’→Y’ ∈G kiểm tra X’→Y’∈F+ không? VD: Cho quan hệ r(U) với U={A,B,D,E,F,G}
F={A→BC, D→E, AD→F} G={A→B, A→C, D→E, AD→F} Kiểm tra F∼G?
+ Kiểm tra mỗi phụ thuộc hàm ∈G có thuộc F+ hay không Kiểm tra A→B, ta có A→BC nên A→B ∈F vậy A→B ∈F+
Kiểm tra A→C, ta có A→BC nên A→C∈F vậy A→C ∈F+
Kiểm tra D→E và AD→F đều thuộc F Vậy F phủ G
+ Kiểm tra mỗi phụ thuộc hàm ∈F có thuộc G+ hay không
Kiểm tra A→BC, ta có A→B, và A→C nên A→BC ∈F vậy A→BC ∈G+
Kiểm tra D→E và AD→F đều thuộc F Vậy G phủ F
Kết luận F∼G
Tập phụ thuộc hàm tối thiểu: Tập phụ thuộc hàm F được gọi là tối thiểu nếu nó thoả mãn 3 điều kiện sau:
{ } ∪ = −− i i i i A K K K 1 1
} { } { − → ∪ → = 1 - Fi Zi Ri Li \ 1 Ri Fi Fi
− F không dư thừa phải mỗi phụ thuộc hàm của F đều không dư thừa phải mỗi phụ thuộc hàm của F có vế phải chỉ gồm 1 thuộc tính
− F không dư thừa phụ thuộc hàm không tồn tại phụ thuộc hàm dạng X→Y sao cho (F-{X->Y}+=F+
− F không dư thừa trái mọi phụ thuộc hàm F không dư thừa trái. Dư thừa trái nghĩa là X→Y nếu ∃ A∈X mà (X-{A})→ Y.
Định lý: Mỗi tập phụ thuộc hàm F đều tương đương với 1 tập phụ thuộc hàm tối thiểu F’ nào đó. Khi đó F’ gọi là phủ tối thiểu của F
Thuật toán: Tìm phủ tối thiểu của 1 tập phụ thuộc hàm
Input: Cho lược đồ quan hệ R(U)
Tập phụ thuộc hàm F (Li->Ri, i=1…m) Output: Phủ tối thiểu F’ của F
Action:
1. Xác định tập phụ thuộc hàm F1 ∼ F. F1 không dư thừa phải. Nếu tồn tại phụ thuộc hàm dạng X→A1A2..An thì ta tách thành phụ thuộc hàm dạng X →A1, X→A2,....X,→An
2. Xác định tập phụ thuộc hàm F2 ∼ F1. F2 không dư thừa phụ thuộc hàm. Bước 2.0: Đặt F0=F1
nếu Fi-1\Li→Ri∼ Fi-1
Bước 2.i: Tính nếu ngược lại
Bước 3: Xác định tập phụ thuộc hàm F3∼ F2 không dư thừa trái. Bước 3.0: Đặt F0=F2
Bước 3.i: Tính
nếu ∃Zi⊂Li sao cho Fi-1\{Li→Ri} ∪ {Zi→Ri} ∼Fi-1
Nếu ngược lại
VD1: Cho lược đồ quan hệ r(U), U={A,B,C,D,E,F,G}
F={A→BC, D→E, AD→F} Tìm phủ tối thiểu của F
+ Xác định F1∼F, F1 không dư thừa phải
} { − − → = 1 - Fi Ri Li 1 Fi Fi
F1={A→B, A→C, D→E, AD→F}
+ Xác định F2 ∼ F1 không dư thừa phụ thuộc hàm B0: Đặt F0=F1={A→B, A→C, D→E, AD→F}
B1: Bỏ A→B, A+=AC, không chứa B →không bỏ được Bỏ A→C, A+=AB, không chứa C →không bỏ được Bỏ D→E, không bỏ được
Bỏ AD→F, không bỏ được F2=F1
+ Xác định F3∼F2, F3 không dư thừa trái
B0: Đặt F0=F2={A→B, A→C, D→E, AD→F}
B1: Chỉ phụ thuộc hàm AD→F là có nhiều hơn 1 thuộc tính ở vế phải của phụ thuộc hàm.
Ta bỏ A, kiểm tra D→F, D+ = DE không chứa F, nên không bỏ được Ta bỏ D, kiểm tra A→F, A+=ABC không chứa F, nên không bỏ được Kết luận: F’={A→B, A→C, D→E, AD→F}
VD2: Cho lược đồ quan hệ R(U, F), U={A,B,C,D,E,F,G,H}
F={A→CD, C→D, EG→F, B→H, E→G}, tìm phủ tối thiểu của F + Xác định F1∼F, F1 không dư thừa phải
F1={A→C, A→D, C→D, EG→F, B→H, E→G} + Xác định F2 ∼ F1 không dư thừa phụ thuộc hàm
B0: Đặt F0=F1={A→C, A→D, C→D, EG→F, B→H, E→G} B1: Bỏ A→C, A+=AD, không chứa C -> không bỏ được
Bỏ A→D, A+=CD chứa D, nên bỏ được FD A→D Bỏ C→D, không bỏ được
Bỏ EG→F, không bỏ được Bỏ B→H, không bỏ được Bỏ E→G, không bỏ được
F2={A→C, C→D, EG→F, B→H, E→G} + Xác định F3∼F2, F3 không dư thừa trái
Xét FD EG→F, bỏ E, G+=G không chứa F nên không bỏ được bỏ G, E+=EGF chứa F nên bỏ được G
Kết luận F’={A→C, C→D, E→F, B→H, E→G}
VD3: Cho lược đồ quan hệ R(U, F), U={A,B,C,D,E,F,G,H}
F={AEF→CD, A→GH, EF→B, G→H}, tìm phủ tối thiểu của F + Xác định F1∼F, F1 không dư thừa phải
F1={AEF→C, AEF→D, A→G, A→H, EF→B,G→H} + Xác định F2 ∼ F1 không dư thừa phụ thuộc hàm
F2={AEF→C, AEF→D, A→G, EF→B,G→H} + Xác định F3∼F2, F3 không dư thừa trái
F3=F2={AEF→C, AEF→D, A→G, EF→B,G→H} Kết luận F’={AEF→C, AEF→D, A→G, EF→B,G→H}