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í dụ1:
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={ ABCD, ACEBG, BCDAE, CHDG} f=BCDHAG, hỏi rằng F├ f hay không, hay f∈F+?
Giải:
BCDHBCD (1) (tính chất phản xạ) BCDAE (gt) (2)
BCDACE (gia tăng) (3) ACE A (phản xạ) (4)
Suy ra BCDHA theo tính chất bắc cầu(5) ACE BG (6) giả thiết
BGG (7) phản xạ
Suy ra ACE G (8) bắc cầu Suy ra BCDHG (9) bắc cầu
Từ (5) và (9) theo luật cộng tính (luật ghép) Suy ra BCDHAG ∈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=XY, F XY cần chỉ ra F XY 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=ZW 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 XY∈ 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 minhR(f) với f=XY
Ta có X⊆X+ suy ra u.X=v.X cần chỉ ra u.Y≠v.Y (1) F├ f
Do F XY suy ra Y⊄X+ suy ra u.Y≠v.Y F├ XY⇔Y ⊆X+
F XY⇔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 XY của F kiểm tra xem XY 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ì XY∈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 CDE 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=XY 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={XYW, XWZ, ZY, XYZ} Hãy cho biếtXYZ có dư thừa trong F hay không?
Giải:
1) Tạm thời xóaXYZ ra khỏi F
G:=F-{XYZ}={XYW, XWZ, ZY} 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├ (XYZ) thỏa mãn phụ thuộc hàm XYZ 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:LR 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,
ZY∈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 ZY 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={ABC,BC}
F=F-{ABC} {(AB-A)C}={BC} - 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)
ABC là phụthuộc hàm không đầy đủ. BC 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 ABD có vế trái dư thừa B vì:
F=F-{ABD} {AD} ={ABC,BC,AD}
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 XY 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 XY 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 ABD có A+ =ABCD suy ra AD∈F+ .Trong F ta thay AB bằng AD suy ra F={ABC,BC,AD}
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={ABC,BC,ABD } ta suy ra F={AB,AC,BC,ABD} =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={ABC,BD,ABD } thì F dư thừa vì: F-F’={ ABC,BD}
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 XY của F.
Bước 2: nếu XY là thành viên của F –{ XY } thì loại XY 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 KU hoặc KU \ 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) KU∈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) KU
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|∀LiRi∈F Đặt R=∪Ri|∀ LiRi∈F
Đặt K= U\ R∪L Thì K là một siêu khoá
Ví dụ: Cho U=ABCDEGHK
F={ ACBGE, DHACD, BGAEH} 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