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

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

Embed Size (px)

DESCRIPTION

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). - PowerPoint PPT Presentation

Citation preview

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

11

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

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

22

Nội dungNội dung

Dư thừa dữ liệuDư thừa dữ liệu Phụ thuộc hàmPhụ thuộc hàm Hệ tiên đề AmstrongHệ tiên đề Amstrong Bao đóng của tập phụ thuộc hàmBao đóng của tập phụ thuộc hàm Bao đóng của tập thuộc tínhBao đóng của tập thuộc tính Tìm khóaTìm khóa

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

33

Dư thừa dữ liệuDư thừa dữ liệu(Data redundancy)(Data redundancy)

Mục đích của thiết kế CSDL là gom Mục đích của thiết kế CSDL là gom các thuộc tính thành các quan hệ sao các thuộc tính thành các quan hệ sao cho giảm thiểu dư thừa dữ liệu cho giảm thiểu dư thừa dữ liệu

Hậu quả của dư thừa dữ liệu:Hậu quả của dư thừa dữ liệu:• Lãng phí không gian đĩaLãng phí không gian đĩa• Các bất thường khi cập nhật Các bất thường khi cập nhật

Ba loại bất thường:Ba loại bất thường:• Bất thường khi thêm vàoBất thường khi thêm vào• Bất thường khi xóa bỏBất thường khi xóa bỏ• Bất thường khi sửa đổiBất thường khi sửa đổi

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

44

Phụ thuộc hàmPhụ thuộc hàm(Functional Dependency)(Functional Dependency)

Phụ thuộc hàm mô tả mối liên hệ Phụ thuộc hàm mô tả mối liên hệ giữa các thuộc tính giữa các thuộc tính

Dựa vào phụ thuộc hàm để thiết kế 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 lại CSDL, loại bỏ các dư thừa dữ liệu

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

55

Phụ thuộc hàmPhụ thuộc hàm(Functional Dependency)(Functional Dependency)

Cho lược đồ quan hệ R(U), r là 1 quan hệ 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 bất kỳ trên R, X và Y là 2 tập thuộc tính con.con.

Định nghĩa: Phụ thuộc hàm (FD) f: X Định nghĩa: Phụ thuộc hàm (FD) f: X Y Y trên lược đồ quan hệ R nếu và chỉ nếu mỗi 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ị 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 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 bộ của r có cùng giá trị X thì cũng có cùng giá trị Y.giá trị Y.

t1, t2 t1, t2 r(R): t1[X] = t2[X] r(R): t1[X] = t2[X] t1[Y]= t2[Y] t1[Y]= t2[Y]

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

66

Phụ thuộc hàmPhụ thuộc hàm(Functional Dependency)(Functional Dependency)

X là vế trái, ký hiệu left(f) hay còn gọi X là vế trái, ký hiệu left(f) hay còn gọi là determinantlà determinant

Y là vế phải, ký hiệu right(f) hay còn Y là vế phải, ký hiệu right(f) hay còn gọi là dependentgọi là dependent

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

77

Phụ thuộc hàmPhụ thuộc hàm(Functional Dependency -FD)(Functional Dependency -FD)

Phụ thuộc hàm là 1 Phụ thuộc hàm là 1 đặc điểm ngữ đặc điểm ngữ nghĩanghĩa của các thuộc tính, được xem của các thuộc tính, được xem là 1 ràng buộc giữa các thuộc tính.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 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ể lương nhưng nhiều nhân viên có thể có cùng 1 mức lươngcó cùng 1 mức lương

Emp_ID Emp_ID Salary Salary

Salary -/-> Emp_IDSalary -/-> Emp_ID

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

88

Phụ thuộc hàmPhụ thuộc hàm(Functional Dependency -FD)(Functional Dependency -FD)

Nếu X là 1 candidate key thì tất cả Nếu X là 1 candidate key thì tất cả các thuộc tính Y của lược đồ R sẽ các thuộc tính Y của lược đồ R sẽ phải phụ thuộc hàm vào X phải phụ thuộc hàm vào X

Ví dụ: trong lược đồ PROFESSOR có Ví dụ: trong lược đồ PROFESSOR có ProfId là primary key nên:ProfId là primary key nên:

