Tải bản đầy đủ (.pdf) (11 trang)

Bài tập về các khóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (218.05 KB, 11 trang )

NHẬP MÔN CSDL QUAN HỆ
Soạn bởi bộ môn Công nghệ phần mềm - 2007


Trang
1

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
I. CÁC ĐỊNH NGHĨA, TÍNH CHẤT, THUẬT TOÁN
1. Họ Sperner
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.

2. Siêu khoá và khoá


Định nghĩa: 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: 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: 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:
- K là một siêu khoá
-

K
1


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ệ α=(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
+
-

K
1


K thì K
1

Æ
U

F
+
(K
+



U)

Tập hợp K

α
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ệ
α=(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

2. Một số vấn đề về khoá

Cho α=(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 đồ
NHẬP MÔN CSDL QUAN HỆ
Soạn bởi bộ môn Công nghệ phần mềm - 2007



Trang
2
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 đồ α = (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ệ α. 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 α =(U, F) với F={L
i
Æ R
i
, 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 I
α
là giao của
tất cả các khoá của lược đồ.
Kí hiệu N
α
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 S
α
={ U \
U
n
i 1=
(R
i
– L
i
) | ∀ L

i
Æ R
i
∈ F }
Khi đ ó: I
α
=S
α
= { U \
U
n
i 1=
(R
i
– L
i
) | ∀ L
i
Æ R
i
∈ F}
Bài toán 4:

Cho lược đồ quan hệ α= (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 I

α

- Nếu (I
α
)
+
=U thì lược đồ đã cho có duy nhất một khoá
- Nếu (I
α
)
+
≠ U thì lược đồ có nhiều khoá
Trong ví dụ trên ta có I
α
=AH do vậy ( I
α
)
+
≠ U do vậy lược đồ đã cho có nhiều khoá.

Bài toán 5:

Cho lược đồ α = (U, F)

Hãy tìm các khoá của lược đồ.

NHẬP MÔN CSDL QUAN HỆ
Soạn bởi bộ môn Công nghệ phần mềm - 2007



Trang
3
Thuật toán:

- Xác định I
α

- Xác định N={ ∪ ( R
i
-L
i
) sao cho L
i
∈ I
α
}
- Đặt N’=(I
α
N)
+
\ I
α
( N’⊆N
α
)
- Đặt B=U \N’ \ I
α
, khi đó B ∪ I
α
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ệ: α=(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ệ

α=(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 đồ α=(U, F)

Với U=ABCDEGH
F={AB Æ CDE, AC Æ BCG, BDÆG, ACHÆHE, CG Æ BDE }
I
α
= 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ệ α = (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 đồ


NHẬP MÔN CSDL QUAN HỆ
Soạn bởi bộ môn Công nghệ phần mềm - 2007


Trang
4
I
α
=U \ ∪ (R
i
-L
i
)=ABC
N=∪ (R
i
-L
i
)=DH ( víi L
i
⊆I
α
)
N’=(I
α
N)
+
\ I
α
=(ABCDH)
+

\ ABC = DH ⊆ N
α

B=U \ N \ I
α
= ABCDEGH \ ABC \ DH =EG
Do (I
α
)
+
≠ U
nên lược đồ đã cho có nhiều khoá, do vậy lược đồ này có hai khoá là
I
α
∪ E
=ABCE

I
α
∪ 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ệ α=(U, F)


với
U=ABCDEGHK
F={ ADH→BC, GH→BE, D→CG, CH→K}
Hãy tìm
a) Giao của tất của các khoá
b) Lược đồ đã cho có một hay nhiều khoá
c) Hãy tìm tất của các khoá của lược đồ
d) 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 đồ α=(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ệ α=(U, F)

với
U=ABCDEGH
F={CD→H, E→B, D→G, BH→E, CH→DG, C→A }
a) Tìm giao của tất của các khoá
b) Lược đồ có một hay nhiều khoá
c) Tập ABD có phải là khoá của
α
không? vì sao ?
NHẬP MÔN CSDL QUAN HỆ
Soạn bởi bộ môn Công nghệ phần mềm - 2007


Trang
5
d) Tập CH có phải là khoá của
α
không? vì sao ?

e) 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
α


Bài tập 7:

Cho lược đồ quan hệ (=(U, F) với
U=ABCD, F={ AD→BC, B→A, D→C}

Tìm các khoá của lược đồ
a) 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ệ α=(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á
a) Lược đồ có một hay nhiều khoá
b) Tìm một khoá của lược đồ
c) Tập BCE có phải là khoá của α không? vì sao ?

d) 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ệ α=(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 đồ
a) Ngoài khoá K lược đồ
α
còn có khoá nào khác không? Vì sao?
b) Tập BCH có phải là khoá của
α
không? vì sao ?
c) Tập BD có phải là khoá của
α
không? vì sao ?

Bài tập 10:

Cho lược đồ quan hệ α=(U, F)

với
U=ABCDE , F={ DE→A, B→C, E→AD}

a) Tìm một khoá của lược đồ
b) Tập BCE có phải là khoá của α không? vì sao ?
c) Tập AD có phải là khoá của α không? vì sao ?

d) Tập BD có phải là khoá của α không? vì sao ?
e) Lược đồ có còn khoá nào nữa không? Vì sao?
f) 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 α.

Bài tập 11:

Cho lược đồ quan hệ α=(U, F) với
U=ABCDE ,
F={ AE→B, C→D, A→BE}
Tìm một khoá của lược đồ
a) Tập BDE có phải là khoá của α không? vì sao ?
b) Tập AC có phải là khoá của α không? vì sao ?
c) Lược đồ có còn khoá nào nữa không? Vì sao?
d) 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 α


Bài tập 12:

Cho lược đồ quan hệ α=(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}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×