Thuật toán cơ bản tìm F+

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 99)

1. Định nghĩa các thuật ngữ: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ

10.6.2. Thuật toán cơ bản tìm F+

Để tính bao đóngF+của tập các phụ thuộc hàm F ta thực hiện các bước sau: Bước 1: Tìm tất cả tập con củaQ+

Bước 2: Tìm tất cả các phụ thuộc hàm có thể có củaQ. Bước 3: Tìm baođóng của tất cả tập con củaQ.

Bước 4: Dựa vào bao đóng của tất cả các tập con đã tìm để xác định phụ thuộc hàm nào thuộc F+

Ví d1:

Cholược đồ quan hệ Q (A, B, C), F = {AB→C, C→B} là tập phụ thuộc hàm trên Q. F+được tính lần lượt theo các bước như trên là như sau:

Bước1: các tập con của Q+

A B C

{A} {B} {C}

{A, B} {A, C} {B, C} {A, B, C}

Bước2: Các phụ thuộc hàm có thểcó của F (không kể các phụ thuộc hàm hiển nhiên)

A→B A→BC B→C AB→C F C→A C→BC F+ AC→BC F+ BC→AC

A→AB A→ABC B→AC AB→AC F+ C→B F+ C→ABC AC→ABC F+ BC→ABC A→C B→A B→BC AB→BC F+ C→AB AC→B F+ BC→A

A→AC B→AB B→ABC AB→ABC F+ C→AC AC→AB F+ BC→AB

Bước 3:Bao đóng của các tập con của Q đối với F

+

= A+ = A C+ = BC ABC+ = ABC B+ = B AC+ = ABC

AB+ = ABC BC+ = BC Bước 4: F = {AB→C, C→B} suy ra:

F+ = {AB→C, AB→AC, AB→BC, AB→ABC, C→B, C→BC, AC→B, AC→AB, AC→BC, AB→ABC}

*Thuật toán cải tiến

Dựavào thuật toán cơ bản tren,ta nhận thấy có thể tính F+ theo các bước sau: Bước 1: Tìm tất cả tập con của Q+

Bước 2: Tìm các phụ thuộc hàm có thể có của F (không kể các phụ thuộc hàm hiển nhiên)

Bước 3: Tìm baođóng của tát cả tập con của Q+

Bước 4: Dựa vào bao đóng của các tập con dã tìm để suy ra các phụ thuộc hàm F+.

Ví dụ 2:

Ví dụ bao đóng của A+= A chỉ gồm các phụ thuộc hàm hiển nhiên, bao đóng {Ab}+= ABC cho các phụ thuộc hàm không hiển nhiên sau: AB→C, AB→AC, AB→BC, AB→ABC

(Tìm tất cả các tập con của {ABC} rồi bỏ các tập con của {AB})

Các tập con của {ABC} là: , {A}, {B}, {AB},{C}, {AC}, {BC}, {ABC} Bỏ các tập con của {AB} là: , {A}, {B}, {AB},{C}, {AC}, {BC}, {ABC} Các tập còn lại là vế phảicủa phụ thuộc hàm có vế trái là AB.

Ví dụ3:

Cho tập thuộc tínhU=ABCDEGH

Cho tập phụ tuộc hàm F={ ABCD, ACEBG, BCDAE, CHDG} f=BCDHAG, hỏi rằng F├ f hay không, hay f∈F+?

Giải:

BCDHBCD (1) (tính chất phản xạ) BCDAE (gt) (2)

BCDACE (gia tăng) (3) ACE A (phản xạ) (4)

Suy ra BCDHA theo tính chất bắc cầu(5) ACE BG (6) giả thiết

BGG (7) phản xạ

Suy ra ACE G (8) bắc cầu Suy ra BCDHG (9) bắc cầu

Từ (5) và (9) theo luật cộng tính (luật ghép) Suy ra BCDHAG ∈F+(đpcm)

Nhắc lại:

- F╞ f (suy dẫn theo quan hệ) khi và chỉ khi∀R, nếu R(F) thì R(f)

- F├ f (suy dẫn theo hệ tiên đề) khi và chỉ khi f nhận được từ F sau một số hữu hạn lần áp dụng hệ tiên đề Amstrong.

Bài 11: PHỦCỦA TẬP PHỤ THUỘC HÀM 11.1. Định nghĩa tương đương

Định lý Cho F là tập các phụ thuộc hàm trên U và f là một phụ thuộc hàm trên U,khi đó 2 việc sau là tương đương