ProfId ProfId Name, Qualification Name, Qualification Có 1 số FD trong lược đồ sẽ gây ra dư Có 1 số FD trong lược đồ sẽ gây ra dư

thừa dữ liệu.thừa dữ liệu.

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

99

Ví dụ FD và dư thừa dữ liệuVí dụ FD và dư thừa dữ liệu

Xét lược đồ PERSON(SSN, Name, Xét lược đồ PERSON(SSN, Name, Address,Hobby) với quy tắc là 1 người Address,Hobby) với quy tắc là 1 người có thể có nhiều sở thích (hobby)có thể có nhiều sở thích (hobby)• SSN,Hobby SSN,Hobby SSN, Name, Address,Hobby SSN, Name, Address,Hobby

Bất thường xảy ra khi một người có Bất thường xảy ra khi một người có nhiều sở thích thay đổi địa chỉnhiều sở thích thay đổi địa chỉ

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

1010

Giải thuật kiểm tra phụ thuộc hàmGiải thuật kiểm tra phụ thuộc hàm

Bài toán: cho quan hệ r và 1 phụ Bài toán: cho quan hệ r và 1 phụ thuộc hàm f:Xthuộc hàm f:X Y. Kiểm tra xem r Y. Kiểm tra xem r thỏa mãn f hay không?thỏa mãn f hay không?

Function Satisfies(r,f:XFunction Satisfies(r,f:X Y) Y)• Sắp thứ tự các bộ trong r theo các thuộc Sắp thứ tự các bộ trong r theo các thuộc

tính của Xtính của X• If mỗi tập các bộ có cùng giá trị X thì có If mỗi tập các bộ có cùng giá trị X thì có

cùng giá trị Y thencùng giá trị Y then Satisfies = trueSatisfies = true

• ElseElse Satisfies = falseSatisfies = false

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

1111

Tập phụ thuộc hàmTập phụ thuộc hàm

Gọi F là 1 tập phụ thuộc hàm trên R nếu 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ụ mọi phụ thuộc hàm trong F đều là phụ thuộc hàm trên Rthuộc hàm trên R

Phụ thuộc hàm tầm thường ( trivial FD) Phụ thuộc hàm tầm thường ( trivial FD) hay phụ thuộc hàm hiển nhiên xhay phụ thuộc hàm hiển nhiên x Y nếu Y Y nếu Y X X

Số tập con có thể có của R = Số tập con có thể có của R = {A1,A2,...,An} là 2{A1,A2,...,An} là 2nn. Ứng với mỗi tập con . Ứng với mỗi tập con sẽ có tối đa 2sẽ có tối đa 2nn. Số FD tối đa có thể có . Số FD tối đa có thể có trong 1 lược đồ là 2trong 1 lược đồ là 22n2n..

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

1212

Tập phụ thuộc hàmTập phụ thuộc hàm FD được dùng để thể hiện các ràng FD được dùng để thể hiện các ràng

buộc bảo toàn (integrity constraint), buộc bảo toàn (integrity constraint), vì vậy DBMS cần phải quản lý các FD.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 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 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 S sao cho mọi FD của S đều ngầm suy từ các FD của T. Khi đó, DBMS suy từ các FD của T. Khi đó, DBMS chỉ quản lý các FD của T, các FD 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ự trong S sẽ được quản lý một cách tự động.động.

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

1313

Hệ tiên đề AmstrongHệ tiên đề Amstrong

Phụ thuộc hàm XPhụ thuộc hàm XY được Y được suy diễn suy diễn luận lýluận lý từ F nếu mọi quan hệ thỏa từ F nếu mọi quan hệ thỏa mãn mọi phụ thuộc hàm trong F thì mãn mọi phụ thuộc hàm trong F thì cũng thỏa mãn Xcũng thỏa mãn XYY• Ký hiệu F|=XKý hiệu F|=XYY• F bao hàm (implies) XF bao hàm (implies) XYY• XXY được suy diễn theo quan hệ từ FY được suy diễn theo quan hệ từ F

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

1414

Hệ tiên đề AmstrongHệ tiên đề Amstrong

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

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

1515

Hệ tiên đề AmstrongHệ tiên đề Amstrong Các tiên đề suy diễn:Các tiên đề suy diễn:

