X + Các tập con của
a) K+ =Ω (hay F∈ +).
5.5.3. THUẬT TOÁN TÌM MỘT KHÓA CỦA LƯỢC ĐỒ QUAN HỆ
Ý tưởng:
Khóa của lược đồ quan hệ bị kẹp giữa hai tập thuộc tính là Ω\R và (Ω\R) (L∩R)∪
36
Input: Tập thuộc tính Ω và tập phụ thuộc hàm F. Output: Một khóa K của lược đồ quan hệ.
begin X:= Ω\R If (Ω\R)+ Ω ⊂ then begin X:= X (L∩R)∪ for each Ai L∩R ∈ do
if (X\{Ai})+ = Ω then X:= X\{Ai}; end;
K:=X;end. end.
Ví dụ 5.7: Cho lược đồ quan hệ R(A,B,C,D,E,G) với tập phụ thuộc hàm F = {B→C, C→B, A→GD}
Hãy chỉ ra một khóa của lược đồ quan hệ này.
Giải
Ω = ABCDEG, L = ABC, R = BCDGΩ\R = AE, L∩R = BC Ω\R = AE, L∩R = BC
Ta thấy (Ω\R)+ = (AE)+ = AEDG Ω nên:⊂
X = Ω\R (L∩R) = ABCE∪
Xét (X\{B})+ = (ACE)+ = ABCEGD = Ω ⟹ X = ACE
Xét (X\{C})+ = (AE)+ = ADEG ≠ Ω ⟹ Không thể loại bỏ C khỏi X. Vậy K = X = ACE là một khóa của lược đồ quan hệ.
38
Ví dụ 5.8: Cho lược đồ quan hệ R(A,B,C,D,E,G,H,I) với tập phụ thuộc hàm
F = {AB→E, AG→I, BE→I, E→G, GI→H}Hãy chỉ ra một khóa của lược đồ quan hệ này. Hãy chỉ ra một khóa của lược đồ quan hệ này.
Giải
Ω = ABCDEGHI, L = ABEGI, R = EGHIΩ\R = ABCD, L∩R = EGI Ω\R = ABCD, L∩R = EGI
Ta thấy (Ω\R)+ = (ABCD)+ = ABCDEGHI = Ω
Bước 1: Đặt TN = Ω\R và TG = L∩R
Bước 2:
if TG= ⍉ then
Lược đồ quan hệ chỉ có một khóa K = TN; Kết thúc thuật toán;
else
Qua bước 3;
Bước 3: Tìm tất cả các tập con Xi của tập TG
Bước 4:
Gọi S là tập các khóa của lược đồ quan hệ; Đặt S = ;⍉ Tìm các siêu khóa Si bằng cách: ∀Xi if (TN X∪ i)+ = Ω then begin Si = TN X∪ i; S = S {S∪ i};