Định lý thứ hai về cách biểu diễn khoá

Một phần của tài liệu Thu gọn lược đồ quan hệ và ứng dụng (Trang 43 - 49)

Cho LĐQH p = (U,F). Khi đó mọi khoá K của p đều biểu diễn được dưới dạng K = LM trong đó L là một vế trái cực tiểu của F và M là khoá của LĐQH p\L+.

Chứng minh

Giả sử K  Key(p). Nếu K=U thì đương nhiên chứa mọi vế trái của PTH trong F,

khi đó ta chọn một vế trái cực tiểu tuỳ ý. Giả sử K  U, khi đó để tính bao đóng K+ ta

phải tìm được một PTH f: XY  F thoả tính chất XK. Vì X là vế trái của f nên trong ML(F) phải tồn tại một vế trái cực tiểu L để L  X. Ta chọn một số vế trái cực tiểu này.

Như vậy ta đã chứng minh được rằng mọi khoá K đều chứa một vế trái cực tiểu L

nào đó. Đặt M=K\L, ta có K=LM. Ta chứng minh M là khoá của LĐQH p\L+. Nếu L+

= U thì p\L+ = p\U = (,). Lược đồ này có khóa duy nhất là M=. Khi đó K=L. Giả sử L+  U. Từ đây suy ra L  K vì nếu L = K thì phải có L+ = K+ = U, trái với giả thiết L+  U. Theo tính bộ phận của khoá L+ K = L hay K\L = K\L+ = M. Từ

đây suy ra MU\L+. Theo bổ đề về siêu khoá trong phép thu gọn LĐQH, M sẽ là siêu

về siêu khoá trong phép thu gọn LĐQH, L+P sẽ là siêu khoá của p, do đó (L+P)+ = U. Áp dụng tính chất của bao đóng ta có (L+P)+ = (LP)+ = U, do đó LP là siêu khoá của p.

Vì P  M  K = LM nên LPK. Vì K là khoá của p nên LP = K = LM. Để ý rằng LP=, LM= và PM ta suy ra P = M. Điều này chứng tỏ M là khoá của p\L+ .

2.8.1 Định nghĩa tập các vế trái cực tiểu

Cho LĐQH p = (U,F). Ta ký hiệu ML(F) là tập các vế trái cực tiểu của F, ML(F) = MIN{LS(f)|fF}.

2.8.2 Bổ đề vế trái cực tiểu

Cho LĐQH p = (U,F). Nếu L ML(F) thì L  Key(p) khi và chỉ khi L+ = U.

Ví dụ 14: Cho lược đồ quan hệ p = (U,F). U= ABCDEH.

F = { AED, AC, EBC, EHA, ACEH, BDC } Ta có ML (F) = {A,E,BD}.

- Trường hợp 1: Xét A trong ML(F). Ta thấy A+ = ABCDEH = U. Vậy A là khoá của p.

- Trường hợp 2: Xét E trong ML(F). Ta thấy E+ = EBC U. Vậy E không phải là khoá của p.

Ta thu gọn p theo E+. Đặt q = p\E+ = (V,G), ta có: V = ABCDEH\EBC = ADH,

F = {AD, A (loại),  (loại), HA, AH, D (loại)} = { AD, HA, AH} = {ADH, HA}.

Dễ dàng thấy H là một khóa của q. Như vậy EH là khoá của p, trong đó E là một vế trái cực tiểu, H là khoá của p\E+.

- Trường hợp 3: Xét BD trong ML(F). Ta thấy BD+ = BDC ≠ U. Vậy BD không phải là khoá của p.

V = ABCDEH\BCD = AEH, G = F\BCD = {AE (loại), A (loại), E (loại), EHA, AEH,  (loại)} = { EHA, AEH }.

Dễ dàng thấy Key(q) = {A,EH}.Ta thấy {A, EH} lại là khoá của p trong 2 trường hợp trên.

 Như vậy p có 2 khoá Key(p) = {A, EH}

Chú ý: Ở ví dụ này, trong trường hợp 2 ta đã tính được LĐQH q = p\E+ = (V,G), V=ADH, G={ADH, HA}. Ngoài khoá H, lược đồ q còn có khoá A, tuy nhiên EA không phải là khoá riêng của p vì bản thân A đã là khoá của p.

Ví dụ 15: Minh hoạ sự tồn tại LĐQH có vế trái cực tiểu L không tham gia vào

bất kỳ khoá nào.

Xét LĐQH p = (U,F), Với U = ABCDE. F={ BDCE,

AED, CEABD, BEACD}.

Ta thấy cả 4 vế trái đều là cực tiểu, như vậy ML(F) = {BD, AE, CE, BE}. Ngoài ra do (BD)+ = (CE)+ = (BE)+ = U nên {BD, CE, BE}  Key(a).

Mặt khác, (AE)+ = ADE  U nên AE không thể là khoá. Ta chứng tỏ rằng vế trái cực tiểu AE không có bất kỳ khoá nào. Thật vậy, vì (AE)+ = ADE nên để xây dựng một khoá chứa AE ta cần thêm vào AE một vài thuộc tính khác với A, D và E cụ thể là B

hoặc C. Nếu thêm cho AE một thuộc tính B thì ABE chứa khoá BE; nếu thêm cho AE thuộc tính C thì ACE chứa khoá CE. Vậy vế trái cực tiểu AE không thể là bộ phận của bất kỳ khoá nào của p.

Bổ đề sau đây cho ta một dấu hiệu tạo và chọn các khoá từ tập khoá của lược đồ thu gọn.

2.8.3 Bổ đề các khoá sinh từ khoá của lược đồ sau khi thu gọn