• F1. Phản xạ (reflexivity): YF1. Phản xạ (reflexivity): YX X XXYY

• F2. Gia tăng (augmentation): XF2. Gia tăng (augmentation): XY Y XZ XZ YZYZ

• F3. Bắc cầu (transitivity): XF3. Bắc cầu (transitivity): XY và Y và YYZ Z X X ZZ

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

1616

Hệ tiên đề AmstrongHệ tiên đề Amstrong

F4. Hợp (additivity): XF4. Hợp (additivity): XY và XY và XZ Z X X YZYZ F5. Chiếu (projectivity): XF5. Chiếu (projectivity): XYZ YZ X X YY F6. Bắc cầu giả (pseudotransitivity): XF6. Bắc cầu giả (pseudotransitivity): XY Y

và YZvà YZW W XZ XZ WW

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

1717

Bao đóng của tập phụ thuộc hàmBao đóng của tập phụ thuộc hàm

Bao đóng (closure) của tập phụ thuộc Bao đóng (closure) của tập phụ thuộc hàm F là 1 tập phụ thuộc hàm nhỏ hàm F là 1 tập phụ thuộc hàm nhỏ nhất chứa F sao cho không thể áp nhất chứa F sao cho không thể áp dụng hệ tiên đề Amstrong trên tập dụng hệ tiên đề Amstrong trên tập này để tạo ra 1 phụ thuộc hàm khác này để tạo ra 1 phụ thuộc hàm khác không có trong tập hợp nàykhông có trong tập hợp này

Ký hiệu F+Ký hiệu F+ F+ là 1 tập hợp các FD được suy diễn F+ là 1 tập hợp các FD được suy diễn

từ Ftừ F

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

1818

Các tính chất của bao đóng của tập Các tính chất của bao đóng của tập phụ thuộc hàmphụ thuộc hàm

1. Tính phản xạ: với mọi tập phụ thuộc hàm F+ ta luôn có F F+

2.2. Tính đơn điệu: nếu F Tính đơn điệu: nếu F G thì F+ G thì F+ G+G+

3.3. Tính lũy đẳng: với mọi tập phụ Tính lũy đẳng: với mọi tập phụ thuộc hàm F ta luôn có (F+)+ = F+.thuộc hàm F ta luôn có (F+)+ = F+.

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

1919

Hệ tiên đề AmstrongHệ tiên đề Amstrong

Hệ tiên đề Amstrong là Hệ tiên đề Amstrong là đúng đắnđúng đắn (sound) (sound) các phụ thuộc hàm suy các phụ thuộc hàm suy diễn từ F (tập phụ thuộc hàm trên r) diễn từ F (tập phụ thuộc hàm trên r) theo hệ tiên đề Amstrong cũng là theo hệ tiên đề Amstrong cũng là một phụ thuộc hàm trên rmột phụ thuộc hàm trên r

Hệ tiên đề Amstrong là Hệ tiên đề Amstrong là toàn vẹntoàn vẹn (completeness) (completeness) bảo đảm rằng f bảo đảm rằng f F+ nếu và chỉ nếu f là 1 FD được suy F+ nếu và chỉ nếu f là 1 FD được suy diễn diễn

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

2020

Phụ thuộc hàm tương đươngPhụ thuộc hàm tương đương

Nếu F và G là 2 tập FD. F Nếu F và G là 2 tập FD. F suy diễnsuy diễn G ( G ( F entails G) nếu F suy diễn được tất F entails G) nếu F suy diễn được tất cả các FD có trong G. cả các FD có trong G.

F và G là tương đương nhau nếu F F và G là tương đương nhau nếu F suy diễn G và G suy diễn Fsuy diễn G và G suy diễn F

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

2121

Kiểm tra các tập FD tương đươngKiểm tra các tập FD tương đương

Input: F,G – các tập FDInput: F,G – các tập FD Output: true nếu F tương đương G,Output: true nếu F tương đương G,

false nếu ngược lại false nếu ngược lại

For each f For each f F doF do

if G does not entail f then return falseif G does not entail f then return false

For each g For each g G do G do

if G does not entail f then return falseif G does not entail f then return false

Return trueReturn true

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

2222