Tức là tập phụ thuộc hàm f được suy dẫn từ F theo quan hệ khi và chỉ khi nó được suy dẫn từ F theo hệ tiên đề Amstrong.

Chứng minh:

1) Ta chứng minh chiềuthuận

giả sử có F├ f (1) ta cần chứng minh F╞f (2)

(1) Đúng có nghĩa là f nhận được từ F sau một số hữu hạn lần áp dụng các luật của hệ tiên đề Amstrong

Gọi k là số lần áp dụng các tiên đề

Nếu k=0 suy ra f∈F do R(F) suy ra R(f)

Nếu k>0, giả sử sau k bước ta có một tập F1bằng F hợp với một số phụ thuộc hàm nào đó( ký hiệu G)=F∪G

Khi đó R(F) và R(G) suy ra R(F∪G) tức là R(F1) sau một bước tiếp từ F1

nhận đượcf

Do R(F1) suy ra R(f) vậy F╞ f 2) Chứng minh chiều ngược

Giả sử có F╞ f (2) ta cần chứng minh F├f (1) khi và chỉ khi F f thì có F f

Giả sử f=XY, F XY cần chỉ ra F XY nghĩa là cần chỉ ra có ít nhất một quan hệ mà

Ta chỉ ra quan hệ R nh sau: đó là quan hệ gồm 2 bộ u, v hai bộ này giống nhau trên tập thuộc tính X+và với∀B∉X+ thì u.B≠v.B

R A1 A2 ... Ak Ak+1 Ak+2 ... An

U a1 a2 ... ak ak+1 ak+2 ... an

V a1 a2 ... ak bk+1 bk+2 ... bn

Lấy g∈F cần chứng minh R(g), g=ZW Nhận xét nếu Z⊄X+thì u.Z≠v.Z suy ra R(g) Nếu Z⊆X+khi đó u.Z=v.Z, ta cần chỉ ra u.W=v.W

Do g∈F suy ra g∈F+ ⇔W⊆Z+( do tính chất XY∈ F+⇔Y⊆X+ ), do Z⊆X+suy ra Z+⊆X++= X+ vậy có W⊆Z+⊆X+hay W⊆X+hay u.W=v.W Chứng minhR(f) với f=XY

Ta có X⊆X+ suy ra u.X=v.X cần chỉ ra u.Y≠v.Y (1) F├ f

Do F XY suy ra Y⊄X+ suy ra u.Y≠v.Y F├ XY⇔Y ⊆X+

F XY⇔Y⊄X+ do

suy ra F f (đpcm).

11.2. Các tập phụ thuộc hàm tương đương

Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U, ta nói rằng tập phụ thuộc hàm F tương đương với tập phụ thuộc hàm G nếu và chỉ nếu F+=G+ Nếu F+=G+ thì ta nói F là phủ của G và ngược lại G là phủ của F

Thuật toán kiểm tra sự tương đương của hai tập phụthuộc hàm

Với mỗi phụ thuộc hàm XY của F kiểm tra xem XY có thuộc vào G+ hay không?, bằng cách tính X+G ( bao đóng của X trong tập G) và xem Y

⊆X+Ghay không?

Nếu Y⊆ X+Gthì XY∈G+, nếu mọi phụ thuộc hàm trng F đều thuộc G+hay được suy dẫn từ G+ thì mọi phụ thuộc hàm trong F+ cũng suy dẫn được từ G. Do vậy F+ ⊆G+

Tương tự, nếu mọi phụ thuộc hàm trong G đều thuộc F+thì G+⊆F+

Cuối cùng, nếu F+⊆G+ và G+ ⊆F+thì F+=G+tức là F và G là tương đương. Thuật toán xác định F và G có tương đương không?

Bước 1: Với mỗi phụ thuộc hàm X Y của F ta xác định xem X Y được suy dẫn từ G không?

Bước 2: Với mỗi phụ thuộc hàm X Y của G ta xác định xem X Y được suy dẫn từ F không?

Nếu cả hai bước trên đều đúng thì F G

Ví dụ: Cho lược đồ quan hệcó:

F={A → BC, A → D, CD → E}, G={A → BCE, A → ABD, CD → E} a. F có tương đương với G không?

b. F có tương đương với G+= {A→ BCDE} không? Giải:

a) Ta có A+G= ABCDE trong G+ có A→BC và A→D ⇒F G+⇒F+⊂G+(1) A+F =ABCDE ⇒trong F+có A→BCE và A→ABD ⟹ F+⊇G ⟹ F+⊇G+(2) Từ(1) và (2)⟹F+= G+⟹F G.

