KHOÁ CỦA LƯỢC ĐỒ QUANHỆ MỘT SỐ THUẬT TOÁN TÌM KHOÁ

Một phần của tài liệu 1353062502Giao trinh Co so du lieu (Trang 97 - 102)

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, (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (TNXi) (TNXi)+ 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: (adsbygoogle = window.adsbygoogle || []).push({});

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á.

Một phần của tài liệu 1353062502Giao trinh Co so du lieu (Trang 97 - 102)