1 / 34

Chương 9: Phụ thuộc hàm (Functional Dependency)

Chương 9: Phụ thuộc hàm (Functional Dependency). Nội dung. Dư thừa dữ liệu Phụ thuộc hàm Hệ tiên đề Amstrong Bao đóng của tập phụ thuộc hàm Bao đóng của tập thuộc tính Tìm khóa. Dư thừa dữ liệu (Data redundancy).

Download Presentation

Chương 9: Phụ thuộc hàm (Functional Dependency)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chương 9: Phụ thuộc hàm(Functional Dependency)

  2. Nội dung • Dư thừa dữ liệu • Phụ thuộc hàm • Hệ tiên đề Amstrong • Bao đóng của tập phụ thuộc hàm • Bao đóng của tập thuộc tính • Tìm khóa

  3. Dư thừa dữ liệu(Data redundancy) • Mục đích của thiết kế CSDL là gom các thuộc tính thành các quan hệ sao cho giảm thiểu dư thừa dữ liệu • Hậu quả của dư thừa dữ liệu: • Lãng phí không gian đĩa • Các bất thường khi cập nhật • Ba loại bất thường: • Bất thường khi thêm vào • Bất thường khi xóa bỏ • Bất thường khi sửa đổi

  4. Phụ thuộc hàm(Functional Dependency) • Phụ thuộc hàm mô tả mối liên hệ giữa các thuộc tính • Dựa vào phụ thuộc hàm để thiết kế lại CSDL, loại bỏ các dư thừa dữ liệu

  5. Phụ thuộc hàm(Functional Dependency) • Cho lược đồ quan hệ R(U), r là 1 quan hệ bất kỳ trên R, X và Y là 2 tập thuộc tính con. • Định nghĩa: Phụ thuộc hàm (FD) f: X  Y trên lược đồ quan hệ R nếu và chỉ nếu mỗi giá trị X trong r có quan hệ chính xác với 1 giá trị Y trong r. Nghĩa là bất kể khi nào 2 bộ của r có cùng giá trị X thì cũng có cùng giá trị Y. t1, t2  r(R): t1[X] = t2[X]  t1[Y]= t2[Y]

  6. Phụ thuộc hàm(Functional Dependency) X là vế trái, ký hiệu left(f) hay còn gọi là determinant Y là vế phải, ký hiệu right(f) hay còn gọi là dependent

  7. Phụ thuộc hàm(Functional Dependency -FD) • Phụ thuộc hàm là 1 đặc điểm ngữ nghĩa của các thuộc tính, được xem là 1 ràng buộc giữa các thuộc tính. • Ví dụ: Một nhân viên chỉ có 1 tiền lương nhưng nhiều nhân viên có thể có cùng 1 mức lương Emp_ID  Salary Salary -/-> Emp_ID

  8. Phụ thuộc hàm(Functional Dependency -FD) • Nếu X là 1 candidate key thì tất cả các thuộc tính Y của lược đồ R sẽ phải phụ thuộc hàm vào X • Ví dụ: trong lược đồ PROFESSOR có ProfId là primary key nên: ProfId  Name, Qualification • Có 1 số FD trong lược đồ sẽ gây ra dư thừa dữ liệu.

  9. Ví dụ FD và dư thừa dữ liệu • Xét lược đồ PERSON(SSN, Name, Address,Hobby) với quy tắc là 1 người có thể có nhiều sở thích (hobby) • SSN,Hobby  SSN, Name, Address,Hobby • Bất thường xảy ra khi một người có nhiều sở thích thay đổi địa chỉ

  10. Giải thuật kiểm tra phụ thuộc hàm • Bài toán: cho quan hệ r và 1 phụ thuộc hàm f:X Y. Kiểm tra xem r thỏa mãn f hay không? • Function Satisfies(r,f:X Y) • Sắp thứ tự các bộ trong r theo các thuộc tính của X • If mỗi tập các bộ có cùng giá trị X thì có cùng giá trị Y then • Satisfies = true • Else • Satisfies = false

  11. Tập phụ thuộc hàm • Gọi F là 1 tập phụ thuộc hàm trên R nếu mọi phụ thuộc hàm trong F đều là phụ thuộc hàm trên R • Phụ thuộc hàm tầm thường ( trivial FD) hay phụ thuộc hàm hiển nhiên x Y nếu Y  X • Số tập con có thể có của R = {A1,A2,...,An} là 2n. Ứng với mỗi tập con sẽ có tối đa 2n. Số FD tối đa có thể có trong 1 lược đồ là 22n.

  12. Tập phụ thuộc hàm • FD được dùng để thể hiện các ràng buộc bảo toàn (integrity constraint), vì vậy DBMS cần phải quản lý các FD. • Với 1 tập S chứa toàn bộ các FD của 1 lược đồ, có cách nào tìm ra 1 tập T  S sao cho mọi FD của S đều ngầm suy từ các FD của T. Khi đó, DBMS chỉ quản lý các FD của T, các FD trong S sẽ được quản lý một cách tự động.

  13. Hệ tiên đề Amstrong • Phụ thuộc hàm XY được suy diễn luận lý từ F nếu mọi quan hệ thỏa mãn mọi phụ thuộc hàm trong F thì cũng thỏa mãn XY • Ký hiệu F|=XY • F bao hàm (implies) XY • XY được suy diễn theo quan hệ từ F

  14. Hệ tiên đề Amstrong • Quy tắc suy diễn (inference rule): nếu 1 quan hệ thỏa mãn 1 số phụ thuộc hàm nào đó thì quan hệ này cũng thỏa mãn 1 số phụ thuộc hàm khác

  15. Hệ tiên đề Amstrong • Các tiên đề suy diễn: • F1. Phản xạ (reflexivity): YX  XY • F2. Gia tăng (augmentation): XY  XZ YZ • F3. Bắc cầu (transitivity): XY và YZ  X Z

  16. Hệ tiên đề Amstrong • F4. Hợp (additivity): XY và XZ  X YZ • F5. Chiếu (projectivity): XYZ  X Y • F6. Bắc cầu giả (pseudotransitivity): XY và YZW  XZ W

  17. Bao đóng của tập phụ thuộc hàm • Bao đóng (closure) của tập phụ thuộc hàm F là 1 tập phụ thuộc hàm nhỏ nhất chứa F sao cho không thể áp dụng hệ tiên đề Amstrong trên tập này để tạo ra 1 phụ thuộc hàm khác không có trong tập hợp này • Ký hiệu F+ • F+ là 1 tập hợp các FD được suy diễn từ F

  18. Các tính chất của bao đóng của tập phụ thuộc hàm • Tính phản xạ: với mọi tập phụ thuộc hàm F+ ta luôn có F  F+ • Tính đơn điệu: nếu F  G thì F+  G+ • Tính lũy đẳng: với mọi tập phụ thuộc hàm F ta luôn có (F+)+ = F+.

  19. Hệ tiên đề Amstrong • Hệ tiên đề Amstrong là đúng đắn (sound)  các phụ thuộc hàm suy diễn từ F (tập phụ thuộc hàm trên r) theo hệ tiên đề Amstrong cũng là một phụ thuộc hàm trên r • Hệ tiên đề Amstrong là toàn vẹn (completeness)  bảo đảm rằng f  F+ nếu và chỉ nếu f là 1 FD được suy diễn

  20. Phụ thuộc hàm tương đương • Nếu F và G là 2 tập FD. F suy diễn G ( F entails G) nếu F suy diễn được tất cả các FD có trong G. • F và G là tương đương nhau nếu F suy diễn G và G suy diễn F

  21. Kiểm tra các tập FD tương đương • Input: F,G – các tập FD • Output: true nếu F tương đương G, false nếu ngược lại For each f F do if G does not entail f then return false For each g  G do if G does not entail f then return false Return true

  22. Ví dụ • Hãy khảo sát 2 tập FD sau: • F={ ACB, AC, DA} • G={AB, AC, DA, DB} F và G có tương đương nhau không??? Từ AC + Tiên đề F2  AAC (1) Từ (1)+ ACB + tiên đề F3  AB Từ DA + AB + tiên đề F3  D B F suy diễn G Tương tự khi xét G suy diễn F

  23. Bao đóng của tập phụ thuộc hàm • Ví dụ cho F={AB C, CB} trên r(ABC) • F+={AA, ABA, ACA, ABCA, BB, ABB, BCB, ABCB, CC, ACC, BCC, ABCC, ABAB, ABCAB, ACAC, ABCAC, BCBC, ABCBC, ABCABC, ABC, ABAC, ABBC, ABABC, CB,CBC, ACB, ACAB }

  24. Bao đóng của tập thuộc tính • Bao đóng của tập thuộc tính X dựa trên một tập phụ thuộc hàm F (closure of X under F) là 1 tập thuộc tính Y sao cho: • XY F+ • XZ F+: Z Y Hoặc = {A|XA  F+}

  25. Giải thuật tìm bao đóng của tập thuộc tính trên tập phụ thuộc hàm • Input: tập thuộc tính X và tập phụ thuộc hàm F • Output: bao đóng của X dựa trên F Procedure Closure(X,F,Closure_X) Begin Closure_X:=X; repeat Old_X := Closure_X; for mỗi WZ trong F do if W  Closure_X then Closure_X :=Closure_X  Z; until Closure_X = Old_X; End;

  26. Ví dụ tìm bao đóng của X • Cho R(A,B,C,D,E,F) và tập F={f1:DB, f2: AC, f3: ADE, f4:CF} • 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 ???

  27. Kiểm tra thành viên trong F+ • Để xác định F|= XY, cần kiểm tra X Y  F+ • Giải thuật: • Nhập: phụ thuộc hàm XY và tập F • Xuất: true nếu F|= XY, ngược lại là false Function Member(X,Y,Z) Begin if Y  Closure(X,F) then Member = true else Member = false; End

  28. Ví dụ kiểm tra phụ thuộc hàm • Cho F={DB, AC, ADE, CB}. Kiểm tra F có bao hàm AB?? - Tìm A+F?  A+F = {ACB} - Do B  A+F nên F bao hàm AB

  29. Giải thuật tìm khóa của lược đồ quan hệ • Nhập: R(U) và tập phụ thuộc hàm F • Xuất: tập hợp K bao gồm tất cả khóa của R • Tập thuộc tính nguồn (TN) chứa tất cả các thuộc tính xuất hiện ở vế trái và không xuất hiện ở vế phải của các phụ thuộc hàm và các thuộc tính không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm TN=U- fF right(f)

  30. Giải thuật tìm khóa của lược đồ quan hệ • Tập thuộc tính đích (TD) chứa tất cả các thuộc tính có xuất hiện ở vế phải và không xuất hiện ở vế trái của các 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 cả các thuộc tính xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm

  31. Thuật toán tìm tất cả 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ệ chỉ có 1 khóa K K=TN Kết thúc Ngược lại qua bước 3 • Bước 3: tìm tất cả các tập con Xi của tập trung gian TG …..

  32. Thuật toán tìm tất cả khóa (tt) • Bước 4: tìm các siêu khóa Si bằng cách  Xi if (TN Xi)+ = Q+ then Si = TN Xi • Bước 5: tìm khóa bằng cách loại bỏ các siêu khóa không tối tiểu  Si, Sj  S if Si Sj then Loại Sj ra khỏi tập siêu khóa S S còn lại chính là tập khóa cần tìm

  33. Ví dụ 1 • Cho R(A,B,C,D,E,F) và F={DB, AC, ADE, CF}. Tìm tất cả các khóa của R • B1: TN={AD}, TG={C} • Xi là các tập con của TG

  34. Ví dụ 2 • Cho R(A,B,C,D,E,F) và F={AD, CAF, AB EC}. Tìm khóa của R? • TN={B} , TG={AC} • Khóa của R là {AB} và {BC}

More Related