b) Do (CD)+G=CD suy ra G’+không chứa phụ thuộc hàm CDE Suy ra F không tương đương với G’

R(f) R(F)

11.3. Phụ thuộc hàm không dư thừa

11.3.1. Phụ thuộc hàm dư thừa

Cho F là một tập các phụ thuộc hàm trên U, f là một phụ thuộc hàm của F tức f∈F, f được gọi là dư thừa trong F nếu như(F-f)+=F+

Hay có thể nói tương đương f được gọi là dư thừa trong F nếu nó suy dẫn được từ tập F sau đã bỏ đi phụ thuộc hàm f.

Thuật toán thành viên

Input

- Tập phụ thuộc hàm F - f∈F

Output

- True nếu như f là dư thừa trongF

- False nếu như f là không dư thừa trongF

* Thuật toán xác địnhf = XY có là thành viên của F hay không?

1) Tạm xóa f khỏi F, gọi G là tập thu được

G=F-f, nếu G≠φ thì chuyển qua bước 2, còn không thì kết thúc thuật toán và kết luận f là không dư thừa trongF

2) Giả sử f=XY nếu G├ f tứcY⊆ X+

G thì f là dư thừa trong F còn ngược lại f là không dư thừa ( là thành viên ).

Hoặc:

Bước 1: TínhX+

Bước 2: So sánh X+ với Y nếu X+ ⊇ Y thì ta khẳng định X  Y là thành viên củaF.

Ví dụ:

Giả sử có tậpF={XYW, XWZ, ZY, XYZ} Hãy cho biếtXYZ có dư thừa trong F hay không?

Giải:

1) Tạm thời xóaXYZ ra khỏi F

G:=F-{XYZ}={XYW, XWZ, ZY} 2) Tính (XY)+G ( bao đóngcủa XY trong tậpG)

ta có (XY)+G= XYWZ thế nên Z⊆(XY)+G hay G├ (XYZ) thỏa mãn phụ thuộc hàm XYZ là dư thừa trong F.

11.3.2. Phủ không dư

Cho F và G là hai phụ thuộc hàm trên U, F được gọi là phủ không dư của G khi và chỉ khi

Định lý: Mọi tập phụ thuộc hàm đều tồn tại phủ không dư

Thuật toán tìm phủ không dư

Input

- Tập phụ thuộc hàm G

Output

- Tập phụ thuộc hàm F là phủ không dư của G tức là

Method b1) Gán F:=G b2) For each f in G Do If (F-f)+= F+ Then F:=F-f EndIf EndFor b3) Return F

Về mặt thực tế thay bước 2 trong thuật toán trên bởi b2) For each FD f:LR in G Do If R⊆L+F-{f}Then F:=F- {f} EndIf EndFor 11.4 Phủ thu gọn

Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U.

11.4.1. Phụ thuộc hàm có vế trái dư thừa:

F là các phụ thuộc hàm trên lược đồ quan hệ Q, Z là tập thuộc tính,

ZY∈F.Nói rằng phụ thuộc hàm Z Y có vế trái dư thừa (phụ thuộc hàm không đầy đủ) nếu có một A∈Z sao cho:

F=F-{Z Y} {(Z-A)Y}

Ngược lại ZY là phụ thuộc hàm có vế trái không dư thừa hay Y phụ thuộc hàm đầy đủ vào Z hay phụ thuộc hàm đầy đủ.

Ví dụ:

Q(A,B,C) F={ABC,BC}

F=F-{ABC} {(AB-A)C}={BC} - F+= G+( F là phủ của G)

-∀f∈F thì (F-f)+≠F+( tức mọi phụ thuộc hàm trong F đều không dư thừa)

- F+= G+ ( F là phủ của G)

ABC là phụthuộc hàm không đầy đủ. BC là phụ thuộc hàm đầy đủ.

Chú ý:

Phụ thuộc hàm có vế trái dư thừa chứa một thuộc tính là phụ thuộc hàm đầy đủ.

Ví dụ:

Cho tập phụ thuộc hàm F={A BC,B C,AB D} thì phụ thuộc hàm ABD có vế trái dư thừa B vì:

F=F-{ABD} {AD} ={ABC,BC,AD}

Ta nói F là tập phụ thuộc hàm có vế trái không dư thừa nếu F không chứa phụ thuộchàm có vế trái dư thừa.

* Thuật toán loại khỏi F các phụ thuộc hàm có vế trái dư thừa:

