MỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌCPhân biệt các loại khoáCác thuật toán tìm một khoá, nhiều khoá.Ứng dụng giải quyết các bài toán về khoá.
A/ NHẮC LẠI LÝ THUYẾTCÁC ĐỊNH NGHĨA, TÍNH CHẤT, THUẬT TOÁN
1. Họ Sperner
Nếu gọi Ka là tập tất c các khoá của lược đồ a=(U,F), như vậy mỗi phần tử của Ka 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 Ka tất cả các khoá của lược đồ là một họ Sperner trên U.
2. Siêu khoá và khoá
Định nghĩa: Cho lược đồ quan hệ a=(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: Cho lược đồ quan hệ a=(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: Cho lược đồ quan hệ a=(U,F), tập K ÍU được gọi là khoá của lược đồ (nếu như nó thoả mãn:
- K là một siêu khoá
- " K1 Ì K thì K1 Không là siêu khoá tức K+1 ¹ U
Chú ý: định nghĩa này là tương đương với định nghĩa
Cho lược đồ quan hệ a=(U,F), tập K ÍU được gọi là khoá của lược đồ ( nếu như nó thoả mãn:
- K àU Î F+
- " K1 Ì K thì K1 à U Ï F+ (K+ ¹ U)
Tập hợp Ka tất cả các khoá của lược đồ là một họ Sperner trên U.
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ệ a=(U,F) sao cho Ka =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 đồ a=(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 đồ a=(U,F) có Ka =M
2. Một số vấn đề về khoá
Cho a=(U,F) ta cần quan tâm một số vấn đề sau:
Bài toán 1:
Cho K ÍU hỏi rằng K có phải là khoá hay không?
Cách làm: Tính K+, nếu K+ ¹ U thì K không là khoá của lược đồ
8 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 6236 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài tập về khóa - Nhập môn cơ sở dữ liệu quan hệ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
3. BµI TËP VÒ kho¸
MỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌC
Phân biệt các loại khoá
Các thuật toán tìm một khoá, nhiều khoá.
Ứng dụng giải quyết các bài toán về khoá.
A/ NHẮC LẠI LÝ THUYẾT
CÁC ĐỊNH NGHĨA, TÍNH CHẤT, THUẬT TOÁN
1. Họ Sperner
Nếu gọi Ka là tập tất c các khoá của lược đồ a=(U,F), như vậy mỗi phần tử của Ka 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 Ka tất cả các khoá của lược đồ là một họ Sperner trên U.
2. Siêu khoá và khoá
Định nghĩa: Cho lược đồ quan hệ a=(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: Cho lược đồ quan hệ a=(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: Cho lược đồ quan hệ a=(U,F), tập K ÍU được gọi là khoá của lược đồ (nếu như nó thoả mãn:
- K là một siêu khoá
- " K1 Ì K thì K1 Không là siêu khoá tức K+1 ¹ U
Chú ý: định nghĩa này là tương đương với định nghĩa
Cho lược đồ quan hệ a=(U,F), tập K ÍU được gọi là khoá của lược đồ ( nếu như nó thoả mãn:
- K àU Î F+
- " K1 Ì K thì K1 à U Ï F+ (K+ ¹ U)
Tập hợp Ka tất cả các khoá của lược đồ là một họ Sperner trên U.
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ệ a=(U,F) sao cho Ka =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 đồ a=(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 đồ a=(U,F) có Ka =M
2. Một số vấn đề về khoá
Cho a=(U,F) ta cần quan tâm một số vấn đề sau:
Bài toán 1:
Cho K ÍU hỏi rằng K có phải là khoá hay không?
Cách làm: Tính K+, nếu K+ ¹ U thì K không là khoá của lược đồ
nếu K+ = U chứng tỏ K là một siêu khoá, để kiểm tra K có phải là khoá không ta lấy mọi tập con thực sự của K, nếu tất cả các tập con thực sự của K đều không là siêu khoá thì chứng tỏ K là khoá, nếu tồn tai một tập con thực sự của K là siêu khoá thì chứng tỏ K không là khoá
Bài toán 2:
Tìm một khoá của lược đồ
Cho một lược đồ a = (U, F), hãy tìm một khoá K.
Phương pháp:
b1) Trước hết chọn một siêu khoá K
b2) Từ siêu khoá đó kiểm tra xem nó có phải là khoá không
b3) Nếu K là khoá thì dừng thuật toán, ngựơc lại chuyển bước tiếp theo.
b3) Nếu K chưa phải là khoá thì có K1 là tập con thực sự của và lớn nhất của K và K1 là siêu khoá, thay K bằng K1 và quay trở lại bước b2.
Mô tả thuật toán (bằng ngôn ngữ tựa Pascal):
Begin
K:= R;
For each A in K do
if (K-A)+ = R then K:= K- A;
end;
Nhận xét:
Thuật toán này cho ta tìm được một khóa của lược đồ quan hệ a. Nếu muốn tìm các khóa khác (nếu có) của lược đồ quan hệ ta có thể thay đổi thứ tự loại bỏ các phần tử của khóa.
Bài toán 3:
T ìm giao của tất cả các khoá
Kí hiệu a =(U, F) với F={Li à Ri , i=1,..n }
Là tập mà mỗi phần tử của nó tham gia vào tất cả các khoá của lược đồ hay Ia là giao của tất cả các khoá của lược đồ.
Kí hiệu Na là tập mà mỗi phần tử của nó không tham gia vào bất cứ một khoá nào của lược đồ
Kí hiệu Sa ={ U \ (Ri – Li) | " Li à Ri Î F }
Khi đ ó: Ia =Sa = { U \ (Ri – Li) | " Li à Ri Î F}
Bài toán 4:
Cho lược đồ quan hệ a= (U, F)
Hỏi rằng lược đồ có bao nhiêu khoá
Phương pháp kiểm tra một lược đồ đã cho có một hay nhiều khoá:
- Tính Ia
- Nếu (Ia)+ =U thì lược đồ đã cho có duy nhất một khoá
- Nếu (Ia)+ ¹ U thì lược đồ có nhiều khoá
Trong ví dụ trên ta có Ia =AH do vậy ( Ia )+ ¹ U do vậy lược đồ đã cho có nhiều khoá.
Bài toán 5:
Cho lược đồ a = (U, F)
Hãy tìm các khoá của lược đồ.
Thuật toán:
- Xác định Ia
- Xác định N={ È ( Ri -Li ) sao cho Li Î Ia }
- Đặt N’=(Ia N)+ \ Ia ( N’ÍNa )
- Đặt B=U \N’ \ Ia , khi đó B È Ia là một siêu khoá, từ tập này ta bỏ đi các phần tử để thu đựơc một khoá
II. MỘT SỐ LƯU Ý
Cần phân biệt các loại khoá, xác định khoá của lược đồ quan hệ. Kiểm tra một lược đồ đã cho có một hay nhiều khóa?
B/ BÀI TẬP MẪU
Bài số 1:
Cho lược đồ quan hệ: a=(U,F)
V ới U=ABCDEGH
F={AB à CDE, AC à BCG, BDàG, ACHàHE, CG à BDE }
và K = ACGH
Hỏi rằng K có là khoá của lược đồ hay không?
K+= ACGH È BCG È HE È BDE = U suy ra K là siêu khoá
Các tập con thực sự lớn nhất của U là ACG, CGH, ACH, AGH dễ dàng kiểm tra các tập ACG có (ACH)+ = U vậy K không là khoá.
Bài số 2:
Cho lược đồ quan hệ a=(U, F) với U=ABCDEGHK
F={ ADH®BC, GH®BE, D®CG, CH®K}
Hãy tìm một khoá của lược đồ
Chọn siêu khoá K=ACDGH
loại A ta có (K-A)+ = (CDGH)+ = BCDEGHK ¹ U nên A không thể loai đựơc
loại C ta có (K-C)+ = (ADGH)+ = ABCDEGHK=U
nên gán K:=K – {C}= ADGH
loại D ta có (K-D)+ = (AGH)+ =ABEGH ¹U nên không loại được D
loại G ta có (K-G)+ = (ADH)+ = ABCDEGHK=U
nên gán K=K- {G} = ADH
loại H ta có (K-H)+=(AD)+ =ACDG¹ U nên không loại được D
Vậy khoá K=ADH
Bài số 3:
Hãy tìm giao của tấp cả các khoá của lược đồ a=(U, F)
Với U=ABCDEGH
F={AB à CDE, AC à BCG, BDàG, ACHàHE, CG à BDE }
Ia = U \ ((CDE – AB) È (BCG – AC) È (G – BD) È (HE – ACH) È (BDE – CG) ) =U \ ( CDE È BG È G È E È BDE ) =U \ BCDEG=AH
Bài số 4:
Cho lược đồ quan hệ a = (U, F) với
U=ABCDEGH, F={ ABC®ADH, ABG®AEH, AE®DG}
Hãy tìm tất cả các khoá của lược đồ
Ia =U \ È (Ri -Li )=ABC
N=È (Ri -Li )=DH ( víi Li ÍIa )
N’=(Ia N)+ \ Ia =(ABCDH)+ \ ABC = DH Í Na
B=U \ N \ Ia = ABCDEGH \ ABC \ DH =EG
Do (Ia )+ ¹ U nên lược đồ đã cho có nhiều khoá, do vậy lược đồ này có hai khoá là Ia È E =ABCE và Ia È G= ABCG
C/ BÀI TẬP TỰ GIẢI
Bài tập 1:
Xây dựng lược đồ quan hệ có các khoá là ADE, BCH, CG, AHE
Bài tập 2:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDEGHK
F={ ADH®BC, GH®BE, D®CG, CH®K}
Hãy tìm
Giao của tất của các khoá
Lược đồ đã cho có một hay nhiều khoá
Hãy tìm tất của các khoá của lược đồ
Một số các phần tử không khoá
Bài tập 3:
Tìm các thuộc tính khoá của lược đồ a=(U, F)với
U=ABCDE
F={ AB®C, AD®B, B®D }
Hãy tìm các phần tử khoá của lược đồ trên
Bài tập 4
Các mệnh đề trên mệnh đề nào đúng/ sai
a) KÍU là một khoá khi và chỉ khi K®U
b) KÍU là một khoá thì K®U
c) Hai khoá bất kỳ là không giao nhau
d) Hai khoá bất kỳ là không bao nhau
e) Mọi lược đồ quan hệ đều có ít nhất một khoá
f) bản thân U cũng có thể là một khoá
g) tồn tại một lược đồ quan hệ không có khoá nào
h) U không thể là khoá của lược đồ
i) Hợp của hai khoá phân biệt là một khoá
j) Hợp của hai khoá là một siêu khoá
Bài tập 5:
Cho lược đồ quan hệ (=(U, F) với
U=ABCDEGH
F={ ABC®DE, BCD®G, ABH®EG, CE®GH}. Hãy tìm một khóa của lược đồ
Bài tập 6:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDEGH
F={CD®H, E®B, D®G, BH®E, CH®DG, C®A }
Tìm giao của tất của các khoá
Lược đồ có một hay nhiều khoá
Tập ABD có phải là khoá của a không? vì sao ?
Tập CH có phải là khoá của a không? vì sao ?
Tính Z=(X+Y)+ Ç (K+ -Y) trong đó X=CD , Y=CH , K là một siêu khoá bất kỳ nào đó của a
Bài tập 7:
Cho lược đồ quan hệ (=(U, F) với
U=ABCD, F={ AD®BC, B®A, D®C}
a. Tìm các khoá của lược đồ
b. Cho biết C có phải là thuộc tính khoá hay không?
Bài tập 8:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDEGH, F={ DE®G, H®C, E®A, CG®H, DG®AE, D®B}
Tìm giao của tất của các khoá
Lược đồ có một hay nhiều khoá
Tìm một khoá của lược đồ
Tập BCE có phải là khoá của a không? vì sao ?
Hãy thêm hoặc bớt một phụ thộc hàm trong F để lược đồ có duy nhất một khoá
Bài tập 9:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDEH, F={ BC®E, D®A, C®A, AE®D, BE®CH}
Tìm một khoá K của lược đồ
Ngoài khoá K lược đồ a còn có khoá nào khác không? Vì sao?
Tập BCH có phải là khoá của a không? vì sao ?
Tập BD có phải là khoá của a không? vì sao ?
Bài tập 10:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDE , F={ DE®A, B®C, E®AD}
Tìm một khoá của lược đồ
Tập BCE có phải là khoá của a không? vì sao ?
Tập AD có phải là khoá của a không? vì sao ?
Tập BD có phải là khoá của a không? vì sao ?
Lược đồ có còn khoá nào nữa không? Vì sao?
Tính Z=(X+ È Y)+ Ç (K+ -Y) với X=DE, Y=AD, K là một siêu khoá bất kỳ nào đó của a.
Bài tập 11:
Cho lược đồ quan hệ a=(U, F) với
U=ABCDE , F={ AE®B, C®D, A®BE}
Tìm một khoá của lược đồ
Tập BDE có phải là khoá của a không? vì sao ?
Tập AC có phải là khoá của a không? vì sao ?
Lược đồ có còn khoá nào nữa không? Vì sao?
Tính Z=(X+ È Y)+ Ç K+ với X=AB, Y=AC, K là một siêu khoá bất kỳ nào đó của a
Bài tập 12:
Cho lược đồ quan hệ a=(U,F) với
U=ABCDEG và tập phụ thộc hàm
F={A® C, B®DE, D®E, A®ED, AB®G}
Hãy tìm khoá của lược đồ quan hệ
Bài tập 13:
Xác định khoá cuả các lược đồ quan hệ a =(U, F) với
a) U=ABCEDH và
F={AB®C, CD®E, AH®B, B®D, A®D}
b) U=ABCDMNPQ
F={AM®NB, BN®CM, A®P, D®M, PC®A, DQ®A}
c) U=ABCDEGHIJ
F={A®J, AE®H, H®E, DE®H, A®I, AB®C, CB®D, J®E}
Bài tập 14:
Cho lược đồ quan hệ a =(U, F) với
U=ABCDEGHI và tập phụ thộc hàm
F={AE®G, A®HI, G®E, DE®G, AG®C, BC®D, HI®E}
Hãy tìm khoá các lược đồ.
Bài tập 15:
Cho lược đồ a= (U, F) có U = ABCDE và
F = { AB ® C, BD ® CE, D ® AC, A ® DC, CE ® A }
Lược đồ có một hay nhiều khoá ? Hãy tìm một khoá của lược đồ a
Bài tập 16:
Cho lược đồ a= (U, F) có U = ABCDE và
F = { AB ® C, BD ® CE, D ® AC, A ® DC, CE ® A }
a. Hỏi rằng tập BDE có là khoá của lược đồ hay không
b. Lược đồ có một hay nhiều khoá ?
Bài tập 17:
Xây dựng lược đồ a = (U, F) với U = ABCDEGHIK . Sao cho lược đồ có ít nhất 3 khoá và các thuộc tính A,B,C không tham gia vào bất kỳ một khoá nào .
Bài tập 18:
Cho lược đồ quan hệ a = (U, F) có U = ABCDEG và
F = { A ® BD, BC ® DE, D ® B, CD ® GE, BE ® A, G ® B }
a. Hỏi rằng tập CGE có là khoá của lược đồ hay không
b. Lược đồ có một hay nhiều khoá ?
c. Hãy tìm một khoá và giải thích.
Bài tập 19:
Cho lược đồ a = (U, F) có U = ABCDEG và
F = { BC ® DE, A ® CD, CE ® A, G ® C, D ® C, BD ® GE, }
a. Hỏi rằng tập BDE có là khoá của lược đồ hay không
b. Lược đồ có một hay nhiều khoá ?
c. Hãy tìm một khoá và giải thích.
Bài tập 20:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { AB ® CDE , BD ® CGE , DG ® ACE,
AD ® CDEH, BCG ® AEH }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Hãy tìm một khoá của lược đồ trên.
iii. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ? Vì sao ?
Bài tập 21:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { BDG ® AEH , BC ® ADE , AC ® CDEH ,
AG ® CDE, CG ® BDE }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Hãy tìm một khoá của lược đồ trên.
iii. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ? Vì sao ?
Bài tập 22:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { AB ® CDE , BD ® CGE , DG ® ACE,
AD ® CDEH, BCG ® AEH }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ? Vì sao ?
Bài tập 23:
Cho U = ABCDEGH. Hãy xây dựng một lược đồ quan hệ a trên U thoả mãn các điều kiện sau :
- Lược đồ a có ít nhất 4 khoá
- Có hai thuộc tính C, D không tham gia vào bất kỳ một khoá nào
- Hợp tất cả các khoá của lược đồ là tập lớn nhất .
Hãy giải thích điều đó.
Bài tập 24:
Xây dựng lược đồ quan hệ a = (U, F) với U = ABCDEGHIK sao cho lược đồ có 3 khoá và giao của các khoá là DG và hai thuộc tính E,H không tham gia vào bất kỳ một khoá nào .
Bài tập 25:
Cho lược đồ quan hệ a = (U,F) với U = ABCDEGHIK và
F = { AEK ® BEH , EH ® BD , DG ® BCD, ABCE ® DE}
i. Tập DEGH có phải là khoá của lược đồ đã cho hay không ?
ii. Hãy tìm một khoá của lược đồ trên.
iii. Hãy tìm tất cả các thuộc tính không tham gia vào bất kỳ một
khoá nào.
Bài tập 26:
Cho lược đồ quan hệ a= (U,F) với U = ABCDEGHIK và
F = { ACK ® BCH , CH ® BD , DG ® BDE, ABCE ® CD}
i. Hãy tìm một khoá của lược đồ trên.
ii. Tập CDGH có phải là khoá của lược đồ đã cho hay không ?
iii. Hãy tìm tất cả các khoá còn lại
Bài tập 27:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { AB ® CE , BCD ® CH , DG ® ACE,
AD ® CDH, BC ® AEG }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Hãy tìm một khoá của lược đồ trên.
ii. Tập BCDG có phải là khoá của lược đồ a đã cho hay không ?
Bài tập 28:
Cho lược đồ quan hệ a= (U,F) với U = ABCDEGHIK và
F = { AEK ® BEH , EH ® BD , DG ® BCD, ABCE ® DE}
i. Hãy tìm một khoá của lược đồ trên.
ii. Tập DEGH có phải là khoá của lược đồ đã cho hay không ?
b. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ?
Bài tập 29:
Xây dựng lược đồ quan hệ a = (U, F) với U = ABCDEGH sao cho lược đồ có 3 khoá và giao của các khoá là CDE.
Bài tập 30:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { AB ® CDE , BD ® CG , DG ® ACE,
AD ® CDH, BCE ® AEH }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Hãy tìm một khoá của lược đồ trên.
iv. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ?
Bài tập 31:
Xây dựng lược đồ quan hệ a = (U, F) với U = ABCDEGH sao cho lược đồ có 3 khoá và tập thuộc tính không khoá là DH.
Bài tập 32:
Cho lược đồ quan hệ a = (U,F) với U = ABCDEGHIK và
F = { ACK ® BCH , CH ® BD , DG ® BDE, ABCE ® CD}
i. Hãy tìm một khoá của lược đồ trên.
ii. Tập CDGH có phải là khoá của lược đồ đã cho hay không ?
iii. Hãy tìm tất cả các khoá còn lại
iv. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ?
Bài tập 33:
Cho lược đồ quan hệ a = (U, F) với U = ABCDEGH và
F = { AB ® CE , BCD ® CH , DG ® ACE,
AD ® CDH, BC ® AEG }
i. Lược đồ đã cho có một hay nhiều khoá ?
ii. Hãy tìm một khoá của lược đồ trên.
ii. Tập BCDG có phải là khoá của lược đồ a đã cho hay không ?
iii. Liệu có thuộc tính nào không tham gia vào bất kỳ một khoá nào không ?
Bài tập 34:
Cho lược đồ a = (U, F) có U = ABCDEGH và
F = { AB ® CE, BCD ® CH, DG ® ACE, AD ® DCH, BC ® AEG }
a. Hãy tìm một khoá của lược đồ.
b. Xây dựng một lược đồ quan hệ a có tập thuộc tính U đã cho ở trên sao cho thoả mãn 3 điều sau :
1. Lược đồ có it nhất ba khoá.
2. Hai khoá bất kỳ có giao khác trống.
3. Các thuộc tính B và H là các thuộc tính không khoá
Bài tập 35:.
a. Cho lược đồ a = (U, F) có U = ABCDEGH và
F = { AB ® CE, BCD ® CH, DG ® ACE, AD ® DCH, BC ® AEG }
a. Hãy tìm một khoá của lược đồ.
b. Xây dựng một lược đồ quan hệ a có tập thuộc tính U đã cho ở trên sao cho thoả mãn 3 điều sau :
1. Lược đồ có it nhất ba khoá.
2. Hai khoá bất kỳ có giao khác trống.
3. Các thuộc tính B và H là các thuộc tính không khoá
Hãy giải thích.
Các file đính kèm theo tài liệu này:
- bai_tap_ve_khoa_6635.doc