Ví dụVí dụ Hãy khảo sát 2 tập FD sau: Hãy khảo sát 2 tập FD sau:

• F={ ACF={ ACB, AB, AC, DC, DA}A}• G={AG={AB, AB, AC, DC, DA, DA, DB}B}

F và G có tương đương nhau không???F và G có tương đương nhau không???

Từ ATừ AC + Tiên đề F2 C + Tiên đề F2 A AAC (1)AC (1)Từ (1)+ ACTừ (1)+ ACB + tiên đề F3 B + tiên đề F3 A ABBTừ DTừ DA + AA + AB + tiên đề F3 B + tiên đề F3 D D B BF suy diễn GF suy diễn GTương tự khi xét G suy diễn FTương tự khi xét G suy diễn F

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

2323

Bao đóng của tập phụ thuộc hàmBao đóng của tập phụ thuộc hàm

Ví dụ cho F={Ví dụ cho F={ABAB C C, , CCBB} trên r(ABC)} trên r(ABC) F+={AF+={AA, ABA, ABA, ACA, ACA, ABCA, ABCA,A,

BBB, ABB, ABB, BCB, BCB, ABCB, ABCB, B, CCC, ACC, ACC, BCC, BCC, ABCC, ABCC,C,

ABABAB, ABCAB, ABCAB, AB, ACACAC, ABCAC, ABCAC,AC, BCBCBC, ABCBC, ABCBC,BC, ABCABCABC,ABC, ABABCC, AB, ABAC, ABAC, ABBC, ABBC, ABABC,ABC, CCBB,C,CBC, ACBC, ACB, ACB, ACAB }AB }

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

2424

Bao đóng của tập thuộc tínhBao đóng của tập thuộc tính

Bao đóng của tập thuộc tính X dựa 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 trên một tập phụ thuộc hàm F (closure of X under F) là 1 tập thuộc (closure of X under F) là 1 tập thuộc tính Y sao cho:tính Y sao cho:XXYY F+ F+XXZZ F+: Z F+: Z YY

Hoặc = {A|XHoặc = {A|XA A F+} F+}FX

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

2525

Giải thuật tìm bao đóng của tập Giải thuật tìm bao đóng của tập thuộc tính trên tập phụ thuộc hàmthuộ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 FInput: 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 FOutput: bao đóng của X dựa trên FProcedure Closure(X,F,Closure_X)Procedure Closure(X,F,Closure_X)BeginBegin

Closure_X:=X;Closure_X:=X; repeatrepeat

Old_X := Closure_X;Old_X := Closure_X;for mỗi Wfor mỗi WZ trong F doZ trong F do

if W if W Closure_X then Closure_X then Closure_X :=Closure_X Closure_X :=Closure_X Z; Z;

until Closure_X = Old_X;until Closure_X = Old_X;End;End;

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

2626

Ví dụ tìm bao đóng của XVí dụ tìm bao đóng của X

Cho R(A,B,C,D,E,F) và tập Cho R(A,B,C,D,E,F) và tập F={f1:DF={f1:DB, f2: AB, f2: AC, f3: ADC, f3: ADE, E, f4:Cf4:CF}F}

Tìm ATìm A++FF: :

• AA++FF ={A} ={A}

• Duyệt F lần 1: Từ f2 Duyệt F lần 1: Từ f2 A A++FF = {AC}; Từ f4 = {AC}; Từ f4

A A++FF = {ACF} = {ACF}

• Duyệt F lần 2: ADuyệt F lần 2: A++FF không thay đổi không thay đổi

AA++FF = {ACF} = {ACF}

Tìm {AD}Tìm {AD}++F F ??????

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

2727

Kiểm tra thành viên trong F+Kiểm tra thành viên trong F+ Để xác định F|= XĐể xác định F|= XY, cần kiểm tra Y, cần kiểm tra

XX Y Y F+ F+ Giải thuật:Giải thuật:

• Nhập: phụ thuộc hàm XNhập: phụ thuộc hàm XY và tập FY và tập F• Xuất: true nếu F|= XXuất: true nếu F|= XY, ngược lại là Y, ngược lại là

falsefalseFunction Member(X,Y,Z)Function Member(X,Y,Z)

BeginBeginif Y if Y Closure(X,F) then Member = true Closure(X,F) then Member = trueelse Member = false;else Member = false;

