Thuật toán tìm tất cả các khoá của lượcđồ quan hệ

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 113 - 115)

1. Định nghĩa các thuật ngữ: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ

13.3.5. Thuật toán tìm tất cả các khoá của lượcđồ quan hệ

Thuật toán 1:

Bước 1:Xác định tất cả các tập con khác rỗng của Q+ . Kết quả tìm được giả sử là các tập thuộc tính X1,X2,...X2

n -1

Bước 2:Tìm bao đóng của các xi

Bước 3:Siêu khóa là các xi có bao đóng đúng bằng Q+ .Giả sử ta đã có các siêu khóa là S={S1,S2,...Sm}

Bước 4:Xây dựng tập chứa tất cả các khóa cua Q+ từ tập S bằng cách xét mọi Si,Sj con của S(i#j), nếu Si ⊂ Sj thì ta loại Sj (i,j=1...n), kết quả còn lại của S chính là tập tất cả các khóa cần tìm.

Ví dụ:

Tìm tất cả các khóa của lược đồ sau: Q(C, S, Z); F={f1:CS→Z;f2:Z→C}

X1

Xi +

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 Thuật toán 2:

Cho lợc đồ quan hệα = (U, F) hãy tìm tất cả các khoá của lược đồ quan hệα. b1) Xác định Iα

b2) Nếu Iα+= U thì kết luận lược đồ có một khoá duy nhất là Iα và kết thúc thuật toán. Ngượclại Iα+≠U thì chuyển sang bướctiếp theo.

b3) Xác định N={∪( Ri-Li) sao cho Li⊆Iα} -đặt N’=(IαN)+\ Iα ( N’⊆Nα)

-đặt N’’= R –L (R =∪Ri, L =∪ Li) -đặt B=U\N’\N’’\ Iα

b4) Nếu | B |=2 (tập B chỉ gồm có hai thuộc tính), giả sử B=B1B2 khi đó lược đồ chỉ có hai khoá là IαB1 và IαB2, kết thúc thuật toán. Ngược lại nếu | B |>2 thì chuyển sang bướctiếp theo.

b5) Tìm tất cả các tập con khác rỗng của B, ký hiệu các tập con đó là {B1, B2, .. Bn}. Tính (Bi∪Iα)+ (i=1..n), nếu (Bi∪Iα)+= U thìđặt Mi=Bi∪Iα.

b6) Khi đó M= {M1, M2, …, Mh} là họ tất cả các siêu khoá của lược đồα. b7) Loại bỏ các siêu khoá không tối tiểu ra khỏi M,tức là nếu ∃Mi⊆Mj(*) ( i≠j, i, j=1,h) thì loại Mj ra khỏi M. Tập M thu được sau khi loại bỏ tất các phần tử thoả mãn biểu thức (*) chính là họ tất cả các khoá của lược đồα. Nhận xét: Từ một tập B gồm n phần tử ta có thể lập lên 2n-1 tập con khác rỗng của B. Cho nên dù n là một số không lớn lắm thì 2n-1 cũng là một số tương đối lớn. Do vậy bài toán tìm tất cả các khoá của lược đồ quan hệ có thể coi là một bài toán khó (vì cóđộ phức tạp thuật toán là hàm mũ).

Nếu Iα+≠U và tập B chỉ gồm hai phần tử (giả sử B=B1B2) thì suy ra lợc đồ chỉ có hai khoá là Iα∪B1và Iα∪B2.

Ví dụ:cholượ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 đồ

Giải:

Iα=U \∪(Ri-Li)=ABC

N=∪(Ri-Li)=DH ( với Li⊆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 và Iα ∪G= ABCG

Bài 14: THẢO LUẬN BÀI TẬP VỀKHÓA CỦA LƯỢC ĐỒ QUAN HỆ

14.1. Tóm tắt về lý thuyết14.2. Bài tập 14.2. Bài tập

14.3. Thảo luận.

Bài 15: CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ

Một phần của tài liệu Đề cương bài giảng môn cơ sở dữ liệu (Trang 113 - 115)

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

(161 trang)