Bài giảng môn cơ sở dữ liệu nâng cao CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM VÀ PHỦ CỰC TIỂU. Phần I: Cơ sở lý thuyết phụ thuộc hàm 1. Qui ước về các ký hiệu 2. Phụ thuộc hàm 3. Hệ tiên đề Amstrong 4. Bao đóng của tập thuộc tính (X+) 5. Thuật toán (thuật toán tính bao đóng của X). Phần II: Phủ cực tiểu (Phủ tối thiểu) 1. Tập phụ thuộc hàm tương đương 2. Phủ cực tiểu của một lược đồ quan hệ 3. Phủ cực tiểu của tập phụ thuộc hàm 4. Thuật toán (tìm một phủ tối thiểu của F)
ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM VÀ PHỦ CỰC TIỂU Cơ sở liệu nâng cao GV hướng dẫn: TS Hoàng Quang Nhóm thực hiện: Lê Bá Minh Phong Nguyễn Thị Thanh Tâm Trần Thị Thành Trần Như Đăng Tuyên Nguyễn Vũ Cát Tường Nội dung Phần I: Cơ sở lý thuyết phụ thuộc hàm Qui ước ký hiệu Phụ thuộc hàm (Functional Dependency) Hệ tiên đề Amstrong Bao đóng tập thuộc tính (X+) Thuật tốn (thuật tốn tính bao đóng X) Phần II: Phủ cực tiểu (Phủ tối thiểu) Tập phụ thuộc hàm tương đương Phủ cực tiểu lược đồ quan hệ Phủ cực tiểu tập phụ thuộc hàm Thuật tốn (tìm phủ tối thiểu F) Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Qui ước ký hiệu Các thuộc tính: A, B, C, …, A1, A2, … Tập thuộc tính: X,Y, Z, …; ABC={A, B, C} Hợp tập thuộc tính: XY=X∪Y; XYZ = X∪Y∪Z; … Lược đồ quan hệ: R, S, …, RS = (SC:Set of Constraints) Quan hệ: r, s, … Bộ: t, t1, t2, … Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Phụ thuộc hàm (Functional Dependency) Định nghĩa: (Quan hệ thoả mãn phụ thuộc hàm) Cho lược đồ quan hệ R = , cho X, Y ⊆ U Xét quan hệ r R Quan hệ r gọi thoả phụ thuộc hàm: X → Y (đọc X xác định Y, Y phụ thuộc hàm vào X) nếu: ∀ t1, t2 ∈ r cho: t1[X] = t2[X] ⇒ t1[Y] = t2[Y] Do đó, r khơng thoả X→Y ⇔ ∃ t1,t2 ∈ r : t1[X] = t2[X] t1[Y] ≠ t2[Y] Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Phụ thuộc hàm (Functional Dependency) Ví dụ: A B C D r = a a b b c c c a b a a a r không thoả : A → B r thoả : AB → C r không thoả : B → C r thoả : C → A r thoả : CD → A r không thoả : AD → C r thỏa? Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Phụ thuộc hàm (Functional Dependency) * Thuật toán: Kiểm tra quan hệ r = {t1, t2, …, tn} có thoả mãn phụ thuộc hàm X → Y khơng? Function Ktra(r, X, Y); Begin temp := true ; for i := to n-1 for j := i+1 to n if (ti[X]= tj[X] and ti[Y]< > tj[Y]) then begin temp:= false; break; end; Ktra:= temp; End; Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Phụ thuộc hàm (Functional Dependency) Định nghĩa: (Lược đồ quan hệ thoả mãn phụ thuộc hàm) Cho lược đồ quan hệ R = , cho X, Y ⊆ U R gọi thoả phụ thuộc hàm X→Y, nếu: ∀ r ∈ R: r thoả X→Y Hay: ∀ r ∈ R, ∀ t1, t2 ∈ r: t1[X] = t2[X] ⇒ t1[Y] = t2[Y] Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Phụ thuộc hàm (Functional Dependency) * Lưu ý: - Thông thường ta quy ước tập ràng buộc SC tập phụ thuộc hàm ký hiệu F - Một lược đồ quan hệ ký hiệu R = R phải thoả tất phụ thuộc hàm F * Nhận xét: Cho lược đồ quan hệ R = : X, Y ⊆ U Nếu X→Y suy từ F, ký hiệu: F╞ X→Y, hay ta nói X→Y phụ thuộc hàm hệ F 10 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Tập phụ thuộc hàm tương đương Chứng minh (⇒): (⇐): F ⊆ G + (1) F ⇔ G ⇔ G ⊆ F + ( 2) Dùng bổ đề trên: F ⊆ F+ = G+ ⇒ (1) G ⊆ G+ = F+ ⇒ (2) F ⊆ G+ ⇒ (F)+ ⊆ (G+)+ = G+ (bổ đề & 2) G ⊆ F+ ⇒ (G)+ ⊆ (F+)+ = F+ (bổ đề & 2) Vậy F+ = G+, F ⇔G * Ý nghĩa: Cho phép xây dựng thuật toán để kiểm tra xem hai tập phụ thuộc hàm có tương đương với hay khơng 27 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Tập phụ thuộc hàm tương đương * Thuật toán kiểm tra F tương đương G Procedure KTTD(F, G) ; Begin {Kiểm tra F ⊆ G+} For each X→Y ∈ F If X+G ⊇ Y then begin write(’F G không tương đương’); exit; end; {Kiểm tra G ⊆ F+} For each X→Y ∈ G If X+F ⊇ Y then begin write(’F G không tương đương’); exit; end; writeln(’F tương đương với G’); End; 28 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Tập phụ thuộc hàm tương đương * Bổ đề: Cho R = , X ⊆ U, Ai ∈ U (i = n) Ta có: X → A1 ∈F + + X → A ∈F X → A1A A n ∈F+ ⇔ M X → A n ∈F + * Tính chất: Cho R= Khi đó, tồn phụ thuộc hàm G tương đương F cho vế phải phụ thuộc hàm G có thuộc tính 29 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu lược đồ quan hệ Định nghĩa: Cho R = , F gọi phủ cực tiểu R khi: a) Vế phải phụ thuộc hàm F có thuộc tính b) Mọi phụ thuộc hàm F khơng có thuộc tính dư thừa vế trái c) Trong F khơng có phụ thuộc hàm dư thừa 30 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu lược đồ quan hệ * Ví dụ 1: Cho R = , U=ABC, F = {A→B, AB→C} Hỏi F có phải phủ tối thiểu R không? - Kiểm tra điều kiện a: - Kiểm tra điều kiện b: Xét AB→C ∈ F, ta có: Xét thuộc tính B có dư thừa hay khơng? A+F = ABC ⊇ C ⇒ Thuộc tính B vế trái phụ thuộc hàm AB→C dư thừa ⇒ F phủ cực tiểu R 31 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu lược đồ quan hệ * Ví dụ 2: Cho R = , U=ABC, F = {A→B, B→C, A→C} Hỏi F có phải phủ tối thiểu R không? - Kiểm tra điều kiện a: - Kiểm tra điều kiện b: - Kiểm tra điều kiện c: Xét A→C ∈ F, ta có: F \ {A→C} = {A→B, B→C} A+{A→B, B→C} = ABC ⊇ C ⇒ Trong F có phụ thuộc hàm A→C dư thừa ⇒ F phủ cực tiểu R 32 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu tập phụ thuộc hàm Định nghĩa: Cho R = Tập phụ thuộc hàm G gọi phủ cực tiểu F, thoả hai điều kiện: +G⇔F + G phủ cực tiểu R= * Lưu ý: Phủ cực tiểu tập phụ thuộc hàm không 33 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu tập phụ thuộc hàm * Ví dụ: Cho R = , U = ABC, F = {A→B, B→A, A→C, C→A, B→C, C→B} Khi đó, F có phủ cực tiểu khác sau: • G1 = {A→B, B→A, A→C, C→A} • G2 = {A→B, B→A, B→C, C→B} • G3 = {A→B, B→C, C→A} • 34 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) • Vào: R = • Ra: G (G phủ cực tiểu F) • Phương pháp: 35 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) • Phương pháp: Procedure TimPhuCucTieu(F); Phân rã phụ thuộc hàm F mà vế phải có thuộc tính trở lên (làm cho F thoả điều kiện a) Cụ thể: X → A X → A1A A n (Làm cho F thoả điều kiện b) For (each X → A ∈ F) For (each B ∈ X) If ((X \ {B})+F ⊇ A) then X := X \ {B}; (Làm cho F thoả điều kiện c) For (each X → A ∈ F) If (X+F\{X→A} ⊇ A) then F := F \ {X→A}; Kết luận: G := F; End; X → A ˆ % Phan → M X → A n 36 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) * Ví dụ: Cho R = , U = ABC, F = {A → BC, AB→C} Tìm phủ cực tiểu F? - Bước 1: F = {A → B, A → C, AB → C} - Bước 2: Xét AB → C ∈ F, ta có: + A+F = ABC ⊇ C → thuộc tính B dư thừa + B +F = B ⊇ C → thuộc tính A khơng dư thừa ⇒ F = {A → B, A → C} - Bước 3: Xét A → B: A+F\{A→B} = AC ⊇ B (A → B F không dư thừa) Xét A → C: A+F\{A → C} = AB ⊇ C (A → C F không dư thừa) *Kết luận Vậy G = {A → B, A → C} phủ cực tiểu F cần tìm 37 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) * Lưu ý: Trong thuật tốn tìm phủ cực tiểu F, thực làm cho F thoả điều kiện c trước làm cho F thoả điều kiện b (Nói cách khác, việc làm cho F thoả điều kiện c phải thực sau làm cho F thoả điều kiện b) 38 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) * Phương pháp sai! (Bước thực trước bước 2) Xét ví dụ sau: Cho R = , U = ABD, F = {B→D, B→A, D→A, AB→D} Nếu ta loại bỏ phụ thuộc hàm dư thừa trước, xét: • B+F\{B→D} = BAD ⊇ D ⇒ loại bỏ B → D ⇒ F = {B→A, D→A, AB→D} • B+F\{B→A} = B ⊇ A • D+F\{D→A} = D ⊇ A • (AB)+F\{AB→D} = AB ⊇ D ⇒ Tập phụ thuộc hàm F lúc là: {B→A, D→A,AB →D} Tiếp đến, loại bỏ thuộc tính dư thừa vế trái, xét: AB→ D Ta có: B+F = BAD ⊇ D ⇒ loại bỏ A ⇒ F = {B→A, D→A, B→D} Thế nhưng, ta thấy B→A ∈ F phụ thuộc hàm dư thừa! 39 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Thuật tốn (tìm phủ cực tiểu F) * Phương pháp đúng: VD: R = , U = ABD, F = {B→D, B→A, D→A, AB→D} Loại bỏ thuộc tính dư thừa vế trái, xét: AB→D Ta có: B+F = BAD ⊇ D ⇒ loại bỏ A ⇒ F = {B→A, D→A, B→D} Loại bỏ phụ thuộc hàm dư thừa: + B→D: Ta có: B+F\{B→D} = BA ⊇ D + B→A: Ta có: B+F\{B→A} = BDA ⊇ A ⇒ loại bỏ B→A ⇒ F = {D→A, B→D} + D→A: Ta có: D+F\{D→A} = D ⊇ A *Kết luận: F = {D→A, B→D} 40 Cám ơn Thầy giáo bạn quan tâm lắng nghe! 41 ... Trong F có phụ thuộc hàm A→C dư thừa ⇒ F phủ cực tiểu R 32 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu tập phụ thuộc hàm Định nghĩa: Cho R = Tập phụ thuộc hàm G gọi phủ cực tiểu F,... cực tiểu (Phủ tối thiểu) Tập phụ thuộc hàm tương đương Phủ cực tiểu lược đồ quan hệ Phủ cực tiểu tập phụ thuộc hàm Thuật tốn (tìm phủ tối thiểu F) Phần I: CƠ SỞ LÝ THUYẾT PHỤ THUỘC HÀM Qui ước... thoả hai điều kiện: +G⇔F + G phủ cực tiểu R= * Lưu ý: Phủ cực tiểu tập phụ thuộc hàm không 33 Phần II: PHỦ CỰC TIỂU (PHỦ TỐI THIỂU) Phủ cực tiểu tập phụ thuộc hàm * Ví dụ: Cho R = ,