EndEnd

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

2828

Ví dụ kiểm tra phụ thuộc hàm Ví dụ kiểm tra phụ thuộc hàm

Cho F={DCho F={DB, AB, AC, ADC, ADE, CE, CB}. B}. Kiểm tra F có bao hàm AKiểm tra F có bao hàm AB??B??

- Tìm A- Tìm A++FF? ? A A++

FF = {ACB} = {ACB}

- Do B - Do B A A++FF nên F bao hàm A nên F bao hàm ABB

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

2929

Giải thuật tìm khóa của lược đồ quan hệ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 FNhậ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 Xuất: tập hợp K bao gồm tất cả khóa

của Rcủa R Tập thuộc tính nguồn (TN) chứa tất 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 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 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 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ế không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm phải của các phụ thuộc hàm

TN=U- TN=U- ffF F right(f)right(f)

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

3030

Giải thuật tìm khóa của lược đồ quan hệ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ả 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 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 và không xuất hiện ở vế trái của các phụ thuộc hàmphụ thuộc hàm

TD= TD= ffF F right(f) - right(f) - ffF F left(f)left(f) Tập thuộc tính trung gian (TG) chứa 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ả 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 vế trái lẫn vế phải của các phụ thuộc hàmhàm

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

3131

Thuật toán tìm tất cả khóaThuật toán tìm tất cả khóa Bước 1: Bước 1: tạo tập thuộc tính nguồn TN. tạo tập thuộc tính nguồn TN.

Tập thuộc tính trung gian TGTập thuộc tính trung gian TG Bước 2:Bước 2: if TG = if TG = then lược đồ quan then lược đồ quan

hệ chỉ có 1 khóa Khệ chỉ có 1 khóa K

K=TN Kết thúcK=TN Kết thúc

Ngược lại qua bước 3Ngược lại qua bước 3 Bước 3Bước 3: tìm tất cả các tập con Xi của : tìm tất cả các tập con Xi của

tập trung gian TGtập trung gian TG

……....

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

3232

Thuật toán tìm tất cả khóa (tt)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 Bước 4: tìm các siêu khóa Si bằng

cách cách Xi Xi

if (TN if (TN Xi)+ = Q+ then Si Xi)+ = Q+ then Si = TN = TN XiXi

Bước 5: tìm khóa bằng cách loại bỏ 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ểucác siêu khóa không tối tiểu Si, Sj Si, Sj S S

if Siif Si Sj then Loại Sj ra khỏi tập siêu Sj then Loại Sj ra khỏi tập siêu khóa Skhóa S

S còn lại chính là tập khóa cần tìm S còn lại chính là tập khóa cần tìm

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

3333

Ví dụ 1Ví dụ 1

Cho R(A,B,C,D,E,F) và F={DCho R(A,B,C,D,E,F) và F={DB, AB, AC, C, ADADE, CE, CF}. Tìm tất cả các khóa của RF}. Tìm tất cả các khóa của R

B1: TN={AD}, TG={C}B1: TN={AD}, TG={C} Xi là các tập con của TGXi là các tập con của TG

XXii XXii TN TN (X(Xii TN)+ TN)+ Siêu Siêu khóakhóa

KhóaKhóa

ADAD ADBCEF=R+ADBCEF=R+ ADAD ADAD

CC ADCADC ADBCEF=R+ADBCEF=R+ ADCADC

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

3434

Ví dụ 2Ví dụ 2 Cho R(A,B,C,D,E,F) và F={ACho R(A,B,C,D,E,F) và F={AD, CD, CAF, AF,

ABAB EC}. Tìm khóa của R? EC}. Tìm khóa của R? TN={B} , TG={AC}TN={B} , TG={AC} Khóa của R là {AB} và {BC}Khóa của R là {AB} và {BC}

XXii XXii TN TN (X(Xii TN)+ TN)+ Siêu khóaSiêu khóa KhóaKhóa

BB BB

CC CBCB ABCDEF=R+ABCDEF=R+ BCBC BCBC

AA ABAB ABCDEF=R+ABCDEF=R+ ABAB ABAB

ACAC ABCABC ABCDEF=R+ABCDEF=R+ ABCABC