.Thuật toán tìm tất cả khóa

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Công nghiệp Thanh Hóa (Trang 71 - 75)

a.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 }

Bƣớc 2: Tính Xi+

Bƣớc 3: Nếu Xi+

= Q+ thì Xi là siêu khoá

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, S2,…, 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ụ 10: Tìm tất cả các khóa của lƣợc đồ quan hệ và tập phụ thuộc hàm nhƣ sau:

Q(C, S, Z); F = {f1:CS  Z; f2:Z  C}

Xi X i

+ Siêu khóa khóa

C C S S CS CSZ CS CS Z ZC CZ CZ SZ SZC SZ SZ CSZ CSZ CSZ

Vậy lƣợc đồ quan hệ Q có hai khóa là: {C,S} và {S,Z}

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à 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 tất cả các tập con.

b.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 quan tâm một số khái niệm sau:

+ Tập thuộc tính 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 các phụ thuộc hàm và các thuộc tính không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm.

+ Tập thuộc tính đích (TD) 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 các phụ thuộc hàm.

72

+Tập thuộc tính trung gian (TG) chứa tất cả các thuộc tính xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm.

Hệ quả: Nếu K là khóa của Q thì TN  K và TD K = 

Chứng minh TN  K

Theo hệ quả 2 của thuật toán tìm bao đóng ta có K+

 K  TD TG Ta chứng minh A  TN  A  K. Thật vậy:

Nếu A K  K+  K TD  TG  Q+- A  K không là khóa  mâu thuẫn

Chứng minh TD  K =

Giả sử có thuộc tính A TD  K ta sẽ dẫn đến điều mâu thuẫn. Thật vậy:

Theo hệ quả 1 của thuật toán tìm bao đóng thì K+

= (K - A)+  A A TD  có X là vế trái của một phụ thuộc hàm trong F sao cho X  A (1) và A  X  X K+ = (K-A)+A vì A X X  (K-A)+ ị (K-A)  X (2)

(1) và (2) cho (K-A)  A  A  (K-A)+  (K-A)+  A = (K-A)+  K+ = (K-A)+ mâu thuẫn với điều K là khóa.

Dựa vào hệ quả trên ta có thuật toán tìm tất cả khóa sau:

Dữ liệu vào: Lƣợc đồ quan hệ Q và tập phụ thuộc hàm F

Dữ liệu ra: Tất cả các khóa của quan hệ

Thuật toán tìm tất cả khóa của một lƣợc đồ quan hệ

Bƣớc 0. Tìm tậ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 trung 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

Chuyển sang bƣớc 1

Bƣớc 1 Tì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)+ Bƣớc 4: Nếu Xi+ = Q+ thì Xi là siêu 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, S2,…, Sm}

73

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ụ 11: Giải lại bài tập ví dụ 10

áp dụng thuật toán cải tiến ta có lời giải nhƣ sau: TN = {S}; TG = {C,Z}

Gọi Xi là các tập con của tập TG:

Xi (TN Xi) (TNXi)+ Siêu khóa khóa

F S S

C SC Q+ SC SC

Z SZ Q+ SZ SZ

CZ SCZ Q+ SCZ

Kết quả quan hệ trên có hai khóa là : {S,C} và {S,Z}

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

BÀI TẬP:

Bài 1: Nêu định nghĩa khóa của lƣợc đồ quan hệ, cho ví dụ. Bài 2: Nêu thuật toán tìm khóa, cho ví dụ.

Bài 3: Cho quan hệ R trên tập thuộc tính U = {A, B, C, D, E, G) và tập các phụ

thuộc hàm F = {AB C, ACD, DEG, GB, AD, CGA}. a. Tính bao đóng {AC}+ của tập thuộc tính {AC}.

b. Tập các phụ thuộc hàm F đã là tối thiểu cha? Vì sao? Nếu cha,tìm một phủ tối thiểu của F.

Bài 4: Cho quan hệ R trên tập thuộc tính U = {G, H, I, K, L, M} và tập các phụ

thuộc hàm F = {GH L, IM, LK, HMLG, GKI, HL}.

a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm HI G và GH  KM.

b.Tính bao đóng {G, H}+ của tập thuộc tính {G, H}.

c. Tập các phụ thuộc hàm F đã là tối thiểu chƣa? Vì sao? Nếu chƣa, tìm một phủ tối thiểu của F.

Bài 5: Tìm khóa của sơ đồ quan hệ sau:

a. W=(R,F)

Trong đó: R=(ABCDEF); F={ABC, CD, DE, DEF}. b. W=(R,F)

74

Bài 6: Cho lƣợc đồ quan hệ R(U,F), U = ABCDEG F = { BEC CDAB ACBD BCAE CAD}

a. Tính (AC)+

b. Chứng tỏ BADE

c. Tìm tất cả các khóa của lƣợc đồ quan hệ trên . d. Tìm phủ tối thiểu của tập phụ thuộc hàm trên.

Bài 7: Cho lƣợc đồ quan hệ R(U,F), U = ABCDEG F = { ABC CA BCD DEG CGBD ACDB CDAG}

a. Tính (CD)+ .

b. Tìm tất cả các khóa của lƣợc đồ quan hệ trên. c. Tìm phủ tối thiểu của tập phụ thuộc hàm F.

Bài 8: Xét quan hệ R(A,B,C,D,E) và tập các phụ thuộc hàm sau: F= {AB C, CD E, DE  B}

a. Tìm một khóa của lƣợc đồ quan hệ trên. b. Tìm tất cả các khóa của lƣợc đồ quan hệ.

Bài 9: Cho lƣợc đồ quan hệ R(U, F) với U = ABCDEG F = { A  B, BE C, EC

 A, AD  G, ED  C}

a. Phụ thuộc hàm f: ECD  ABG có đƣợc suy dẫn từ F? b. Tìm tất cả các khóa của R

75

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường CĐ Nghề Công nghiệp Thanh Hóa (Trang 71 - 75)

Tải bản đầy đủ (PDF)

(109 trang)