1. Trang chủ
  2. » Giáo án - Bài giảng

CÁC THUẬT TOÁN TÌM KHÓA (CƠ SỞ DỮ LIỆU)

14 431 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

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óaThuậ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={ABC, 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

Ngày đăng: 28/03/2019, 14:54

TỪ KHÓA LIÊN QUAN

w