Bước 1:Lần lượt thực hiện bước 2 cho các phụ thuộc hàm XY của F. Bước 2: Với mọi tập con thực sự X’≠ ∅ của X.

Nếu X’Y∈F+thì thay XY trong F bằng X’Y thực hiện lại bước 2 Ví dụ:

Ở ví dụ trên phụ thuộc hàm ABD có A+ =ABCD suy ra AD∈F+ .Trong F ta thay AB bằng AD suy ra F={ABC,BC,AD}

11.4.2. Tập phụ thuộc hàm có vế phải một thuộc tính:

Mỗi tập phụ thuộc hàm F đều tương đương với một tập phụ thuộc hàm G mà VP của các phụ thuộc hàm trong G chỉ gồm một thuộc tính.

Ví dụ:

F={ABC,BC,ABD } ta suy ra F={AB,AC,BC,ABD} =G

11.4.3. Tập phụ thuộc hàm không dư thừa (phủ không dư):

Nói rằng F là tập phụ thuộc hàm khôngdư thừa nếu không tồn tại F‘ ⊂ F sao cho F‘ ≡ FNgược lại, F là tập phụthuộc hàmdưthừa.

Ví dụ:

Cho F={ABC,BD,ABD } thì F dư thừa vì: F-F’={ ABC,BD}

Thuật toán loại khỏi F các phụ thuộc hàm dư thừa: Bước 1:Lần lượt xét các phụ thuộc hàm XY của F.

Bước 2: nếu XY là thành viên của F –{ XY } thì loại XY khỏi F. Bước 3:Thực hiện bước 2 cho các phụ thuộc hàm tiếp theo của F

11.4.4. Tập phụ thuộc hàm tối thiểu:

F được gọi là một phụ thuộc hàm tối thiểu (phủ tối thiểu) nếu F thỏa mãn đồng thời ba điều kiện sau:

1.F là tập phụ thuộc hàm có vế trái không dư thừa. 2.F là tập phụ thuộc hàm có vế phải một thuộc tính. 3.F là tập phụ thuộc hàm không dư thừa.

*Thuật toán tìm phủ tối thiểu của một tập phụ thuộc hàm

Bước 1: Loại khỏi F các phụ thuộc hàm có vế trái dư thừa.

Bước 2: Tách các phụt huộc hàm có vế phải trên một thuộc tính thành các phụ thuộc hàm có vế phải một thuộc tính.

Bước 3: Loại khỏi Fcác phụ thuộc hàm dư thừa.

Trong đó, điều kiện 1, 2 có thể thay đỏi vị trí cho nhau. Ví dụ:

Cho lược đồ quan hệ Q(A, B, C, D) và tập phụthuộc F như sau: F={AB→CD, B→C, C→D}

Hãy tính phủ tối thiểu của F. Giải:

Bước 1: AB→CD là phụ thuộc hàm có vế trái dư thừa? B→CD∈F+?trả lời :B+= BCD⟹B→CD∈F+

Vậy AB→CD là phụ thuộc hàm có vế trái dư thừa A⟹kết quả của bước 1 là: F={B→CD, B→C, C→D}

Bước 2: kết quả của bước 2 là: F={B→D, B→C, C→D} F1tt

Bước 3: trong F1tt,B→C là phụ thuộc hàm dư thừa? B→C∈G+? với G= F- {B→C}= {B→D, C→D} BG

+

=BD⟹B→C∉G+⟹trong F1tt B→C không dư thừa. Trong F1tt, B→D là phụ thuộc hàm dư thừa?

B→D∈G+? với G= F1tt- {B→D}= {B→C, C→D} BG

+

= BCD⟹B→D∈G+trong F1tt, B→D dư thừa. Kết quả của bước 3 cho phủ tối thiểu:

F={B→C, C→D} Ftt

Bài 12: BÀI TẬP VỀ PHỤ THUỘC HÀM VÀ CÁC VẤN ĐỀ LIÊN

QUAN

12.1. Nhắc lại lý thuyết.12.2. Bài tập. 12.2. Bài tập.

12.3. Thảo luận.

Bài 13: KHÓA CỦA LƯỢC ĐỒ QUAN HỆ

13.1. Siêu khóa và khóa

Định nghĩa 1: Cho lược đồ quan hệ α=(U,F) , K⊆U nếu K+= U, thì ta nói K là một siêu khoá.

Chú ý:Điều kiện K+=U có thể thay bằng KU hoặc KU \ K

Định nghĩa 2:Cho lược đồ quan hệα=(U,F), tập K ⊆Uđược gọi là khoá của lược đồαnếu nhưnó thoả mãn:

