Trong bảng 3.3, kớ hiệu (I), (II), (III) tương ứng với cỏc đoạn mó (I), (II), (III) trong thuật toỏn 3.7 được ỏp dụng; kớ hiệu là phụ thuộc hàm trong
cột tương ứng bị loại bỏ khỏi F. Kết quả ta được X+ = acdbeikm. So với thuật toỏn 3.6, ta thấy cú 4 vị trớ (cỏc ụ cú màu xỏm) chứng tỏ thuật toỏn 3.7 thực hiện hiệu quả hơn. Chẳng hạn, với (d a) hoặc (ad c) hoặc (e bi) thỡ thuật toỏn 3.7 chỉ cần kiểm tra vế phải và loại bỏ ngay trong khi thuật toỏn 3.6
phải kiểm tra vế trỏi rồi hợp vế phải vào Xnew (nhưng thực sự Xnew khụng thay
đổi) sau đú mới loại bỏ. Như vậy, chỉ với 7 phụ thuộc hàm trong vớ dụ trờn, thuật toỏn 3.7 đó tiết kiệm được 4 thao tỏc tớnh toỏn vụ ớch so với thuật toỏn 3.6.
Dưới đõy là một chứng minh hỡnh thức chứng tỏ thuật toỏn 3.7 hiệu quả hơn thuật toỏn 3.6. Thật vậy, tớnh hiệu quả của cỏc thuật toỏn 3.6 và 3.7 đều
dựa trờn cơ sở là số cỏc phộp toỏn tập hợp phải thực hiện trờn cỏc tập con của
Ω (so sỏnh tớnh chứa nhau của hai tập hợp, hợp và hiệu của hai tập hợp). Ta
gọi chung mỗi phộp toỏn này là một phộp toỏn cơ sở.
Định lý 3.1. Thuật toỏn 3.7 hiệu quả hơn thuật toỏn 3.6.
Chứng minh. Khụng giảm tổng quỏt, với X Ω cho trước, khi phỏt sinh ngẫu nhiờn một tập F cỏc phụ thuộc hàm xỏc định trờn Ω, ta giả thiết một nửa số phụ thuộc hàm của F cú vế phải chứa trong X (tức Xnew sau phộp gỏn Xnew = X). Kớ hiệu |F| là số phụ thuộc hàm trong tập F. Để đơn giản, ta giả sử |F| là một số chẵn (trường hợp |F| là số lẻ, ta thay |F| / 2 bằng phần nguyờn của |F| /
2).
Khi đú, sau |F| phộp so sỏnh cỏc vế phải của cỏc phụ thuộc hàm trong F ta đó loại được |F| / 2 cỏc phụ thuộc hàm của F cú vế phải chứa trong Xnew và thu được một tập gồm |F| / 2 cỏc phụ thuộc hàm cú vế phải khụng chứa trong Xnew.
Trong tập gồm |F| / 2 cỏc phụ thuộc hàm thu được, giả sử cú n1 và n2 phụ thuộc hàm cú vế trỏi theo thứ tự chứa trong và khụng chứa trong Xnew với
n1 + n2 = |F| / 2
Khi đú, theo thuật toỏn 3.7, ta thu được tập gồm n2 cỏc phụ thuộc hàm đơn giản (dạng X - Xnew Y - Xnew với X Y F) sau khi thực hiện
(2n1 + 3n2) = 2(n1 + n2) + n2 = |F| + n2
phộp toỏn cơ sở.
Như vậy, xuất phỏt từ tập F cỏc phụ thuộc hàm ban đầu, để đưa về hệ mới gồm n2 phụ thuộc hàm đơn giản, thuật toỏn 3.7 phải thực hiện
2|F| + n2 (d)
phộp toỏn cơ sở. Trong khi đú, đối với thuật toỏn 3.6, để loại được |F| / 2 phụ thuộc hàm cú vế phải chứa trong Xnew, cần phải thực hiện 2|F| phộp toỏn cơ sở và để thu được tập gồm n2 phụ thuộc hàm đơn giản cuối cựng, cần phải thực hiện thờm 2n2 phộp toỏn cơ sở.
2|F| + 2n2 (e) Lấy (e) trừ (d), ta nhận được
(2|F| + 2n2) - (2|F| + n2) = n2
Như vậy, nếu n2 > 0 thỡ thuật toỏn 3.7 hiệu quả hơn thuật toỏn 3.6.
Vớ dụ dưới đõy minh họa cho chứng minh hỡnh thức ở trờn.
Vớ dụ 3.5. Cho lược đồ quan hệ S = <Ω, F>, trong đú Ω = ABCDEGIKM, F =
{BD A, ED C, E D, D BEI, KE M, EG IK} và X = ACD.
Ta cú: |F| = 6, n1 = 1, n2 = 2 Với thuật toỏn 3.7:
* Xnew = X = ACD
* Sau 6 phộp so sỏnh cỏc vế phải F = {D BEI, KE M, EG IK}.
* Tiếp tục 3 phộp so sỏnh cỏc vế trỏi:
- Với D BEI Xnew = Xnew BEI = ACDBEI
- Với KE M, thay (KE M) bằng (KE - Xnew) (M - Xnew) = (K M) - Với EG IK, thay (EG IK) bằng (EG - Xnew) (IK - Xnew) = (G K) Kết quả: F = {K M, G K}
* Đỏnh giỏ: Cỏc phộp toỏn cơ sở gồm: so sỏnh cỏc vế trỏi, vế phải; phộp hợp; phộp hiệu. Tổng số phộp toỏn cơ sở cần thực hiện để nhận được F = {K
M, G K} là 6 + 3 + 1 + 2 + 2 = 2.6 + 2 = 2|F| + n2 = 14
Với thuật toỏn 3.6: * Xnew = X = ACD
* Thực hiện 6 phộp so sỏnh cỏc vế trỏi:
- Với D BEI Xnew = Xnew BEI = ACDBEI
F = {BD A, ED C, E D, KE M, EG IK}. * Tiếp tục thực hiện 5 phộp so sỏnh cỏc vế phải:
F = {KE M, EG IK}. * Tiếp tục thay thế cỏc phụ thuộc hàm:
- Với KE M, thay (KE M) bằng (KE - Xnew) (M - Xnew) = (K M) - Với EG IK, thay (EG IK) bằng (EG - Xnew) (IK - Xnew) = (G K)
* Kết quả: F = {K M, G K}
* Đỏnh giỏ: Cỏc phộp toỏn cơ sở gồm: so sỏnh cỏc vế trỏi, vế phải; phộp hợp; phộp hiệu. Tổng số phộp toỏn cơ sở cần thực hiện để nhận được F = {K
M, G K} là 6 + 1 + 5 + 2 + 2 = 2.6 + 2.2 = 2|F| + 2n2 = 16. 3.2. Vấn đề rỳt gọn bài toỏn xỏc định khúa của lược đồ quan hệ
Cho S = <, F> là một lược đồ quan hệ, trong đú = {A1, A2,..., An} là tập hữu hạn cỏc thuộc tớnh và F = {L1 R1,...,Lm Rm | Li, Ri , i =
1,...,m} là tập hữu hạn cỏc phụ thuộc hàm đỳng trờn S. Trong [67], dựa trờn
ngữ nghĩa quen thuộc của cỏc phụ thuộc hàm trong mụ hỡnh cơ sở dữ liệu quan hệ và thuật toỏn tớnh bao đúng của một tập thuộc tớnh, cỏc tỏc giả đó xõy
dựng được một điều kiện cần để một tập thuộc tớnh X là khúa (theo nghĩa tối tiểu) của S. Tiếp đú, một số hướng cải tiến cho điều kiện cần thu được
cũng đó được xem xột. Trong [68], cỏc tỏc giả cũng đưa ra một điều kiện cần khỏc để một tập thuộc tớnh là khúa của lược đồ quan hệ. Trong [52], dựa trờn việc nghiờn cứu cỏc toỏn tử iđờan khụng tất định (ideal non-deterministic operators) trong khuụn khổ của lý thuyết dàn, cỏc tỏc giả của [52] cũng đưa ra một điều kiện cần để một tập thuộc tớnh là khúa. Như vậy, chỳng ta cú ba kết quả cho cựng một bài toỏn được cụng bố cỏch nhau nhiều năm mà thoạt nhỡn dường như khỏc nhau. Trong phần này, ta sẽ chứng minh rằng điều kiện cần trong [52] chớnh là một dạng cải tiến (theo một cỏch tiếp cận đơn giản hơn) của điều kiện cần trong [67], đồng thời cho thấy điều kiện cần trong [52] trựng với kết quả được cụng bố trong [68]. Mối quan hệ giữa cỏc dạng của điều kiện cần để một tập thuộc tớnh là khúa của một lược đồ quan hệ với việc rỳt gọn bài toỏn tỡm khúa cũng được chỉ ra.
3.2.1. Một số kết quả đó biết
Trong mục này, một số kết quả trong [67] và [52] được nhắc lại để tiện so sỏnh. Lưu ý rằng thuật ngữ khúa dựng ở đõy được hiểu theo nghĩa khúa tối tiểu.
là tập hữu hạn cỏc thuộc tớnh và F = {L1 R1,...,Lm Rm | Li, Ri , i = 1,...,m} là tập hữu hạn cỏc phụ thuộc hàm đỳng trờn S. Kớ hiệu 1 m i i L L , 1 m i i R R , S là tập tất cả cỏc khúa của S, S = {Kj | Kj là khúa của S}, j S j K G K
là giao của tất cả cỏc khúa của S,
j S j K H K
là tập tất cả cỏc thuộc tớnh khúa của S, H = \ H là tập tất cả
cỏc thuộc tớnh khụng khúa của S.
Trong [67] đó chứng minh cỏc kết quả sau:
Định lý 3.2 (Định lý 1 trong [67]). Cho S = <, F> là một lược đồ quan hệ và X là một khúa của S. Khi đú:
\ R X ( \ R) (L R) (1)
Định lý 3.3 (Định lý 4 trong [67]). Cho S = <, F> là một lược đồ quan hệ.
Khi đú
G = \ R
Mệnh đề 3.1 (Trong chứng minh của Định lý 1 trong [67]). Ta cú R \ L H ,
cú nghĩa cỏc thuộc tớnh trong R \ L đều là cỏc thuộc tớnh khụng khúa.
Từ (1), ta dễ dàng suy ra:
Nhận xột 3.1. ( \ R) (L R) là siờu khúa chứa tất cả cỏc khúa của S. Lưu
ý là trong phõn tớch = ( \ R) (L R) (R \ L), chỉ tập L R cú khả năng chứa cả hai loại thuộc tớnh là thuộc tớnh khúa và thuộc tớnh khụng khúa.
Thờm vào đú, nếu cú R \ L ≠ thỡ siờu khúa ( \ R) (L R) và việc
tỡm tập tất cỏ cỏc khúa chứa trong một siờu khúa nhỏ hơn thực sự sẽ ớt tốn kộm hơn.
Nhận xột 3.2. Cỏc khúa Kj Skhụng chứa nhau và cú cấu trỳc chung là
j
K = ( \ R) Zj với Zj L R
Điều này tạo thuận lợi cho việc xỏc định cỏc khúa của S.
\ R) [(L R) \ Z] sẽ là một siờu khúa chứa tất cả cỏc khúa của S và siờu khúa này rừ ràng chứa thực sự trong siờu khúa ( \ R) (L R).
Khi đú
( \ R) Kj ( \ R) [(L R) \ Z], Kj S
sẽ là một dạng cải tiến của điều kiện cần (1).
Trong [22, 52], cú đưa ra định nghĩa và định lý sau (cỏc ký hiệu được sửa lại cho phự hợp với hệ thống ký hiệu đó dựng ở trờn):
Định nghĩa 3.1 (Định nghĩa 3.3 trong [22]). Cho S = <, F> là một lược đồ quan hệ. Khi đú lừi (core) và thõn (body) của S được định nghĩa như sau:
core(, F) = \ ( i i) i L R F R và body(, F) = ( i i) i L R F L [ \ core(, F)+]
Bằng những tớnh toỏn đơn giản, ta nhận được:
core(, F) = \ R và body(, F) = L [ \ ( \ R)+]
Vớ dụ 3.6 (Vớ dụ 3.1 trong [22]). Cho S = <, F> là một lược đồ quan hệ,
trong đú tập thuộc tớnh = {a, b, c, d, e, f, g, h} và tập phụ thuộc hàm F =
{ab c, a g, g c, b h, bh d, c d, e f, f e}.
Ta cú: L = abcefgh, R = cdefgh, \ R = ab, ( \ R)+ = abcdgh, L [ \ ( \ R)+] = ef. Từ đú core(, F) = ab và body(, F) = ef.
Định lý 3.4 (Định lý 3.4 trong [22, 52]). Cho S = <, F> là một lược đồ quan hệ và K là một khúa (tối tiểu) của S. Khi đú, ta cú:
core K (core body), cú nghĩa
\ R K ( \ R) [L [ \ ( \ R)+] ] (2)
Rừ ràng (2) là phỏt biểu của một điều kiện cần để K là khúa của S. Chứng
minh của (2) được cho trong [52] cựng với một số vớ dụ minh họa.
3.2.2. Một dạng cải tiến cho điều kiện cần (1) đó được cụng bố năm 1985
Bổ đề 3.2 (Bổ đề 3 trong [67]). Cho S = <, F> là một lược đồ quan hệ và X là một khúa của S. Khi đú
X R (L \ R)+ =
Bổ đề 3.2 dễ dàng được mở rộng thành bổ đề 3.3 dưới đõy:
Bổ đề 3.3. Cho S = <, F> là một lược đồ quan hệ. Khi đú K R ( \ R)+ = , KS,
cú nghĩa R ( \ R)+ H
Chứng minh. Giả sử ngược lại: KKSsao cho K R ( \ R)+ ≠ , cú nghĩa A sao cho A K, A R và theo định nghĩa bao đúng, \ R A.
Vỡ A R nờn A \ R. Từ điều kiện (1) cú \ R K. Kết hợp với A \
R, suy ra \ R K \ A. Từ đú cú K \ A \ R. Mặt khỏc \ R A. Kết
quả là K \ A A với A K, chứng tỏ K khụng là khúa của S. Túm lại ta đó chứng minh được
K [R ( \ R)+] = , K KS,
cú nghĩa R ( \ R)+ H
Từ nhận xột 3.3, định lý sau đõy là hiển nhiờn.
Định lý 3.5. Cho S = <, F> là một lược đồ quan hệ. Khi đú
\ R K ( \ R) [(L R) \ (R ( \ R)+ )], KS (3) Ta xem (3) như một dạng cải tiến của (1).
Sau đõy là một vớ dụ trong đú (L R) (R ( \ R)+ ) ≠ , cú nghĩa ( \ R) [(L R) \ (R ( \ R)+) ] ( \ R) (L R).
Vớ dụ 3.7. Xột lược đồ quan hệ S = <, F> trong đú = {a, b, c, d, e, f, g, h, i} và F = {a b, b c, d e, h i, i h}.
Với lược đồ quan hệ này, ta cú: L = abdhi, R = bcehi, L R = bhi, \ R = adfg; ( \ R)+ = abcdefg, R ( \ R)+ = bce. Dễ thấy rằng S = {adfgh, adfgi}. Từ đú H = {a, d, f, g, h, i} và H = {b, c, e}.
Hơn nữa, ta cũn cú (L R) [R ( \ R)+ ] = b ≠ . Và như vậy với lược đồ quan hệ S được cho trong vớ dụ 3.7, ta cú
\ R K ( \ R) [(L R) \ (R ( \ R)+ )], K S,
cụ thể là adfg K adfghi với K {adfgh, adfgi}. 3.2.3. So sỏnh cỏc điều kiện cần
Để dễ so sỏnh, ta phỏt biểu lại hai điều kiện cần (2) và (3).
Cho lược đồ quan hệ S = <, F>. Khi đú
\ R K ( \ R) [L [ \ ( \ R)+ ]], KS (2) \ R K ( \ R) [(L R) \ (R ( \ R)+ )], KS (3)
Nhận xột 3.4. Dễ thấy rằng L [ \ ( \ R)+ ] = L \ ( \ R)+. Thật vậy, giả sử
x L [ \ ( \ R)+ ] x L, x \ ( \ R)+ x L, x ( \ R)+ x L \ ( \ R)+. Ngược lại, giả sử x L \ ( \ R)+ x L, x ( \ R)+ x
L, x \ ( \ R)+ x L [ \ ( \ R)+ ].
Định nghĩa 3.2. Ta núi rằng điều kiện (2) tốt hơn điều kiện (3) nếu L \ ( \ R)+ (L R) \ (R ( \ R)+ ) và tồn tại một lược đồ quan hệ sao cho L \ ( \ R)+ (L R) \ (R ( \ R)+ ).
Hiểu theo nghĩa đú, ta thấy điều kiện (3) là dạng cải tiến của (1). Tương tự, ta cú định nghĩa khi nào thỡ (3) tốt hơn (2). Để so sỏnh (2) với (3) ta cú định lý sau:
Định lý 3.6. Hai điều kiện (2) và (3) chỉ là một và được diễn đạt bằng những
biểu thức khỏc nhau.
Chứng minh. Để chứng minh định lý 3.6, rừ ràng chỉ cần chứng minh L \ ( \ R)+ = (L R) \ (R ( \ R)+ )
Giả sử x là một thuộc tớnh bất kỳ thuộc L \ ( \ R)+.
x L \ ( \ R)+ (x L) và x ( \ R)+ (x L), x ( \ R) và x (
\ R)+ (x L), x R và x ( \ R)+ (x L R) và x [R ( \ R)+] x (L R) \ [(R ( \ R)+],
Bõy giờ ta chứng minh điều ngược lại:
x (L R) \ [R ( \ R)+ ] (x L), (x R) và (x [R ( \ R)+]) (x L), (x R) và (x ( \ R)+) x L \ ( \ R)+,
cú nghĩa (L R) \ (R ( \ R)+ ) L \ ( \ R)+
Vậy L \ ( \ R)+ = (L R) \ (R ( \ R)+ ). Định lý 3.6 được chứng minh. Để minh họa cho định lý 3.6, ta trở lại với vớ dụ 3.6 và 3.7.
Với vớ dụ 3.6, = {a, b, c, d, e, f, g, h}, F = {ab c, a g, g c, b h,
bh d, c d, e f, f e}. Ta cú: L = abcefgh, R = cdefgh, L R = cefgh,
\ R = ab, ( \ R)+ = abcdgh, R ( \ R)+ = cdgh. Từ đú L \ ( \ R)+ = ef và (L R) \ (R ( \ R)+ ) = ef.
Với vớ dụ 3.7, = {a, b, c, d, e, f, g, h, i}, F = {a b, b c, d e, h i, i h}. Ta cú: L = abdhi, R = bcehi, L R = bhi, \ R = adfg; ( \ R)+ ) =
abcdefg, R ( \ R)+ = bce. Từ đú: L \ ( \ R)+ = hi và (L R) \ (R ( \ R)+ ) = hi.
Định lý 3.7 (Định lý 2 trong [68]). Cho S = <, F> là một lược đồ quan hệ và K là một khúa của S. Khi đú:
( \ R) K ( \ R) [(L R) \ ( \ R)+] (4) Dễ thấy rằng (4) là một dạng cải tiến của (1). Vớ dụ 3.8 sau đõy cho thấy
[(L R) \ ( \ R)+] (L R)
Vớ dụ 3.8 (Vớ dụ trong [68]). Cho S = <, F> là một lược đồ quan hệ, trong
đú tập thuộc tớnh = {a, b, c, g, h} và tập phụ thuộc hàm
F = {a b, b c, g h, h g}.
Ta cú: L = abgh, R = bcgh, \ R = a, ( \ R)+ = abc, (L R) = bgh (L R) \ ( \ R)+ = gh (L R)
Điều kiện (4) được cụng bố năm 1996, trong khi điều kiện (2) được
cụng bố năm 2011. Định lý sau chỉ rừ mối quan hệ giữa (2) và (4). Định lý 3.8. Điều kiện cần (2) thực sự là trựng với điều kiện cần (4).
Chứng minh. Từ nhận xột 3.4, để chứng minh (2) và (4) chỉ là một, ta sẽ chỉ ra rằng [(L R) \ ( \ R)+] = [L \ ( \ R)+]. Thật vậy, rừ ràng ta cú (L R) L
nờn [(L R) \ ( \ R)+] [L \ ( \ R)+]. Ta chỉ cần chứng minh điều ngược
lại là L \ ( \ R)+ (L R) \ ( \ R)+
Giả sử x là một thuộc tớnh bất kỳ thuộc [L \ ( \ R)+] x L, x ( \ R)+
x L, x ( \ R), x ( \ R)+ x L, x R, x ( \ R)+
x (L R) \ ( \ R)+.
Nhận xột 3.5. Như đó biết, mục đớch của bài toỏn xỏc định khúa là tỡm tất cả cỏc khúa K của lược đồ S = <Ω, F> và ta luụn biết rằng mọi khúa K đều chứa
trong Ω. Nếu đi tỡm cỏc khúa trong tập vũ trụ Ω thỡ khụng hiệu quả vỡ Ω là
siờu khúa lớn nhất chứa tất cả cỏc khúa. Do đú, vấn đề đặt ra là cần tỡm một siờu khúa Z (càng ớt thuộc tớnh càng tốt) chứa tất cả cỏc khúa của S sao cho Z
Ω. Nếu tỡm được tập Z như vậy thỡ việc tỡm cỏc khúa trong Z thay vỡ tỡm trong Ω sẽ đơn giản hơn.
Nhận xột 3.6. Cỏc điều kiện cần (1), (2), (3) và (4) lần lượt được viết lại dưới đõy cho thấy cấu trỳc chung của mọi khúa K của S, cỏc cận bờn phải đều là cỏc siờu khúa chứa mọi khúa của S.
\ R K ( \ R) (L R)
\ R K ( \ R) [L [ \ ( \ R)+] ] \ R K ( \ R) [(L R) \ (R ( \ R)+ )] ( \ R) K ( \ R) [(L R) \ ( \ R)+]
Ta đó chỉ ra được cận bờn phải của (2) tốt hơn cận bờn phải của (1) và cũng đó chứng minh được rằng (2), (3) và (4) thực chất chỉ là một và chỳng được diễn đạt bằng những biểu thức khỏc nhau. Như đó phõn tớch, ta mong
muốn cỏc cận bờn phải càng ớt thuộc tớnh càng tốt (càng nhỏ càng tốt). Điều
này rừ ràng liờn quan đến việc rỳt gọn bài toỏn tỡm khúa. Thật vậy, giả sử đó
xỏc định được Z là tập chứa tất cả cỏc khúa của S = <, F>. Khi đú,
việc rỳt gọn bài toỏn cho việc tỡm khúa của S được tiến hành qua cỏc bước
Bước 1. Xõy dựng lược đồ S' = <', F'> trong đú
' = Z \ ( \ R) và F' = {Li ' Ri ' | (Li Ri) F, i = 1, 2,..., m}.
Bước 2. Tỡm S' theo một thuật toỏn nào đú.
Bước 3. Dễ thấy rằng S = {( \ R) K | K S'}.