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: XY F thoả tính chất XK. 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 MU\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 LPK. Vì K là khoá của p nên LP = K = LM. Để ý rằng LP=, LM= và PM 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)|fF}.
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 = { AED, AC, EBC, EHA, ACEH, BDC } 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 = {AD, A (loại), (loại), HA, AH, D (loại)} = { AD, HA, AH} = {ADH, HA}.
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), EHA, AEH, (loại)} = { EHA, AEH }.
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={ADH, HA}. 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={ BDCE,
AED, CEABD, BEACD}.
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 KLKey(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 = LM, MKey (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 PK mà K chỉ chứa vế trái cực tiểu L duy nhất nên đương nhiên LP.
Đặt Q=P\L, ta có phân hoạch P = L|Q và do đó QM. 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à QM 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 = {AED, AC, EBC, EHA, ACEH, BDC}. 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 đó EKey(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 = {AB, CD}.
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 đó MKey(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 = KL, Q = KM.
Vì LM = L+M = nên PQ=. 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 LML 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 := LM;
For each attribute A in L do If AClosure(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,{EG, HC, CGH, GEA}). 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, {DG, HC, (loại), CGH, DG(loại), DB}) = (BCDHG, DBG, HC, CGH}).
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, {DEG, (loại), EA, G(loại), DGEA, DB} = (ABDEG, {DEG, EA, DGEA, DB}).
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), EA, (loại), DEA, DB} = (ABDE, {EA, DEAB}).
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}.