a) K là một siêu khoá

b)∀K1⊂K thì K1 Không là siêu khoá tức K+1≠U

Chú ý:Định nghĩa này làtương dương với định nghĩa:

Cho lược đồ quan hệ α=(U,F), tập K ⊆U được gọi là khoá của lượcđồ α nếu nhưnó thoả mãn:

a) KU∈F+

b)∀K1⊂K thì K1 U∉F+

Hai điều kiện trên còn tương đươngvới a) K+=U

b)∀A∈K thì (K-{A})+≠U Hoặc nó tương đương với a) KU

b)∀A∈K thì (K-{A})+U

- Thuộc tính A được gọi là thuộc tính khoá (hay còn gọi là thuộc tính nguyên thuỷ hoặc cơ sở, sơ cấp) nếu nhưnó có mặt trong một khoá nào đó.

- Thuộc tính A đượcgọi là thuộc tính không khoá (thứ cấp) nếu nhưnó không có trong một khoá bất kỳ nào.

Chú ý: Trong một số tài liệu thì thuật ngữ khoá được dùng để chỉ siêu khoá và thuật ngữ khoá tối thiểu đượcdùng theo nghĩa khoá.

*Tính chất

1. Hợp của 2 siêu khoá là một siêu khoá

2. Giao của 2 siêu khoá chắc chắnlà một siêu khoá 3. Hai khoá bất kỳ là không bao nhau

4. Hợp của hai khoá là một khoá khi và chỉ khi lược đồ có duy nhất một khoá 5. Một lược đồ có thể có nhiều khoá

6. Bản thân U là một siêu khoá

7. Với mọi quan hệ R trên U, thì R luôn có ít nhất một khoá

*Tìm một siêu khoá của lược đồ

Cholược đồ quan hệ α=(U,F) hãy tìm một siêu khoá K của lượcđồ

Bản thân U cũng là một siêu khoá, tuy nhiên trong nhiều bài toán ta cần tìm một siêu khoá có số phần tử nhỏ hơn số phần tử của tập U để tăng tốc độ tính toán, có nhiều cách để tìm một siêu khoá của lược đồ, sau đây là một cách khá đơn giản mà cho ta tập siêu khoá có số phần tử nhỏ hơn số phần tử của tập U khá nhiều:

Đặt L=∪Li|∀LiRi∈F Đặt R=∪Ri|∀ LiRi∈F

Đặt K= U\ R∪L Thì K là một siêu khoá

Ví dụ: Cho U=ABCDEGHK

F={ ACBGE, DHACD, BGAEH} Hãy tìm một siêu khoá của lược đồ

L=AC∪DH∪BG=ABDGH

R=BGE∪ACD∪AEH=ABCDEGH

Ta có thể chọn K=ABCDEGHK \ ABCDEGH ∪ABDGH = ABDGHK Dễ dàng kiểm tra rằng K+= U

Nhận xét: Khi đã có một siêu khoá nếu ta bỏ đi một số thuộc tính ta sẽ thu đượcmột khoá.

13.2. Họ Sperner và khóa

Nếu gọi Kα là tập tất cả các khoá của lược đồ α=(U,F), nh vậy mỗi phần tử của Kα là một tập thuộc tính và các tập hợp đó là không bao nhau.

Định nghĩa:Họ Sperner trên U là họ M={ X | X⊆U }sao cho hai phần tử của M là không bao nhau.

Nhận xét:Tập hợp Kα tất cả các khoá của lược đồ là một họ Sperner trên U. Xây dựng lược đồ quan hệ có các khoá là các phần tử của họ Sperner

Bài toán: Cho M là một họ Sperner trên U thì có tồn tại hay không một lược đồ quan hệ α=(U,F) sao cho Kα =M (lược đồ có các khoá là các phần tử của họ M).

Trả lời:Có tồn tại một lợc đồ α=(U,F) đợc xây dựng nh sau: Xây dựng F, giả sử M={X1, X2,..., Xn} ta xây dựng F nhưsau F={ Xi U\ Xi∀i=1, .., n }

Khi đó lược đồα=(U,F) có Kα =M Chứng minh:

Để chứng minh Kα =M ta chứng minh Kα ⊆M (1) và M⊆Kα(2) Chứng minh (1)

Lấy K∈Kαta cần chứng minh K ∈M Giả sử ngượclại K∉M

Do K là khoá nên K+=U việc tìm bao đóng của K phải áp dụng các phụ thuộc

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 99)

Tải bản đầy đủ (PDF)

(161 trang)