Cho LĐQH p = (U,F) và vế trái cực tiểu L. Khi đó nếu KLKey(p\L+) và K không chứa vế trái cực tiểu nào khác ngoài L thì K là khoá của p.

Chứng minh

Giả sử ta có phân hoạch K = LM, MKey (p\L+) và K không chứa vế trái cực tiểu khác L của F.

Theo hệ quả về siêu khoá trong phép thu gọn LĐQH thì K là siêu khoá của p. Gọi P là khoá của p chứa trong K. Ta chứng minh P = K. Nếu P không chứa vế trái cực tiểu nào của F thì U = P+ = P  K, do đó P = K = U.

Giả sử P chứa một vế trái cực tiểu nào đó của F. Do PK mà K chỉ chứa vế trái cực tiểu L duy nhất nên đương nhiên LP.

Đặt Q=P\L, ta có phân hoạch P = L|Q và do đó QM. Vì L là bộ phận của khoá P nên theo định lý về đặc trưng của khoá ta có:

L+ P = L hay P\L+ = P\L = Q.

Theo bổ đề về siêu khoá trong phép thu gọn LĐQH, Q sẽ là siêu khoá của p\L+. Vì M cũng là khoá của p\L+ và QM nên Q = M và do đó:

P = LQ = LM = K. Vậy K là khoá của p.

Ví dụ 16: Xét LĐQH a = (U,F). Với U = ABCDEH.

F = {AED, AC, EBC, EHA, ACEH, BDC}. Ta có ML(F) = {A, E, BD}.

Xét vế trái cực tiểu E. Ta thấy, E+ = EBC U. Vậy E không phải là khoá của p. Ta thực hiện phép thu gọn lược đồ p theo E+.

Ta có q = p\E+ = (V,G), V = ABCDEH\EBC = ADH,

G = F\EBC = {A  D, A   (loại),    (loại), H  A, A  H, D   (loại)} = {A  DH, H  A}.

Dễ dàng tính được Key(q) = {A, H}, do đó EKey(q) = {EA,EH}.

Thành phần EH không chứa thêm vế trái cực tiểu nào khác, do đó EH là khoá của p.

Ví dụ 17: Xét LĐQH a = (U,F), U = ABCD, F = {AB, CD}.

Ta có khoá K=AC chứa đồng thời 2 vế cực trái cực tiểu A và C.

Vậy, ta thấy rằng tồn tại LĐQH có khoá chứa một vài vế trái cực tiểu.

2.8.4 Bổ đề

Cho LĐQH p = (U,F) và vế trái cực tiểu L. Khi đó MKey(p\L+), thì mọi khoá K của p chứa trong LM đều phải chứa M.

Chứng minh

Ta đã biết LM là siêu khoá. Giả sử K là khoá của p và K LM. Ta xét phân hoạch K = P|Q, trong đó P = KL, Q = KM.

Vì LM = L+M =  nên PQ=. Theo bổ đề về siêu khoá trong phép thu gọn

LĐQH ta có K\L+ = K\L = PQ\L = Q là siêu khoá của a\L+ .

Do đó, theo tính chất tối tiểu của khoá ta phải có Q= M, hay K  M.

Bổ đề trên cho phép ta xây dựng thuật toán GetKey nhận một khoá từ tập LML  Key(p\L+) với L là vế trái cực tiểu của LĐQH nguồn p.

Trước hết ta để ý rằng LM đã là một siêu khoá của LĐQH p. Như vậy, để tìm khoá từ LM, ta chỉ cần xét để loại bỏ các phần tử trong vế trái cực tiểu L, vì M chứa trong mọi khoá của a có trong LM.

Thuật toán

Algorithm GetKey //Tìm một khoá từ LM

Format: GetKey (U,F,L,M)

Input: - Vế trái cực tiểu L của LĐQH p = (U,F)

- M Key (p\L+)

Output: - Khoá K của lược đồ p chứa trong LM

Method

K := LM;

For each attribute A in L do If AClosure(K\A,F) then K:=K\A; Endif Endfor Return K; EndGetKey.

Ví dụ 18: Cho LĐQH p = (U,F). Với U = ABCDEHG.

F = { DE  G, H  C, E  A, CG  H, DG  EA, D  B}. Tìm Key (p)?

Ta có vế trái cực tiểu ML(F) = {D,E,H,CG} Tính D+ = DB; E+ = EA; H+ = HC; CG+ = CGH

- Với L = D ta có:

q = p\L+ = p\DB = (ACEHG,{EG, HC, CGH, GEA}). Ta dễ dàng tính được M = Key (b) = {GH,CE,HE}. Suy ra:

Key(p) = LM={DGH,DCE,DHE} - Với L = E ta có:

q = p\L+= p\EA = (BCDHG, {DG, HC, (loại), CGH, DG(loại), DB}) = (BCDHG, DBG, HC, CGH}).

Ta dễ dàng tính được M = Key(q) = {CD,DH}. Suy ra Key(p) = LM = {ECD,EDH}.

- Với L = H ta có:

q = p\L+ = p\HC = (ABDEG, {DEG, (loại), EA, G(loại), DGEA, DB} = (ABDEG, {DEG, EA, DGEA, DB}).

Ta tìm được M = Key(q) = {DG,DE}. Suy ra Key(p) = LM = {HDG,HDE}.

- Với L = CG ta có q = p\L+ = p\CGH = (ABDE, {DE(loại), (loại), EA, (loại), DEA, DB} = (ABDE, {EA, DEAB}).

Ta tìm được M = Key(q) = D. Suy ra Key (p) = LM = CGD. Như vậy ta có: Key (p) = {DGH,DCE,DEH, CGD}.

Một phần của tài liệu Thu gọn lược đồ quan hệ và ứng dụng (Trang 43 - 49)

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

(66 trang)