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

Tìm khóa tối thiểu của một quan hệ

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 (26.31 KB, 1 trang )

H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 27
DẠNG 7: TÌM KHOÁ TỐI THIỂU CỦA QUAN HỆ
Bài toán: Cho quan h R(U, F). Hãy tìm một khoá tối thiểu của R.
Kiến thức liên quan: Cho quan hệ R(U, F), X ⊆ U.
X được gọi là khoá của R nếu X
+
≡ U.
X được gọi là một khoá tối thiểu của R nếu: X là khoá của R và X tối thiểu (tức
không tồn tại một tập con thực sự nào của X mà tập con đó cũng là khoá của R).
Giải thuật tìm khoá tối thiểu của R:
B1: Đặt K
0
= {U}
B2: Tính K
1
= K
0
∪ Z nếu ∃ Y → Z mà Y ∈ K
0

...
Tính K
i
= K
i-1
∪ Z nếu ∃ Y → Z mà Y ∈ K
i-1

Lặp cho tới khi K
i


≡ K
i-1

B3: Kết luận K
i
là một khoá tối thiểu của R.
Ví dụ:
Cho quan hệ R(U, F): U = {A, B, C, D, E, G, H}
Và F = {AB →C, B → DE, C → EG, G → B, E → H}
Tìm một khóa tối thiểu của quan hệ R.
Đặt K
0
= {A,B,C,D,E,G,H}
K
1
= {ABCDEG} vì E → H và E ∈ K
0

K
2
= {ABCD} vì C → EG và B ∈ K
1

K
3
= {ABC} vì B → D và B ∈ K
2

K
4

= {AB} vì AB → C và AB ∈ K
3

K
5
≡ K
4

Vậy {AB} là một khóa tối thiểu của R.
Chú ý: Với một quan hệ R(U, F) cho trước có thể tồn tại nhiều khóa tối thiểu
khác nhau, tùy thuộc vào thứ tự loại bỏ các thuộc tính trong giải thuật. Chẳng hạn, với ví
dụ trên, ta có thể thu được một khóa khác bằng cách loại B đi ngay từ đầu:
Đặt K
0
= {A,B,C,D,E,G,H}
K
1
= {ABCDEG} vì E → H và E ∈ K
0

K
2
= {ACDEG} vì G → B và G ∈ K
1

K
3
= {ACD} vì C → EG và C ∈ K
2


K
4
≡ K
3

Vậy {ACD} là một khóa tối thiểu của R.
Ta thấy {ACD} có nhiều thuộc tính hơn {AB} nhưng nó vẫn là khóa tối thiểu.
Điều này cũng dễ hiểu do {ACD}
+
trùng với U nên nó là khóa của R. Mặt khác nó
không chứa một tập con nào cũng là khóa của R nên nó tối thiểu.
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.

×