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Ệ