Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
1,01 MB
Nội dung
Chương 9: Phụ thuộc hàm (Functional Dependency) Nội dung Dư thừa liệu Phụ thuộc hàm Hệ tiên đề Amstrong Bao đóng tập phụ thuộc hàm Bao đóng tập thuộc tính Tìm khóa Dư thừa liệu (Data redundancy) Mục đích thiết kế CSDL gom thuộc tính thành quan hệ cho giảm thiểu dư thừa liệu Hậu dư thừa liệu: ◦ Lãng phí khơng gian đĩa ◦ Các bất thường cập nhật Ba loại bất thường: ◦ Bất thường thêm vào ◦ Bất thường xóa bỏ ◦ Bất thường sửa đổi Ví dụ SSN 111111111 111111111 555666777 555666777 987654321 Name John Doe John Doe Mary Doe Mary Doe Bart Simpson Address 123 Main St 123 Main St Lake Dr Lake Dr Fox TV Hobby Stamps Coins Hiking Skating Acting Khóa bảng PERSON? SSN + Hobby Thông tin cá nhân bị trùng lặp Các bất thường: ◦ Nếu John thay đổi chỗ update anomaly ◦ Nếu bổ sung thêm người tên Homer Simpson chưa biết sở thích tạo ghi insertion anomaly ◦ Nếu Bart Simpson khơng có sở thích xóa sở thích Acting Delete anomaly Phụ thuộc hàm (Functional Dependency) Phụ thuộc hàm mô tả mối liên hệ thuộc tính Dựa vào phụ thuộc hàm để thiết kế lại CSDL, loại bỏ dư thừa liệu Phụ thuộc hàm (Functional Dependency) Cho lược đồ quan hệ R(U), r quan hệ R, X Y tập thuộc tính Định nghĩa: Phụ thuộc hàm (FD) f: X Y lược đồ quan hệ R giá trị X r có quan hệ xác với giá trị Y r Nghĩa r có giá trị X có giá trị Y ∀t1, t2 ∈ r(R): t1[X] = t2[X] ⇒ t1[Y]= t2[Y] Phụ thuộc hàm (Functional Dependency) X vế trái, ký hiệu left(f) hay gọi determinant Y vế phải, ký hiệu right(f) hay gọi dependent Phụ thuộc hàm (Functional Dependency -FD) Phụ thuộc hàm đặc điểm ngữ nghĩa thuộc tính, xem ràng buộc thuộc tính Ví dụ: Một nhân viên có mức lương nhiều nhân viên có mức lương Emp_ID Salary Salary -/-> Emp_ID Phụ thuộc hàm xác định dựa vào quy tắc nghiệp vụ xác định lược đồ quan hệ Phụ thuộc hàm (Functional Dependency -FD) Từ quy tắc bảo toàn thực thể X candidate key tất thuộc tính Y lược đồ R phải phụ thuộc hàm vào X Ví dụ: lược đồ PROFESSOR có ProfId primary key nên: ProfId Name, Qualification Có số FD lược đồ gây dư thừa liệu Ví dụ FD dư thừa liệu Xét lược đồ PERSON(SSN, Name, Address,Hobby) với quy tắc người có nhiều sở thích (hobby) ◦ SSN,Hobby SSN, Name, Address,Hobby Bất thường xảy người có nhiều sở thích thay đổi địa 10 Phụ thuộc hàm tương đương Nếu F G tập FD F suy diễn G ( F entails G) F suy diễn tất FD có G F G tương đương F suy diễn G G suy diễn F 24 Kiểm tra tập FD tương đương Input: F,G – tập FD Output: true F tương đương G, false ngược lại For each f ∈F if G does not entail f then return false For each g ∈ G if G does not entail f then return false Return true 25 Ví dụ Hãy khảo sát tập FD sau: ◦ F={ ACB, AC, DA} ◦ G={AB, AC, DA, DB} F G có tương đương khơng??? Từ AC + Tiên đề F2 AAC (1) Từ (1)+ ACB + tiên đề F3 AB Từ DA + AB + tiên đề F3 D B F suy diễn G Tương tự xét G suy diễn F 26 Bao đóng tập phụ thuộc hàm Ví dụ cho F={AB F+={AA, ABA, C, CB} r(ABC) ACA, ABCA, BB, ABB, BCB, ABCB, CC, ACC, BCC, ABCC, ABAB, ABCAB, ACAC, ABCAC, BCBC, ABCBC, ABCABC, ABC, ABAC, ABBC, ABABC, CB,CBC, ACB, ACAB } 27 Bao đóng tập thuộc tính Bao đóng tập thuộc tính X dựa tập phụ thuộc hàm F (closure of X under F) tập thuộc tính Y cho: ◦ ∃XY∈ F+ ◦ ∀XZ∈ F+: Z ⊆Y Hoặc X + F = {A|XA ∈ F+} 28 Giải thuật tìm bao đóng tập thuộc tính tập phụ thuộc hàm Input: tập thuộc tính X tập phụ thuộc hàm F Output: bao đóng X dựa F Procedure Closure(X,F,Closure_X) Begin Closure_X:=X; repeat Old_X := Closure_X; for WZ F if W ⊆ Closure_X then Closure_X :=Closure_X ∪ Z; until Closure_X = Old_X; End; 29 Ví dụ tìm bao đóng X Cho R(A,B,C,D,E,F) tập F={f1:DB, f2: AC, f3: ADE, f4:CF} Tìm A+F: ◦ A+F ={A} ◦ Duyệt F lần 1: Từ f2 A+F = {AC}; Từ f4 A+F = {ACF} ◦ Duyệt F lần 2: A+F không thay đổi A+F = {ACF} Tìm {AD}+F ??? 30 Kiểm tra thành viên F+ Để xác định F ⊨ XY, cần kiểm tra X Y ∈ F+ Giải thuật: ◦ Nhập: phụ thuộc hàm XY tập F ◦ Xuất: true F⊨ XY, ngược lại false Function Member(X,Y,F) Begin if Y ⊆ Closure(X,F) then Member = true else Member = false; End 31 Ví dụ kiểm tra phụ thuộc hàm Cho F={DB, AC, ADE, CB} Kiểm tra F có bao hàm AB?? - Tìm A+F? A+F = {ACB} - Do B ∈ A+F nên F bao hàm AB 32 Giải thuật tìm khóa lược đồ quan hệ Nhập: R(U) tập phụ thuộc hàm F Xuất: tập hợp K bao gồm tất khóa R Tập thuộc tính nguồn (TN) chứa tất thuộc tính xuất vế trái không xuất vế phải phụ thuộc hàm thuộc tính khơng xuất vế trái lẫn vế phải phụ thuộc hàm TN=U- ∪∀f∈F right(f) 33 Giải thuật tìm khóa lược đồ quan hệ Tập thuộc tính đích (TD) chứa tất thuộc tính có xuất vế phải không xuất vế trái phụ thuộc hàm TD= ∪∀f∈F right(f) - ∪∀f∈F left(f) Tập thuộc tính trung gian (TG) chứa tất thuộc tính xuất vế trái lẫn vế phải phụ thuộc hàm 34 Thuật tốn tìm tất khóa Bước 1: tạo tập thuộc tính nguồn TN Tập thuộc tính trung gian TG Bước 2: if TG = ∅ then lược đồ quan hệ có khóa K K=TN Kết thúc Ngược lại qua bước Bước 3: tìm tất tập Xi tập trung gian TG … 35 Thuật tốn tìm tất khóa (tt) Bước 4: tìm siêu khóa Si cách ∀ Xi if (TN ∪ Xi)+ = Q+ then Si = TN ∪ Xi Bước 5: tìm khóa cách loại bỏ siêu khóa khơng tối tiểu ∀ Si, Sj ∈ S if Si⊂ Sj then Loại Sj khỏi tập siêu khóa S S cịn lại tập khóa cần tìm 36 Ví dụ Cho R(A,B,C,D,E,F) F={DB, AC, ADE, CF} Tìm tất khóa R B1: TN={AD}, TG={C} Xi tập TG Xi Xi ∪ TN (Xi ∪ TN)+ Siêu khóa ∅ AD ADBCEF=R+ AD C ADC ADBCEF=R+ ADC Khóa AD 37 Ví dụ Cho R(A,B,C,D,E,F) F={AD, CAF, AB EC} Tìm khóa R? TN={B} , TG={AC} Khóa R {AB} {BC} Xi Xi ∪ TN (Xi ∪ TN)+ ∅ B CB AB ABC ABCDEF=R+ ABCDEF=R+ ABCDEF=R+ Khóa B C A AC Siêu khóa BC AB ABC BC AB 38 ... Các phụ thuộc hàm quan hệ R là: ◦A→ B ◦A→ D ◦ B,C → E,F Các quan hệ r(R) có vi phạm FD không? 12 Tập phụ thuộc hàm Gọi F tập phụ thuộc hàm R phụ thuộc hàm F phụ thuộc hàm R Phụ thuộc hàm. .. anomaly Phụ thuộc hàm (Functional Dependency) Phụ thuộc hàm mô tả mối liên hệ thuộc tính Dựa vào phụ thuộc hàm để thiết kế lại CSDL, loại bỏ dư thừa liệu Phụ thuộc hàm (Functional Dependency). .. Phụ thuộc hàm (Functional Dependency) X vế trái, ký hiệu left(f) hay gọi determinant Y vế phải, ký hiệu right(f) hay gọi dependent Phụ thuộc hàm (Functional Dependency -FD) Phụ thuộc hàm