7. X→Y ⇔Y + ⊆ X+
5.4. KHOÁ CỦA LƯỢC ĐỒ QUANHỆ MỘT SỐ THUẬT TOÁN TÌM KHOÁ
THUẬT TOÁN TÌM KHOÁ
5.4.1.Định Nghĩa Khoá Của Quan Hệ (relation ke y)
Cho quan hệ Q(A1,A2,…,An) được xác định bởi tập thuộc tính Q+ và tập
phụ thuộc hàm F định nghĩa trên Q, cho K ⊆ Q +. K là một khoá của Q nếu thoả đồng thời cả hai đ iều kiện sau:
1. K → Q + ∈ F +(hay KF Q +)
(K chỉ thoả điều kiện 1 thì được gọi là s iêu khoá)
Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu
Trang 63
2. Không tồn tại K' ⊂ K sao cho K'+ Q +
Một lược đồ quan hệ có thể có nhiều siêu khoá, nhiều khoá.
5.5.2.Thuật Toán Tìm Một Khoá Của Một Lược Đồ Quan Hệ Q
K = Q+;
While A ∈ K do
if (K - A)+ = Q+ then K = K - A K còn lại chính là một khoá cần tìm.
Nếu muốn tìm các khoá 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 K.
Ví dụ 5.7
Cho lược đồ quan hệ Q(ABC) và tập phụ thuộc h àm
F={ A→ B; A → C; B → A}
Hãy tìm một khóa của Q.
Giải:
K={A,B,C}
Loại thuộc tính A, do (K-A)+ = Q+ nên K={B,C }
thuộc tính B không loại được do (K - B)+ ≠ Q+ nên K={B,C}
Loại thuộc tính C, do (K-C)+ = Q+ nên K={B}. Vậy một khóa của Q là B.
5.4.3. Thuật Toán Tìm Tất Cả Các Khoá Của M ột Lược Đồ Quan Hệ
Thuật toán 5.4 (thuật toán cơ bản)
Bước 1:Xác định tất cả các tập con của Q
Để xác định tất cả các tập con của một lượ c đồ quan hệ Q(A1,A2,…,An)
ta lần lượt duyệt tất cả 2n-1 tập hợp con khác r ỗng của Q+ (n là số thuộc tính
của lược đồ quan hệ Q), kết quả tìm được giả s ử là các tập thuộc tính: S={X1,
X2, …,X2n-1 }
Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu
Trang 64
+
Nếu một tập con Xi (i = 1..,2n-1) của Q+ có bao đóng đúng bằng Q+ thì tập
con dó (theo định nghĩa trên) là một siêu khoá của Q. Giả sử sau bước này có m siêu khoá: S = {S1,S 2,…,Sm}
Bước 4
Xây dựng tập chứa tất cả các khoá của Q từ tập S
Xét mọi Si,Sj con của S (i ≠ j), nếu Si ⊂ Sj thì ta loại Sj (i,j=1..m), kết quả
còn lại chính là tập tất cả các khoá cần tìm.
Ví dụ 5.8
Tìm tất cả các khoá của lược đồ quan hệ Q và tập phụ thuộc hàm
F
được cho như sau: Q(A,B,C); F={ A→ B; A → C; B → A} Xi Xi+ Siêukhóa khóa A + Q A A B
Vậy lược đồ quan hệ Q có hai khoá là: {A} và { B}
Thuật toán trên thì dễ hiểu, dễ cài đặt, tuy nhiên nếu với n khá lớn thì
phép duyệt để tìm ra tập tất cả các tập con của tập Q+ là điều không hiệu quả,
do vậy cần thu hẹp không gian duyệt. Chúng ta sẽ nghiên cứu thuật toán cải
tiến theo hướng giảm số thuộc tính của tập cần duyệt. Chú ý rằng thuật toán này tìm được tất cả các siê u khóa, tất cả các khóa
Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu
Trang 65
Thuật toán 5.5 (thuật toán cải tiến)
Trước khi đi vào thuật toán cải tiến, ta cần đưa thêm một số khái niệm
sau:
-Tập nguồn(TN) chứa tất cả các thuộc tính có xuất hiện ở vế trái và
không xuất hiện ở vế phải của tập phụ thuộc hà m. Những thuộc tính không
tham gia vào bất kỳ một phụ thuộc hàm nào thì cũng đưa vào tập nguồn.
-Tập đích chứa tất cả các thuộc tính có xuất hiện ở vế phải và không
xuất hiện ở vế trái của tập phụ thuộc hàm.
-Tập trung gian(TG) chứa tất cả các thuộc tí nh vừa tham gia vào vế trái
vừa tham gia vào vế phải.
Dữ liệu vào: Lược đồ quan hệ phổ quát Q và tập phụ thuộc dữ
liệu F
Dữ liệu ra: Tất cả các khoá của quan hệ
Bước 0. Tìmtập thuộc tính
nguồn(TN), tập thuộc tính trung
gian(TG)
Tìm tất cả các tập con của tập tru ng gian gọi là Xi (bằng
phương pháp duyệt nhị phân) if tập trung gian=∅ then
Tập Khoá Tập nguồn ;kết thúc Ngược lại
Qua bước 1
Bước 1Tìm tất cả các tập con của tập trung gian : Xi
: S=
∀ Xi ∈ tập trung gian
if (Tập nguồn ∪ Xi)+ = Q+ then S = S ∪ { Tập nguồn ∪ Xi} {S là tập các siêu khoá cần tìm}
Bước 2: Tính TN ∪ Xi
Bước 3: Tính (TN ∪ Xi)+ +
Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu
Trang 66 Xi (TN∪Xi) (TN∪Xi)+ Siêukhoá khoá
Nếu một tập con TN ∪ Xi có bao đóng đú ng bằng Q+ thì TN ∪ Xi là một
siêu khoá của Q.
Giả sử sau bước này có m siêu khoá: S = {S1,S 2,…,Sm}
Bước 5
Xây dựng tập chứa tất cả các khoá của Q từ tập S
Xét mọi Si,Sj con của S (i ≠ j), nếu Si ⊂ Sj thì ta loại Sj (i,j=1..m), kết quả
còn lại chính là tập tất cả các khoá cần tìm.
Ví dụ 5.9 (Giải lại bài tập ở ví dụ 5.8)
Ap dụng thuật toán cải tiến ta có lời giải như sau :
TN ={ } ; TG ={A,B}
Gọi Xi là các tập con của tập TG:
Vậy quan hệ trên có hai khoá là : [A] và [B]
Chú ý :
Thuật toán cải tiến này tìm được tất cả các khoá , nhưng không chắc tìm ra tất
cả các siêu khoá.