Thuật toán tìm tất cả khoá Ký hiệu: N: Tập thuộc tính nguồn, là tập chứa những thuộc tính chỉ xuất hiện ở vế trái, không nằm bên vế trái và vế phải của mọi phụ thuộc hàm (tương tự như nút gốc) TG: Tập thuộc tính trung gian, là tập chứa nhũng thuộc tính vừa xuất hiện ở vế trái và vừa xuất hiện ở vế phải trong các phụ thuộc hàm Ví dụ 1: Cho lược đồ quan hệ R(A, B, C, D, E, G, H) và tập phụ thuộc hàm F={ B → A , DA → CE, D → H, GH → C, AC → D} N = { B, G } TG = {A, C, D, H} Ví dụ 2: Cho lược đồ quan hệ R(A, B, C, D, E, G) và tập phụ thuộc hàm F={ AE → C , CG → A, BD → G, GA → E} N = { B, D } TG = {A, C, E, G} Khoa HTTT Đại học CNTT 2 Thuật toán tìm tất cả khoá (1) Bước 1: Tìm tập nguồn N. Nếu N+F = Q+ thì chỉ có 1 khoá là N, ngược lại qua bước 2 Bước 2: Tìm tập trung gian TG. Tìm tập tất cả các tập con Xi của tập TG. Bước 3: Tìm tập S chứa mọi siêu khoá Si Với mỗi Xi , nếu (N ∪ Xi)+F = Q+ thì Si = (N ∪ Xi) Nếu: (N ∪ Xi)+F = Q+ khi đó N ∪ Xi là một khoá. Do vậy loại bỏ các trường hợp Xj : Xi ⊂ Xj. VD: Xi = {AB}, Xj = {ABC}. Ta thấy Xi ⊂ Xj và Xi là khoá vì vậy không xét trường hợp Xj nữa.
Thuật tốn tìm khố Khoa HTTT - Đại học CNTT Thuật tốn tìm tất khố Ký hiệu: N: Tập thuộc tính nguồn, tập chứa thuộc tính xuất vế trái, không nằm bên vế trái vế phải phụ thuộc hàm (tương tự nút gốc) TG: Tập thuộc tính trung gian, tập chứa nhũng thuộc tính vừa xuất vế trái vừa xuất vế phải phụ thuộc hàm Ví dụ 1: Cho lược đồ quan hệ R(A, B, C, D, E, G, H) tập phụ thuộc hàm F={ B → A , DA → CE, D → H, GH → C, AC → D} N = { B, G } TG = {A, C, D, H} Ví dụ 2: Cho lược đồ quan hệ R(A, B, C, D, E, G) tập phụ thuộc hàm F={ AE → C , CG → A, BD → G, GA → E} N = { B, D } TG = {A, C, E, G} Khoa HTTT - Đại học CNTT Thuật tốn tìm tất khố (1) Bước 1: Tìm tập nguồn N Nếu N+F = Q+ có khố N, ngược lại qua bước Bước 2: Tìm tập trung gian TG Tìm tập tất tập Xi tập TG Bước 3: Tìm tập S chứa siêu khoá Si Với Xi , (N ∪ Xi)+F = Q+ Si = (N ∪ Xi) Nếu: (N ∪ Xi)+F = Q+ N ∪ Xi khoá Do loại bỏ trường hợp Xj : Xi ⊂ Xj VD: Xi = {AB}, Xj = {ABC} Ta thấy Xi ⊂ Xj Xi khoá khơng xét trường hợp Xj Khoa HTTT - Đại học CNTT Thuật tốn tìm tất khố (2) Ví dụ Cho lược đồ quan hệ R(A, B, C) tập phụ thuộc hàm F={ AB → C, C → A} Bước 1: N = {B} B+F = B ≠ Q+ Bước 2: TG = {A, C} Tất tập tập trung gian CTG = {A, C, AC} Bước 3: N B B B Xi A C AC (N ∪ Xi) (N ∪ Xi)+F (N ∪ Xi)+F = Q+ BA ABC ĐÚNG BC ABC ĐÚNG Khơng xét Xi = A ⊂ Xj = AC Kết luận: Tập Khoá S= {AB, BC} Khoa HTTT - Đại học CNTT Thuật tốn tìm tất khố (3) Ví dụ: Cho lược đồ quan hệ R(A, B, C, D, E, G) tập phụ thuộc hàm F={ AE → C , CG → A, BD → G, GA → E} Tìm tất khóa R? KQ: ABD, BDC Khoa HTTT - Đại học CNTT Bước 1: N = {BD} BD+F = BDG ≠ Q+ Bước 2: TG = {A, C, E, G} Tất tập tập trung gian CTG = {A, C, E, G, AC, AE, AG, CE, CG, EG, ACE, ACG, CEG, ACEG} Bước 3: N Xi (N ∪ Xi) (N ∪ Xi)+F (N ∪ Xi)+F = Q+ BD A ABD ABCDEG ĐÚNG BD C BCD ABCDEG ĐÚNG BD BD E G BDE BDG BDGE BDG SAI SAI BD EG BDEG DBEG SAI Các tập khơng xét Xj : Xi ⊂ Xj : {AC, AE, AG, CE, CG, ACE, ACG, CEG, ACEG} Kết luận: Tập Khoá S= {ABD, BCD} Khoa HTTT - Đại học CNTT Thuật tốn tìm khóa Thuật tốn tìm khóa lược đồ quan hệ Q Bước 1: gán K = Q+ Bước 2: A thuộc tính K, đặt K’ = K - A Nếu K’+= Q+ gán K = K' thực lại bước Nếu muốn tìm khóa khác (nếu có) lược đồ quan hệ, ta thay đổi thứ tự loại bỏ phần tử K Thuật tốn tìm khóa Ví dụ: cho lược đồ quan hệ Q tập phụ thuộc hàm F sau: Q(A,B,C,D,E) ‒ F={ABC, AC B, BC DE} tìm khóa K B1: K=Q+ K=ABCDE B2:(K\A)+ (BCDE)+=BCDE ≠ Q+ K=ABCDE B3:(K\B)+ (ACDE)+= ABCDE = Q+ K=ACDE B4: (K\C)+ (ADE)+ = ADE ≠ Q+ K=ACDE B5: (K\D)+ (ACE)+ = ACEBD=Q+ K=ACE B6: (K\E)+ (AC)+ = ACBDE =Q+ K=AC ‒ Thuật tốn tìm khóa Ví dụ: cho lược đồ quan hệQ(ABCDEGHI) tập thuộc tính F={AC B; BI AC; ABC D; H I; ACE BCG; CG AE} Tìm K Đáp án: K=CGH BÀI TẬP BÀI TẬP BÀI TẬP BÀI TẬP BÀI TẬP ... DBEG SAI Các tập khơng xét Xj : Xi ⊂ Xj : {AC, AE, AG, CE, CG, ACE, ACG, CEG, ACEG} Kết luận: Tập Khoá S= {ABD, BCD} Khoa HTTT - Đại học CNTT Thuật tốn tìm khóa Thuật tốn tìm khóa lược đồ... HTTT - Đại học CNTT Thuật tốn tìm tất khố (1) Bước 1: Tìm tập nguồn N Nếu N+F = Q+ có khố N, ngược lại qua bước Bước 2: Tìm tập trung gian TG Tìm tập tất tập Xi tập TG Bước 3: Tìm tập S chứa siêu... A Nếu K’+= Q+ gán K = K' thực lại bước Nếu muốn tìm khóa khác (nếu có) lược đồ quan hệ, ta thay đổi thứ tự loại bỏ phần tử K Thuật toán tìm khóa Ví dụ: cho lược đồ quan hệ Q tập phụ thuộc