Định nghĩa: Cho F và G là những tập phụ thuộc hàm trên tập thuộc tính U. Ta nói F phủ G nếu có G F, và nói F và G tƣơng đƣơng nếu G F, và kí hiệu là F~G.
Bằng cách sử dụng thuật toán 2.1, có thể kiểm tra xem F và G có tƣơng đƣơng không. Cần chú ý rằng: nếu mọi phụ thuộc hàm trong F đều thuộc G thì mọi phụ thuộc hàm trong F đều suy diễn đƣợc từ G
(nghĩa là F G ). Với phụ thuộc hàm X Y F , để kiểm tra
X Y G, ta sẽ tính XG và kiểm chứng Y XG.
Bổ đề 2.1 Mỗi tập phụ thuộc hàm F có một tập phụ thuộc hàm G
tƣơng đƣơng với nó sao cho mỗi phần tử của G đều có vế phải chỉ gồm một thuộc tính.
Chứng minh
Với mỗi F, đặt:
{ ( ) , }
G X A X Y F A Y
Nhờ quy tắc tách và quy tắc hợp trong bổ đề 1.2, dễ dàng thấy rằng G
thỏa mãn các yêu cầu của định lí.
Tập phụ thuộc hàm F đƣợc gọi là tối tiểu nếu:
(i) Vế phải của mỗi phụ thuộc trong F gồm đúng một thuộc tính. (Không dƣ thừa thuộc tính nào ở vế phải).
(ii) Không tồn tại X A trong F sao cho (F \ {X A}) tƣơng đƣơng với F. (Không thể bỏ đi một phụ thuộc nào trong F mà vẫn thu đƣợc một tập phụ thuộc tƣơng đƣơng với nó).
(iii) Không tồn tại X A trong F và tập con thực sự Z của X sao cho (F \ {X A}{Z A}) tƣơng đƣơng với F. (Không thể bỏ đi bất kì một thuộc tính nào ở vế trái của một phụ thuộc bất kì trong F mà vẫn thu đƣợc một tập phụ thuộc tƣơng đƣơng với nó).
Điều kiện thứ nhất đảm bảo rằng mọi phụ thuộc hàm trong F không dƣ thừa thuộc tính nào ở vế phải. Điều kiện thứ hai đảm bảo rằng F không có phụ thuộc hàm nào dƣ thừa. Điều kiện cuối cùng đảm bảo rằng mọi phụ thuộc hàm trong F không dƣ thừa thuộc tính nào ở vế trái.
Định lí 2.1
Với mỗi tập phụ thuộc hàm F, đều tồn tại một tập phụ thuộc hàm tối tiểu
'
F tƣơng đƣơng với nó.
1. Theo bổ đề 1.5, có tập phụ thuộc F1 tƣơng đƣơng với F mà các phần tử của F1 đều có vế phải gồm đúng một thuộc tính.
2. Loại bỏ từ F1 những phụ thuộc hàm vi phạm (ii), ta thu đƣợc F2. 3. Loại bỏ những thuộc tính trong vế trái của các phụ thuộc hàm trong F2
làm cho nó vi phạm (iii), ta thu đƣợc F3.
Dễ dàng thấy rằng, F3 là tối tiểu và tƣơng đƣơng với F nên nó chính là
F cần tìm.
Chú ý: Việc loại bỏ những phụ thuộc hàm và thuộc tính ở bƣớc 2 và bƣớc 3 trong phép chứng minh có thể cho ta những tập phụ thuộc hàm khác nhau (thỏa mãn định lí 1.5), thậm chí chúng có số phần tử khác nhau.
Ví dụ:
Cho F {AB B, A A, C C, A B, C}. Ta có thể tìm đƣợc hai tập phụ thuộc tối tiểu tƣơng đƣơng với F là:
1 { , , }
F AB BC C A loại bỏ từ trái sang phải ở điều kiện (ii)
2 { , , , }
F AB B A AC CA loại bỏ từ phải sang trái.
Thuật toán 2.1: Tìm phủ tối tiểu của tập phụ thuộc hàm F trên tập thuộc tính U.
INPUT: F, U
OUTPUT: G {G là phủ tối thiểu của F}
Bƣớc 1: G . Tách tất cả các phụ thuộc hàm f của F thành phụ thuộc hàm mà vế phải chỉ có một thuộc tính:
FOR f F,f X YDOG G {X A A Y, }
Bƣớc 2: Loại bỏ những phụ thuộc hàm không đầy đủ:(loại các thuộc tính thừa ở vế trái các phụ thuộc hàm)
WHILE Z X Z, X G, G\ {f}{Z A DO} GG\ {f}{Z A}
Bƣớc 3: Loại bỏ những phụ thuộc hàm dƣ thừa:
FOR f G DO IF G\ f GTHEN GG\ f Bƣớc 4: RETURN G
Ta có thể diễn giải lại thuật giải nhƣ sau:
{ , , }
F ABCD BC CD Tìm phủ tối thiểu?
Bƣớc 1. Tách các phụ thuộc hàm sao cho vế phải chỉ còn một thuộc tính. + Ta có F {ABC AB, D B, C C, D}
Bƣớc 2. Bỏ các thuộc tính dƣ thừa ở vế trái.
+ BC C, D Không xét vì vế trái chỉ có một thuộc tính.
+ XétABC: Nếu bỏ A thì B+=BCD không chứa A nên không thể bỏ A. Nếu bỏ B thì A+=A, không bỏ đƣợc thuộc tính nào.
+ Xét ABD: Nếu bỏ A thì B+=BCD không chứa A nên không thể bỏ A. Nếu bỏ B thì A+=A, không bỏ đƣợc thuộc tính nào.
Bƣớc 3. Loại khỏi F các phụ thuộc hàm dƣ thừa.
+ Xét ABC: Tính AB+=ABCD = Q nên loại bỏ ABC
+ Xét ABD: Tính AB+=ABCD = Q nên loại bỏ ABD
+ BC: Tính B+=B không thể bỏ. + CD: Tính C+=C không thể bỏ.
Ví dụ:
Cho F {AB B, A A, C C, A B, C}. Ta có thể tìm đƣợc hai phụ thuộc hàm tối tiểu tƣơng đƣơng với F là:
1 { , , }
F AB BC C A
2 { , , A C, }
F AB B A C A
2.1.4. Phụ thuộc hàm xấp xỉ và lớp tương đương
Đối với một số quan hệ, một vài phụ thuộc hàm có thể không thỏa mãn cho tất cả các bộ. Vậy một phụ thuộc hàm có thể nghĩa theo hƣớng thỏa mãn xấp xỉ.
Ví dụ:
Về những chiếc xe ôtô, nhãn mác xe đƣợc xác định bởi mô-đen. Dựa vào điều đó, với mô-đen X6, chúng ta biết với xác suất cao nhãn mác xe là BMW,
nhƣng cũng có một xác suất nhỏ rằng nhãn mác xe là Honđa. Phụ thuộc hàm xấp xỉ đƣợc mong đợi đó đƣợc xác định bởi Mô-đen Nhãn mác xe.
Một định nghĩa chuẩn của một phụ thuộc xấp xỉ X A là dựa trên số tối thiểu những hàng cần loại bỏ khỏi quan hệ r để phụ thuộc X A đúng trong r . Sai số g X3( A) 1 (max{| || s sr và X A đúng trong
})/ | |
s s . Độ đo g3 có một cách hiểu tự nhiên nhƣ tỷ số của các hàng với những ngoại lệ hoặc sai số ảnh hƣởng đến phụ thuộc. Cho một ngƣỡng sai số
, 0 1, chúng ta nói rằng X A là một phụ thuộc xấp xỉ nếu và chỉ nếu g X3( A) lớn nhất là bằng .
Một lớp tƣơng đƣơng c của X là hợp của một hoặc nhiều lớp tƣơng đƣơng , ,
1, ...2
c c của X A đúng. Số tối thiểu các hàng cần loại bỏ là kích thƣớc của c trừ đi kích thƣớc của lớp ci lớn nhất. Lấy trên tất cả các lớp tƣơng đƣơng c của X cho tổng số các bộ cần loại bỏ. Nhƣ vậy chúng ta có: ' ' 3( ) 1 c Xmax{| || X {A} g X A c c và ' }/ | | c c r . Ví dụ: Cho quan hệ TupleID A B E C D 1 1 a 2 $ Hoa 2 1 x 2 Hoa tulip
3 2 x 0 $ Cây thủy tiên
4 2 x 0 $ Hoa
5 2 y 0 Cây huệ
6 3 y 1 $ Phong lan
7 3 c 1 Hoa
8 3 c 1 # Bông hồng
Bảng 2.3: Bảng quan hệ ví dụ cho phụ thuộc hàm xấp xỉ
Để kiểm tra AB thỏa hoặc không, chúng ta tìm các lớp tƣơng đƣơng của A {{1, 2},{3, 4,5},{6,7,8}} và các lớp tƣơng đƣơng của
{{1},{2,3, 4},{5,6},{7,8}}
B
. Vì lớp tƣơng đƣơng {1, 2} trong A không
mịn hơn bất kỳ lớp nào trong A, và tƣơng tự nhƣ vậy đối với các lớp khác của A. Do đó AB không thỏa.
Tuy nhiên trong ví dụ trên, AB có thể thỏa với một sai số g3 nào đó nếu chúng ta loại bỏ một vài bộ khỏi quan hệ đã cho. Đầu tiên chúng ta tìm
{ } {{1},{2},{3,4},{5},{6},{7,8}}
A B
. Lớp tƣơng đƣơng {1, 2} trong A
bằng {1}{2} lấy từ A B , có kích thƣớc lớn nhất của {1} và {2} là 1.
Lớp tƣơng đƣơng {3, 4,5} trong A bằng {3, 4}{5} lấy từ
B A
, có kích
thƣớc lớn nhất của {3, 4} và {5} là 2. Cuối cùng lớp tƣơng đƣơng {6,7,8}
của A bằng {6}{7,8} lấy từ A B có kích thƣớc lớn nhất của {6} và
{7,8} là 2.
Từ đó g3AB1122/80.375. Nói cách ít nhất 3 bộ trong 8 bộ ở ví dụ trên cần loại bỏ để AB đƣợc thỏa mãn. Nhƣ vậy có thể nói phụ thuộc hàm: AB thỏa mãn xấp xỉ với tỉ lệ sai số 0.375.
Quá trình phát hiện các phụ thuộc hàm xấp xỉ này đƣợc lặp lại cho tất cả thuộc tính và cho tất cả các tổ hợp của chúng. Lấy ví dụ, cho một quan hệ với 5 thuộc tính (A, B, C, D, E) tập các ứng viên là {Ø, A, B, C, D, E, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABCD, ABCE, ABDE, ACDE, BCDE, ABCDE} cho một tổng cộng 32 tổ hợp. Các thuộc tính ứng viên này của quan hệ đƣợc biểu diễn nhƣ một dàn đƣợc chỉ rõ trong hình 2.1.
Mỗi nút trong hình 2 biểu diễn một tập thuộc tính ứng viên một cạch giữa hai nút bất kỳ nhƣ E và ED chỉ ra phụ thuộc xấp xỉ: DED cần đƣợc kiểm tra.
Hình 2.1: Dàn cho các thuộc tính (A, B, C, D, E)
Phần tiếp theo sau trình bày thuật toán TANE đã đƣợc sửa đổi để tìm tất cả các phụ thuộc hàm xấp xỉ dạng X A có độ đo lỗi g X3( A) , với
là ngƣỡng lỗi cho trƣớc .
2.2. Thuật toán TANE sửa đổi [5]
2.2.1. Thủ tục chính của thuật toán TANE sửa đổi
Sau đây là các thủ tục chính của thuật toán TANE sửa đổi để tính các phụ thuộc hàm xấp xỉ:
Input: Quan hệ r trên lƣợc đồ R
Output: Các phụ thuộc hàm tối tiểu, không tầm thƣờng đúng trên r C(X) {A X | X \ {A}A không đúng}R \ X . + C (X) {A R | B X,X \ {A,B}B không đúng}. 1. L :0 2. + C : R 3. L :1 A AR 4. : 1
5. while L 6. COMPUTE_DEPENDENCIES L 7. PRUNE L 8. L1:GENERATE_NEXT_LEVEL L 9. : 1 Giải thích 1 L khởi tạo bằng rỗng 0 2 C+ bằng R 3 L1 bằng họ tất cả các tập một thuộc tính trong R 4 :l 5 while L
6 Tính toán các phụ thuộc hàm trong mức L
7 Prune L tỉa L để tìm kiếm và xóa các phụ thuộc hàm không cần thiết
8 L1 xây dựng các phụ thuộc hàm cho mức tiếp theo, dựa trênL 9 : l Thủ tục: Tính các phụ thuộc hàm Procedure COMPUTE_DEPENDENCIES L 1 for each XL do 2 C (X)+ AXC ( X \ {A}) 3 for each XL do 4 for each A X C (X) do
5 if e(X\ { }A A) then
6 output X \ { }A A
7 remove A from C (X)
8 If X \ {A}A thỏa mãn then
9 remove all B in R \ X from C (X)
Thủ tục: Tỉa Procedure PRUNE(L ) 1 for each XL do 2 if C X do 3 delete X from L 4 if X is a (super) key do 5 for each AC X \ X do 6 if AB X CX A \ B then 7 output XA 8 delete X from L
Thuật toán TANE đã đƣợc sửa đổi để tính tất cả các phụ thuộc hàm xấp xỉ tối tiểu X A với g3X A , với một giá trị ngƣỡng cho trƣớc. Việc sửa đổi quan trọng là thay đổi việc kiểm tra tính thỏa trên dòng 5 của thủ tục COMPUTE_DEPENDENCIES bởi:
'
5 If eX \ A A then
Thay dòng 8 của thủ tục COMPUTE_DEPENDENCIES bởi:
'
8 If X \ A A thỏa mãn then
'
2.2.2. Độ phức tạp của thuật toán TANE sửa đổi.
Với quan hệ R có R thuộc tính và r bộ. Độ phức tạp thời gian của thuật toán TANE sửa đổi phụ thuộc vào số bộ trong cơ sở dữ liệu r , phụ thuộc vào số tập trong tất cả các mức của dàn các thuộc tính ứng viên
R
s (2 ) và số khóa K (2 /R R ).
Do đó độ phức tạp của thuật toán TANE sửa đổi là:
2 3
(s( r R ) K R )
.
Phần tiếp theo sau trình bày thuật toán tìm phụ thuộc hàm xấp xỉ dựa trên một số khái niệm của lý thuyết thiết kế CSDL quan hệ là phủ tối thiểu và lớp tƣơng đƣơng do tác giả Jalal Atoum (Khoa Khoa học Máy tính, Đại học Công nghệ (PSUT), Jordan) đề xuất và công bố năm 2009 [8]
2.3. Thuật toán khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tƣơng đƣơng
2.3.1. Mô tả thuật toán
Thuật toán khai phá phụ thuộc hàm xấp xỉ từ những cơ sở dữ liệu lớn đƣợc trình bày dƣới đây dựa trên độ đo xấp xỉ g . Trong đó có sử dụng một 3 số khái niệm của lý thuyết thiết kế cơ sở dữ liệu quan hệ, cụ thể là các khái niệm phủ tối tiểu và những lớp tƣơng đƣơng (Mining Approximate Functional Dependencies from Databases based on Minimal Cover and Equivalenc
Classes viết tắt là “AFDMCEC”). Thuật toán này làm giảm bớt số các thuộc tính và các phụ thuộc hàm xấp xỉ cần kiểm tra bởi có kết hợp với một vài khái niệm từ lý thuyết thiết kế cơ sở dữ liệu quan hệ.
Những khái niệm đầu tiên bao gồm việc tăng trƣởng tính phủ tối tiểu của các phụ thuộc hàm xấp xỉ trong mỗi giai đoạn phát hiện những phụ thuộc hàm này. Mục đính của cách làm này là để giảm tối thiểu số các phụ thuộc hàm xấp xỉ cần kiểm tra. Trong khi đó khái niệm thứ hai bao gồm việc tính toán về
sự tƣơng đƣơng của các thuộc tính dựa trên bao đóng không tầm thƣờng của chúng. Đối với mỗi cặp thuộc tính có cùng bao đóng, thuật toán loại đi một trong chúng khỏi tập hợp các thuộc tính ứng viên. Nhƣ vậy thuật toán cũng xem hai thuộc tính này là tƣơng đƣơng xấp xỉ . Điều này sẽ làm giảm bớt số thuộc tính cần phải kiểm tra trong mỗi giai đoạn của thuật toán AFDMCEC.
Sau đây là thủ tục chính của thuật toán khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tƣơng đƣơng.
Thuật toán
Input: Tập dữ liệu D và những thuộc tính X , X ,..., X1 2 n của nó
: Ngƣỡng sai số, 0 1
Output: Tập phụ thuộc hàm xấp xỉ tối tiểu MinimalApproximate_FDSet, tập hợp ứng viên cho mức tiếp theo, EQ_Set
1. Bƣớc khởi tạo
Set R=(X , X ,..., X )1 2 n
Nrows = Số hàng trong cơ sở dữ liệu. Set FD_Set =
Approximate_FDSet =
Set EQ_Set =
Set Candidate_Set = {X , X ,..., X }1 2 n 2. While Candidate_Set Do
For all Xi Candidate_Set Do
Approximate_FDSet=ComputeMinimaiApproximate_FD(X )i
GenerateNextLevelCandidates(Candidate_Set) 3. Display ApproximateFD_Set
hàm xấp xỉ tối tiểu ComputeMinimalApproximate_FD(X )i cho mỗi X i trong tập ứng viên. Với mỗi thuộc tính Y,Y R - Xi, nếu g (X3 i Y)
thì bổ sung Xi Y vào tập phụ thuộc hàm xấp xỉ Approximate_FDSet, và nếu bao đóng xấp xỉ của X bằng với bao đóng xấp xỉ của Y thì bổ sung i
i
YX vào tập phụ thuộc hàm xấp xỉ Approximate_FDSet, bổ sung
i
X Y vào tập EQ_Set và loại bỏ Y khỏi tập ứng viên Candidate_Set. Sau đây là các thủ tục đƣợc sử dụng trong chƣơng trình chính.
Thủ tục ComputeMinimalApproximate_FD(X )i : // Thủ tục tính phụ thuộc hàm xấp xỉ tối tiểu
Procedure ComputeMinimalApproximate_FD(Xi)
Max = 0
TempList =
For each Y R - Xi do
i
M ?X // Tập các lớp tƣơng đƣơng của thuộc tính Xi i
M ?X Y // Tập các lớp tƣơng đƣơng của thuộc tính XiY For all SN do
For all TM do if TS then
W=WT
if Max<Len(T) then Max<Len(W)
Add Max to Templist For I = 1 to Len(Templist)
J = J + Templist(I) Result = 1 – J/Nrows If Result ε Then
Add Xi Y to ApproximateFD_Set
If (approximate closure(Xi) = approximate closure (Y)) then Add YXi to ApproximateFD_Set
Add Xi to closure [Y] Add XiY to EQ_Set Remove Y from candidate_set
Thủ tục GenerateNextLevelCandidates procedure: //Thủ tục sinh các ứng viên mức tiếp
Procedure GenerateNextLevelCandidates(CANDIDATE_SET)
For each Xi Candidate_Set do For each Xj Candidate_Set do
If (Xi[1]Xj[1],...,Xi[k-2]Xj[k-2] and Xi[k-1]Xj[k-1]) then Set XijXi join Xj
If Xij TempList then Delete Xij
else
Compute the partition Xij of Xij
2.3.2. Độ phức tạp của thuật toán khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tương đương dụng phủ tối thiểu và lớp tương đương
Thuật toán AFDMCEC đề xuất sẽ kiểm tra toàn bộ bảng gồm r bộ để