Trong thiết kế cơ sở dữ liệu thì lớp phụ thuộc dữ liệu đóng vai trò rất qua n
trọng và một trong những lớp phụ thuộc dữ liệu đầu tiên là lớp phụ thuộc hàm.
Việc khai phá lớp phụ thuộc hàm có yếu tố quyết định trong việc thiết kế Lược
đồ khái niệm, bước đầu của quá trình xây dựng Cơ sở dữ liệu. Một trong những
đặc điểm quan trọng của phụ thuộc dữ liệu là việc nghiên cứu về lớp phụ thuộc
hàm và khoá (một khái niệm quan trọng trong việc xác định quan hệ phụ thuộc
dữ liệu).
73 trang |
Chia sẻ: lylyngoc | Lượt xem: 2799 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số vấn đề về phụ thuộc dữ liệu và khai phá dữ liệu trong cơ sở dữ liệu quan hệ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Do min ( 1 f , 2 f , … , k f ) ³ f ta có i f ³ f suy ra (X → A i ) f Î F + (theo
A4') và (X→A 1 A 2 … A k ) f (theo D4). Vì vậy ta có (X → Y) f Î F + □
3.2.2 Bài toán thành viên
Một trong những ứng dụng quan trọng nhất của tính chất bao đóng tập
thuộc tính là sử dụng trong bài toán thành viên. Bài toán thành viên được áp
dụng nhiều trong việc tìm kiếm và trích trọn dữ liệu.
Định nghĩa: Cho R là một quan hệ trên tập thuộc tính U. Gọi F là tập các
Phụ thuộc hàm trên U. Tập tất cả các phụ thuộc hàm được suy ra từ F dựa vào
các tiên đề trên được ký hiệu là F a + và :
F + a = { (X→ Y) a │ (X→ Y) a nhận được từ F thông qua các tiên đề A1',
A2', A3', A4' và a >0}.
Để đơn giản ta ký hiệu F + a là F
+
34
Bài toán đặt ra là liệu phụ thuộc hàm (X→ Y) f có thuộc vào F + hay
không?
Để trả lời câu hỏi này thì từ tập Phụ thuộc hàm F, dựa vào các hệ tiên đề
A1', A2', A3', A4' để tính F + và kiểm tra yêu cầu của bài toán. Tuy nhiên việc
tính F + không phải lúc nào cũng dễ dàng vì F + là một tập không xác định. Do
đó ta cần xác định một cách tính đơn giản hơn.
Ký hiệu (F * ) + = {(X→ Y) f │(X→ Y) f Î F + và f = sup {a │(X→ Y) a
Î F + }} nghĩa là (F * ) + là tập tất cả các Phụ thuộc hàm có mức tin cậy cao nhất.
Do đó để kiểm tra Phụ thuộc hàm (X→ Y) f có thuộc vào F + hay không
thì thay vì tính F + ta sẽ tính (F * ) + .
Hiển nhiên ta thấy nếu tồn tại Phụ thuộc hàm mờ (X→ Y) a Î (F * ) + thì ta
sẽ chỉ ra ngay được phụ thuộc hàm mờ (X → Y) f Î F
+ với a > f .
Tuy nhiên viêc tính trực tiếp (F * ) + nghĩa là phải xét mọi thuộc tính của
quan hệ không phải lúc nào cũng hiệu quả vì sẽ phải tìm tất cả các Phụ thuộc
hàm kể cả những thuộc tính không dẫn đến các Phụ thuộc hàm cần tìm.
Ví dụ: U = {A,B,C,D,E,H,G}
F = {(A→ B) a , (B→ C) b , (E→ H) f , (ED→ G) j }
Hỏi (A → C) h có thuộc F + hay không ?
Khi đó nếu tính trực tiếp (F * ) + thì ta sẽ phải tính tất cả các Phụ thuộc hàm
của các thuộc tính D, E, G, H mặc dù chúng không hề dẫn đến Phụ thuộc hàm (A→
C) h .
Để việc tính toán hiệu quả hơn ta sẽ dựa vào việc tính toán bao đóng của
một tập thuộc tính theo phụ thuộc hàm mờ với mức tin cậy a nào đó ( 0 1 a £ £ ).
Theo đó thay vì tính trực tiếp F + ta sẽ tính X + nghĩa là sẽ tìm mọi thuộc tính
phụ thuộc hàm vào X với mức a nào đó (0 1 £ £ a ). Khi đó bài toán sẽ được giải
quyết một cách dễ dàng.
3.2.3 Thuật toán tìm bao đóng
Input: X Í U , X = {A 1 , A 2 , … A k }
F là tập các Phụ thuộc hàm mờ trên U
Output: X +
Thuật toán:
1. Khởi trị X 0 ={(A 1 ,1), (A 2 ,1) … (A k ,1)} , i=0.
35
2.Blist i ={(A,f )│( F V W V Î ® $ $ a ) W ( ) )( ,VÍdom(X
i ),
A ) , min( , b a f = ÎW với g b
g
min
) , (
V G
X G i
Î
Î
= }
{ Nghĩa là với mỗi Phụ thuộc hàm (V→W) a thì:
Nếu VÍ Dom(X i ) ={A│(A ,f ) i X Î }: – Tìm min của các ngưỡng của
tất cả các thuộc tính thuộc tập thuộc tính V
– Đặt ) , min( b a f = . Với mỗi tập
thuộc tính AÎW thỏa mãn (V→W) a thì sẽ add (A,f ) vào Blist i ( Blist i là tập
bao đóng trung gian) }
3. X 1 + i = X i ÈBlist i
Ở đây phép hợp là phép hợp mờ.
4. Nếu X 1 + i = X i thì dừng lại và X + = X 1 + i . Nếu không thì quay lại bước 2.
Ở đây X i được xét như là tập mờ trong đó (A ,f ) chỉ ra rằng A Phụ thuộc
hàm vào X với mức f . [6]
Ví dụ : U ={A,B,C,D,E,F,G,H}, F = {(B→C) 6 , 0 , (B→E) 8 , 0 , (E→F) 85 , 0 ¸
(F→G) 9 , 0 , (G→H) 9 , 0 , (H→A) 75 , 0 , (A→C) 7 , 0 }
Tính B + = ?
Giải: Áp dụng thuật toán trên ta có:
Khởi trị : B 0 = {(B,1)}
Khi đó với Phụ thuộc hàm (B→C) 6 , 0 thì f = min( 1, 0.6) = 0.6
Vậy (C,0.6) được thêm vào tập bao đóng tạm thời Blist 0
Tương tự với Phụ thuộc hàm (B→E) 0,8 ta cũng có a = (1,0.8) = 0.8. Suy
ra (E,0.8 ) cũng được thêm vào Blist 0
Vậy sau bước 1 tập bao đóng tạm thời là:
Blist 0 = {(C, 0.6), (E, 0.8)}
Suy ra:
B 1 = B 0 È F Blist
0 = {(B,1),(C, 0.6),(E, 0.8) }
Tiếp tục như trên với B 1 = {(B,1),(C, 0.6),(E, 0.8) } và Dom(B 1 ) =
{B,C,E}. Ta lần lượt có:
Blist 1 = {(C, 0.6), (E, 0.8),(F, 0.8)}
B 2 = B 1 F È Blist
1 = { (B,1),(C, 0.6), (E, 0.8),(F, 0.8)}
36
Blist 2 = {(C, 0.6),(E, 0.8), (F, 0.8), (G, 0.8)}
B 3 = B 2 F È Blist
2 ={(B,1), (C, 0.6),(E, 0.8), (F, 0.8), (G, 0.8)}.
Blist 3 = { (C, 0.6), (E, 0.8), (F, 0.8), (G, 0.8), (H, 0.8)}
B 4 = B 3 F È Blist
3 ={(B,1), (C, 0.6), (E, 0.8), (F, 0.8), (G,0.8), (H,0.8)}.
Blist 4 = { (C, 0.6),(E, 0.8), (F, 0.8), (G, 0.8), (H, 0.8), (A, 0.75)}
B 5 = B 4 F È Blist
4 ={(A, 0.75), (B,1),(C, 0.6), (E, 0.8), (F, 0.8), (G, 0.8),
(H, 0.8), }.
Blist 5 = {(C, 0.6), (E, 0.8),(F, 0.8), (G, 0.8), (H, 0.8), (A, 0.75), (C, 0.7)}
B 6 = B 5 F È Blist
5 ={(A, 0.75), (B,1),(C, 0.7), (E, 0.8), (F, 0.8), (G, 0.8),
(H, 0.8)}.
Blist 6 = {(C, 0.6), (E, 0.8),(F, 0.8), (G, 0.8), (H, 0.8), (A, 0.75), (C, 0.7)}
B 7 = B 6 F È Blist
6 ={(A, 0.75), (B,1),(C, 0.7), (E, 0.8), (F, 0.8), (G, 0.8),
(H, 0.8)} = B 6
Þ B + ={(A, 0.75), (B,1),(C, 0.7), (E, 0.8), (F, 0.8), (G, 0.8), (H, 0.8)}
Ví dụ 2: Cho tập thuộc tính U = {A,B,C,D,E,F};
F= { } 0.7 0.85 0.9 0.85 0.75 0.9 ( ) , ( ) , ( ) , ( ) , ( ) , ( ) AB C AB D D C B E CE F F D ® ® ® ® ® ®
Tính (AB) + ?
Giải: Áp dụng thuật toán trên ta có:
Khởi trị : AB 0 = {(A,1), (B,1)}
Khi đó với Phụ thuộc hàm (AB→C) 0,7 thì f = min( 1, 0.7) = 0.7
Vậy (C,0.7) được thêm vào tập bao đóng tạm thời Blist 0
Tương tự với Phụ thuộc hàm (AB→D) 0,85 ta cũng có a = (1,0.85) = 0.85.
Suy ra (D,0.85 ) cũng được thêm vào Blist 0
Vậy sau bước 1 tập bao đóng tạm thời là:
Blist 0 = {(C, 0.7), (D, 0.85)}
Suy ra:
AB 1 = AB 0 È F Blist
0 = {(A,1), (B,1), (C, 0.7), (D, 0.85)}
Tiếp tục như trên với AB 1 = {(A,1), (B,1), (C, 0.7), (D, 0.85)} và
Dom(AB 1 ) = {A,B,C,D}. Ta lần lượt có:
Blist 1 = {(C, 0.7), (D, 0.85),(C, 0.85), (E, 0.85)}
AB 2 = AB 1 F È Blist
1 = { (A,1), (B,1), (C, 0.85), (D, 0.85), (E, 0.85)}
Blist 2 = {(C, 0.7), (D, 0.85),(C, 0.85), (E, 0.85), (F, 0.75) }
37
AB 3 = AB 2 F È Blist
2 ={(A,1), (B,1), (C, 0.85), (D, 0.85), (E, 0.85), (F,
0.75)}.
Blist 3 = { (C, 0.7), (D, 0.85),(C, 0.85), (E, 0.85), (F, 0.75), (D, 0.75)}
AB 4 = AB 3 F È Blist
3 ={(A,1), (B,1), (C, 0.85), (D, 0.85), (E, 0.85), (F,
0.75)}= (AB) +
Þ AB + ={(A,1), (B,1), (C, 0.85), (D, 0.85), (E, 0.85), (F, 0.75)}
3.2.4 Tính đúng của thuật toán tìm bao đóng
Định lý: Thuật toán trên là hoàn toàn đúng đắn. Nghĩa là X t = X + với t là i thoả
mãn điều kiện dừng của thuật toán (X 1 + i = X i ) [6].
Chứng minh:
Để chứng minh thuật toán trên là đúng đắn ta sẽ phát biểu một số bổ đề
sau:
Bổ đề 1:Cho R là một quan hệ trên tập thuộc tính U .Với X, Y
} 0 U, A ) , (A { > Î Í a a , F là một tập các _ q Phụ thuộc hàm mờ trên R; X i , Y i
nhận được khi sử dụng thuật toán trên với i bất kỳ. Với X X = 0 và Y Y = 0 . Khi
đó:
1) Nếu X Y Í thì X i Í Y i
2) X k i X Í với mọi k i £ .
Chứng minh:
1) Ta sẽ chứng minh quy nạp theo i
+) Với i = 0 ta có X 0 0 Y Y X = Í = (đúng)
+) Giả sử (1) đúng với i = j–1
Ta cần chứng minh (1) cũng đúng với i = j. Do X j = X 1 1 - - Í j X
j B và
1 1 - - Í = j Y
j j B Y Y trong đó:
B 1 - j X = {(A ,f )│( F V W V Î ® $ $ a ) W ( ) )( ,VÍdom(X
1 - j ), A ) , min( , b a f = ÎW với
g b
g
min
1 ) , (
V G
X G j
Î
Î -
= }
B 1 - j Y = {(A ,f ')│( F V W V Î ® $ $ a ) W ( ) )( ,VÍdom(Y
1 - j ), A ) ' , min( ' , b a f = ÎW
với g b
g
min
1 ) , (
'
V G
Y G j
Î
Î -
= }
38
Theo giả thiết quy nạp ta có X 1 1 - - Í j j Y suy ra B 1 - j X Í B
1 - j
Y do với mỗi A Î
W ta có b b ³ ' nên f f ³ ' . Từ đó theo định nghĩa của phép hợp mờ ta có X 1 - j È
B 1 - j X Í Y È
-1 j B 1 - j Y . Suy ra X
j Í Y j □
2) Từ X 1 1 - - È = i X
i i B X suy ra X i i X Í -1 . Lấy k = i – m với m>0 ta có:
X i i m i m i X X X Í Í Í Í - - - - 1 1 ... □
Bổ đề 2: Cho U là tập thuộc tính, XÍU, X= X 1 X 2 …X k . Giả sử X
j là giá trị
đạt được ở bước thứ j sau khi sử dụng thuật toán trên với giá trị ban đầu là X 0 =
{(X 1 , 1),(X 2 , 1), …(X k , 1)}. Khi đó:
(1)
a, Nếu (Y,a ) j X Î thì a > 0.
b, Nếu (Y,h ) Î Blist j thì h > 0.
(2) Nếu (Y,a ) j X Î và a ³ b (0< b < 1) thì với mọi j nào đó (
(A,j ) p X Î (p<j) và nếu không có j sẽ dẫn đến (Y,a ) j X Î ) ta đều có b j ³ .
Chứng minh:
(1). a) Theo giả thiết ta có (Y,a ) j X Î suy ra Î a M= {g │(X i , g ) 0 X Î , I
=1,2,…,k}È {t │(V→W)t + Î F với 0 > t }. Mà ta có X 0 = {(X 1 , 1),(X 2 ,
1)…(X k , 1)} . Do đó a >0.
b) Tương tự như phần a) theo định nghĩa Blist i ta cũng suy ra 0 > h
(2) Ta sẽ chứng minh bằng quy nạp theo j
+) Với j = 0 ta có (Y, a )ÎX 0 = {(X i ,1), i=1…k} suy ra a =1 ³ b
+ Giả thiết quy nạp: Giả sử (2) đúng với j1
Ta cần chứng minh (2) đúng với j.; Theo giả thiết ta có
(Y,a ) j X Î và b a ³ (0 b £ <1) mà X 1 1 - - È = j j j B X suy ra:
ê
ë
é
Î
Î
-
-
) ' 2 ( ) , (
) ' 1 ( ) , (
1
1
j
j
B Y
X Y
a
a
(1’) đúng theo gải thiết quy nạp
Xét (2’) theo định nghĩa B 1 - j ta có a = min( g t , ) trong đó
B 1 - j = {(Y,a )│( F V W V Î ® $ $ t ) W ( ) )( ,VÍdom(X
1 - j ),A ) , min( , g t a = ÎW với
c g
c
min
1 ) , (
V G
X G j
Î
Î -
= }
39
Vì b a ³ suy ra b t ³ và b g ³ Þ c
c
min
1 ) , (
V G
X G j
Î
Î -
³ b . Do đó j chỉ có thể là
t hoặc một trong những giá trị c hoặc là một giá trị nào đó ký hiệu là ' j có
liên quan đến tập các giá trị c . Do (G, c ) 1 - Î j X và b a ³ nên ta có ' j b ³ (theo
giả thiết quy nạp). Vậy b j ³ □
Bổ đề 3: Cho X j và Blist j là các tập thu được khi sử dụng thuật toán trên sau j
bước với X 0 ={(X 1 ,1 )(X 2 ,1),…(X k ,1)}. Gọi X g j và Blist g j cũng là các giá trị
đạt được khi sử dụng thuật toán trên sau j bước nhưng với
X g 0 ={(X g ,1 )(X 2 ,g ),…(X k ,g )} với 0 1 £ £ < g b . Khi đó
(1). X g j Í X j
(2). Nếu (Y,a ) j X Î và a ³ b thì {(Y, b )} g j X Í
Chứng minh:
(1). Vì X g 0 Í X 0 nên ta có X g j Í X j (theo Bổ đề 1).
(2). Để chứng minh (2) ta sẽ chứng minh nếu (Y,a ) j X Î và a ³ b thì
tồn tại {(Y, ' a )} g j X Í thỏa mãn ' a ³ b .Theo bổ đề 2 ta có nếu (Y,a ) j X Î và
a ³ b (0< b < 1) thì với mọi j nào đó liên quan đến việc tính a ( Nghĩa là tồn
tại (A,j ) p X Î (p<j) và nếu không có j sẽ dẫn đến (Y,a ) j X Ï ) ta đều có b j ³ .
Và j này cũng liên quan đến việc tính a ’ thỏa mãn (Y,a ’) X Î g j .
Bây giờ ta sẽ chứng minh b a ³ ' bằng Phương pháp phản chứng: Giả sử
b a < ' . Do X g g g 1 1 - - È = j j j Blist X suy ra:
ê
ë
é
Î
Î
-
-
g a
g a
1
1
) ' , (
) ' , (
j
j
Blist Y
X Y
Theo định nghĩa X g j và Blist g j suy ra g l 1 1 ) , ( - - Î $ j j X G thỏa mãn
1 - j l b < . Tương tự g l 2 2 ) , ( - - Î $ j j X G thỏa mãn b l < -2 j … g l 0 0 ) , ( X G Î $ thỏa
mãn b l < 0 . Mâu thuẫn với giả thiết ban đầu b a l ³ = 0 . Vậy b a ³ ' □
Bây giờ ta sẽ chứng minh thuật toán trên là hoàn toàn đúng đắn
Để chứng minh X t = X + ta cần chứng minh X t Í X + và X + Í X t
1) X t Í X + .Ta sẽ chứng minh nếu (A,a ) t X Î thì (X→A) a + Î F
Chứng minh bằng Phương pháp quy nạp toán học:
+) Với t = 0, nếu (A, 1)} , ...(X ,1), {(X ) k 1
0 = Î X a ta có A ÎX , 1 = a suy ra
(X ) A ® + Î F .
40
+) Giả sử 1) đúng với t = j1
Ta sẽ chứng minh 1) đúng với t=j. Ta có (A, 1 1 ) - - È = Î j j j Blist X X a suy ra
ê
ê
ë
é
Î
Î
-
-
) 2 ( ) , (
) 1 ( ) , (
1
1
j
j
Blist X
X X
a
a
(1) Đúng theo giả thiết quy nạp
(2) Theo định nghĩa Blist j ta có
Blist 1 - j ={(X,a )│( F V W V Î ® $ $ h ) W ( ) )( ,VÍdom(X
1 - j ),A ) , min( , g h a = ÎW
với q g
q
min
1 ) , (
V G
X G j
Î
Î -
= }
Từ (G,q ) Í X 1 - j theo giả thiết quy nạp ta có (X ) G ® q
+ Î F . Do G V Í
suy ra (X→V) g + Î F (theo A4’, D4). Từ đó theo tính bắc cầu (A3’) suy ra
(X→W) a + Î F với ) , min( g h a = . Vì A W Î nên (X→A) a F Î
+ (D4).
Bây giờ ta sẽ chứng minh với mọi (A,a ) t X Î sẽ luôn tồn tại (A, + Î X ) ' a
với a a ³ ' . Thật vậy, do (A,a ) t X Î nên (X→A) + Î F a từ đó theo định nghĩa của
X + suy ra + Î $ X A ) ' , ( a mà a a ³ ' . Vậy X t Í X + . (1)
2) X + Í X t
Trước tiên ta sẽ chứng minh rằng nếu (X→A) + Î F a , A U Î thì tồn tại i
nào đó thỏa mãn {(A,a )} i X Í . Giả sử (X→A) a là Phụ thuộc hàm thứ j trong
tập F + ta sẽ chứng minh quy nạp theo j.
+) j = 1 (Chỉ có 1 PTH ) Khi đó (X→A) a F Î thì theo định định nghĩa 0 Blist ta
có (A,a ) 0 Blist Î và {(A,a )} 1 X Í
+) Giả thiết quy nạp: Giả sử điều trên đúng với j = p1 nghĩa là với các Phụ
thuộc hàm (X→A) a thứ j<p trong tập F
+ thì luôn tồn tại i nào đó thỏa mãn
{(A,a )} i X Í . Ta cần chứng minh điều đó cũng đúng với j = p.
+) Thật vậy, Nếu (X→A) a + Î F thu được thông qua tiên đề (A1’) thì ta có
(A,a )Î X 0 hay (A,a )Î X 1
Nếu (X→A) a + Î F thu được thông qua tiên đề (A2’) thì khi đó tồn tại Phụ
thuộc hàm (V→W) + Î F a thứ j<p nào đó và U Z Í $ sao cho VZ = X và WZ =
A. Vì AÍU nên A =W U Í .Vậy theo giả thiết quy nạp suy ra (A,a ) i V Í . Mặt
khác vì V X VZ = Í với V = V 1 V 2 …V l , X = X k X X ... 2 1 và V
0 = {(V 1 ,1),
41
(V 2 ,1), …, (V l ,1)} X
0 = {(X 1 ,1), (X 2 ,1), …, (X k ,1)}. Vì V
0 ÍX 0 nên V i i X Í
( Theo bổ đề 1 ). Suy ra {(A,a )} i X Í .
Nếu (X→A) a + Î F thu được thông qua tiên đề bắc cầu (A3’) từ hai Phụ
thuộc hàm thứ j,k < p nào đó. Gọi hai Phụ thuộc hàm đó lần lượt là (X→Z) f và
(Z→A) j với a j a f ³ ³ , và Z = Z k Z Z ... 2 1 U Í . Theo giả thiết quy nạp suy ra
{(Z i ,f )}
i X Í (i=1… k). Mặt khác ta có (Z→A) j nên cũng theo giả thiết quy
nạp suy ra $ l nào đó thỏa mãn {(A,j )} l Z Í , mà a j ³ l Z )} {(A, Í Þ a . Đặt
Z )} , ),...(Z , {(Z k 1
0 f f f = , vì a f ³ Þ {(A,a )} f l Z Í ( theo bổ đề 3 ) với Z f l được
tính theo thuật toán trên. Do Z i X Í f 0 Þ Z l i l X + Í f ( theo bổ đề 1 ). Vậy
{(A,a )} l i X + Í .
Nếu (X→A) a + Î F thu được dựa trên tiên đề (A4’) khi đó a a ³ $ ' thỏa
mãn (X→A) ' a
+ Î F . Vì (X→A) a là Phụ thuộc hàm thứ j= p nên (X→A) ' a là
Phụ thuộc hàm thứ j = (p1). Vậy theo giả thiết quy nạp ta có {(A, ' a )} i X Í . Mà
a a ³ ' suy ra {(A,a )} i X Í ( theo bổ đề 3).
Vậy nếu (X→A) + Î F a , A U Î thì luôn tồn tại i nào đó thỏa mãn
{(A,a )} i X Í
Bây giờ ta sẽ chứng minh X t X Í + . Tức là nếu {(A,a )} + Í X thì
{(A,a )} i X Í . Thật vậy, do {(A,a )} + Í X Þ F A X Î ® a ) (
+ mà theo chứng
minh trên ta có nếu F A X Î ® a ) (
+ thì luôn tồn tại số i nào đó thoả mãn
{(A,a )} i X Í .
+) Nếu i£ t thì {(A,a )} i X Í t X Í
+) Nếu i ³ t thì X t i X = Vì X 1 + = t t X = X 2 + t …..= X i (do t là điều kiện dừng
của thuật toán).
Vậy X t X Í + (2)
Từ (1) và (2) ta có X t X = + . Nghĩa là thuật toán trên hoàn toàn đúng đắn □
3.3 Định lý tương đương cho tập mờ
Trong quá trình nghiên cứu CSDL truyền thống người ta đã chứng minh
được rằng việc các phụ thuộc hàm được dẫn xuất theo quan hệ và theo các tiên
đề ( suy dẫn logic) là tương đương với nhau. Trong quá trình nghiên cứu về
CSDL quan hệ, tác giả đánh giá việc mở rộng (mờ hoá) định lý tương đương
(the fuzzy equivalence theory) này là hoàn toàn tự nhiên. Đó cũng là cơ sở cho
việc xét các mối quan hệ trong ngữ cảnh mờ. Dưới đây ta xét một số khái niệm
sau:
42
3.3.1 Định nghĩa: Cho tập PTH mờ F trên tập thuộc tính mờ U và { } f a là một
PTH mờ với mức (0 1) a a < £ trên U. Ta nói PTH { } f a được suy dẫn theo quan
hệ từ tập PTH mờ F và viết ( ) F f a = nếu mọi quan hệ R(U) thoả F thì cũng
thỏa { } f a
3.3.2 Định nghĩa: Cho tập PTH mờ F trên tập thuộc tính mờ U và { } f a là một
PTH mờ với mức (0 1) a a < £ trên U. Ta nói PTH { } f a được suy dẫn theo tiên đề
(hay suy dẫn logic ) từ tập PTH mờ F và viết ( ) F f a - nếu { } f F a + Î
3.3.3 Định lý:
Gọi F là tập các PTH mờ trên tập thuộc tính U
(X ) Y a ® là một PTH mờ với mức a trên U
Khi đó:
F ├ (X→Y) a suy dẫn theo hệ tiên đề
Û
F = (X→Y) a suy dẫn theo quan hệ R
Hay nói cách khác suy dẫn theo quan hệ và suy dẫn theo tiên đề là như
nhau.
Chứng minh:
Þ Nếu F ├ (X®Y) a thì F = (X®Y) a
Giả sử sau k bước sử dụng các luật của hệ tiên đề ta thu được tập các PTH
{F k } và R{F k }. Ta cần chứng minh với PTH thứ (k+1) (X ) Y a ® nếu
{ } k F ( ) X Y a - ® thì { } ( ) k F X Y a = ® , hay nói cách khác {(X Y) } R a ®
o Nếu { } k F ( ) X Y a - ® theo (A1’) nghĩa là { } F ( ) k Y X X Y F a Í Þ ® Î . Mà
{ } { } ( ) k R F R X Y a Þ ®
o Nếu { } k F ( ) X Y a - ® theo (A2’) nghĩa tồn tại ZW = X và VW = Y thỏa
mãn { } { } { } ( W VW) ( ) k R F R Z R X Y a a Þ ® Þ ®
o Nếu { } k F ( ) X Y a - ® theo (A3’) nghĩa là tồn tại hai PTH
{ } 1 1 k ( ) , ( ) F X Z Z Y b j ® ® Î thỏa mãn ( ) X Y a ® với min( , ) a b j = suy ra
{ } { } k ( ) F ( ) X Y R X Y a a ® Î Þ ®
o Nếu { } k F ( ) X Y a - ® theo (A4’) thì tồn tại ' a a ³ thỏa mãn
{ } { } ' ( ) ( ) k k X Y F X Y F a a ® Î Þ ® Î . Suy ra { } ( ) R X Y a ®
Vậy theo tất cả các tiên đề ta đều có { } ( ) R X Y a ® hay F = (X ) Y a ®
43
Ü Giả sử có F = (X®Y) a , cần chứng minh F├ (X®Y) a Û chứng minh
F├ (X®Y) a ÞF ¹ (X®Y) a (*)
Nói một cách khác giả sử có PTH { } f a và { } f F a + Ï ta cần chứng minh
(1) R không thoả { } f a
(2) R thỏa mọi PTH trong F +
Thật vậy :
Giả sử có PTH mờ { } f a = (X ) Y a ® và (X ) Y a ® F + Ï
Từ (X ) Y a ® Þ tính X
+
Xây dựng quan hệ R thoả F nhưng không thoả (X ) Y a ® như sau:
R (A1, 1 b ) (A2, 2 b ) … (A k , ) k b (A 1 k+ , 1 k b + ) ... (A , n n b )
u ( a1, 1 a ) (a2, 2 a ) … (a k , k a ) (a 1 1 , k k g + + ) … (a , n n g )
v ( a1, 1 a ) (a2, 2 a ) … (a k , k a ) (b 1 1 , k k l + + ) … (b , n n l )
Giả sử X + = {(A1, 1 b ) (A2, 2 b ) … (A k , ) k b }. Quan hệ R gồm hai bộ u,v.
Hai bộ này giống nhau trên tập X + và với mọi thuộc tính (B ,i i b ) X + Ï (i =
k+1,… ,n ) thì u.(B, i b ) ¹ v.(B, i b ) tức là (a , ) i i g ( , ) i i b l ¹
(1) Trước hết ta chứng minh R không thoả ( ) X Y a ®
Ta có F├ (X ) Y a ® ÞY F X
+ Ë (t/c 5)
Þu.(Y,a ) ¹ v.(Y,a ) (*)
(X, ) a X + Í ( , ) ( , ) u X v X a a Þ = (**)
Từ (*) và (**) Þ ┐R{(X→Y) a }
(2) R thoả mãn mọi PTH trong tập F +
Giả sử (W→Z) j F + Î và có u.(W,j ) = v.(W, ) j ta cần chứng minh
u.(Z, ) j = v.(Z,j )
Từ u.(W,j ) = v.(W, ) j ÞW F X
+ Í ( ) X W j
+ Þ ® (t/c 5) (1’). Mặt khác
ta có (X ) X f
+ ® (t/c 4) (2’)
Theo giả thiết ta có : F├ (W→Z) j (3’)
Từ (1’), (2’) và (3’) áp dụng tiên đề bắc cầu: (X→Z) q với min( , ) q f j =
F Z X
+ Þ Í
Suy ra u.(Z, ) q = v.(Z, ) q Þ R{ (W Z) j ® }
44
Từ (1) và (2) suy ra F ¹ (X ) Y a ® □
3.4 Thuật toán tìm khoá mờ
Thông thường, việc tìm khoá mờ (fuzzy key) trong CSDL quan hệ thì
khái niệm bao đóng tập thuộc tính sẽ được áp dụng. Cách cơ bản nhất để tìm
khoá mờ là phân tích bao đóng tập thuộc tính của tất cả các bộ kết hợp giữa các
thuộc tính trong quan hệ và kiểm tra xem bao đóng tập thuộc tính được tìm thấy
có bao gồm toàn bộ thuộc tính của quan hệ hay không. Điều đó có nghĩa là sự
kết hợp thuộc tính sẽ quyết định tất cả các thuộc tính trong quan hệ với mức thoả
a nào đó và giá trị min i a của mức thoả này sẽ thể hiện là khoá mờ ở mức thoả
đó. Nếu sử dụng cách này rất mất thời gian và thường không được áp dụng.
Một phương án khác để tìm khoá mờ là sẽ không quan tâm đến bao đóng
tập thuộc tính của tất cả các thuộc tính trong quan hệ mà chỉ quan tâm đến một
số thuộc tính cần thiết. Như ta đã biết mỗi thuộc tính là một phần của khoá mờ
sẽ nằm ở phía bên trái (lefthand) của bất kỳ một phụ thuộc hàm mờ nào hoặc nó
sẽ không nằm trong bất kỳ một phụ thuộc hàm mờ nào của quan hệ. Điều đó có
nghĩa rằng khi ta tìm khoá mờ thì các thuộc tính xuất hiện ở phía bên phải (right
–side) của bất kỳ một phụ thuộc hàm mờ nào đó cũng sẽ không được xét tới
trong quá trình tìm bao đóng tập thuộc tính.
Thuật toán tìm kiếm khoá mờ trong đó F là tập các phụ thuộc hàm mờ của
quan hệ R [10]
(1)Tìm tất cả các thuộc tính bên phía trái ( lefthand side) của phụ thuộc
hàm mờ (ffds) của tập F
(2)Tìm tất cả các thuộc tính không nằm trong bất kỳ một phụ thuộc hàm
mờ nào của tập F
(3)Hợp 2 tập thuộc tính đã tìm được ở bước (1) và bước (2) thành danh
sách thuộc tính ( Attribute List)
(4)Bắt đầu bằng sự kết hợp các thuộc tính đơn ( single attribute) sau đó
tăng dần lên sự kiết hợp của tất cả các thuộc tính trong Attribute List
§ Nếu sự kết hợp thuộc tính chứa một khoá được tìm thấy trước
thì tiếp tục với sự kết hợp thuộc tính khác
§ Tìm bao đóng của sự kết hợp thuộc tính trên
§ Nếu bao đóng tìm được có chứa tất cả các thuộc tính của quan
hệ R khi đó ta có a = min {mức thoả trong bao đóng}. Add sự
kết hợp trên và danh sách khoá mờ ( fuzzy key List) với mức
thoả a
Ví dụ 1:
Cho quan hệ R ( A, B, C, D ) và phụ thuộc hàm mờ: (A®B) 0.6 và
(A®CD) 0.85
Áp dụng thuật toán trên ta có:
Tập Lefthand side của các thuộc tính trong quan hệ R là: {A}
45
Quan hệ R không chứa bất kỳ một thuộc tính nào không có mặt trong tập các
phụ thuộc hàm mờ
Attribute List: ={A}
Do trong Attribute List chỉ có 1 thuộc tính nên chỉ có một tập bao đóng là của
thuộc tính A.
Ta có A + = { (A,1), (B,0.6), (C,0.85), (D, 0.85)}
Do A + bao gồm tất cả các thuộc tính của quan hệ R nên “A” là khoá mờ chấp
nhận được .
Ta có a =min (1, 0.6, 0.85) = 0.6
Vậy A là khoá mờ chấp nhận được của quan hệ R với mức thoả 0.6 a =
Ví dụ 2:
Cho quan hệ R trên tập thuộc tính U ={A,B,C,D,E,F,G,H}, F = {(B→C) 6 , 0 ,
(B→E) 8 , 0 , (E→F) 85 , 0 ¸ (F→G) 9 , 0 , (G→H) 9 , 0 , (H→A) 75 , 0 , (A→C) 7 , 0 }
Tìm khoá mờ của quan hệ R?
Áp dụng thuật toán trên ta có:
Left hand side = {A,B,E,F,G,H}
Thuộc tính không có mặt trong tập các phụ thuộc hàm mờ của quan hệ R là:
{D}
Þ Attribute List= {A,B,D,E,F,G,H}
Xét các thuộc tính đơn ta có, chẳng hạn:
A + = {(A,1), (C,0.7)}
B + = {(A, 0.75), (B,1),(C, 0.7), (E, 0.8), (F, 0.8), (G, 0.8), (H, 0.8)} ( theo ví dụ
trên)
Như vậy ta có thể dễ dàng nhận thấy ngay (BD) + bao gồm toàn bộ các thuộc tính
của quan hệ R.
Ta xét a = min (1;0.75;0.7;0.8) = 0.7
Vậy (BD, 0.7) là khoá mờ chấp nhận được của quan hệ R.
3.5 Các dạng chuẩn mờ
Khái niệm phụ thuộc hàm là điển hình trong lý thuyết chuẩn hoá [2]. Phụ
thuộc hàm là khái niệm ngữ nghĩa, liên quan đến quan hệ ngữ nghĩa cụ thể giữa
các thuộc tính của một quan hệ.
Việc xác định các dạng chuẩn mờ ( fuzzy normal form ) sẽ là cơ sở cho
việc thiết kế CSDL tránh việc dư thừa dữ liệu cũng như tạo ra các ràng buộc dữ
liệu chặt chẽ hơn. Một số dạng chuẩn mờ dữ liệu được mô tả như sau:
3.5.1 Dạng chuẩn mờ F1NF
Dạng chuẩn mờ F1NF [10] (Fuzzy First Normal Form) được mở rộng từ
khái niệm dạng chuẩn 1NF trong CSDL quan hệ truyền thống.
Định nghĩa: Cho D k là miền xác định của thuộc tính A k , khi đó lược đồ quan hệ
R được gọi là dạng chuẩn mờ F1NF nếu và chỉ nếu với bất kỳ quan hệ r Í R thì
không chứa bất kỳ một thuộc tính đa giá trị nào.
46
Thuật toán: Thuật toán đưa về dạng chuẩn mờ F1NF
Khi quan hệ R không ở dạng chuẩn mờ F1NF thì ta loại bỏ các bộ mà
thuộc tính của nó vi phạm dạng chuẩn mờ F1NF
Sắp xếp các thuộc tính này với các thuộc tính khác thành các bộ riêng rẽ
thoả mãn dạng chuẩn mờ F1NF.
Ví dụ:
Cho bảng Nhanvien như sau
Nhanvien Hoten Tuoi Ngoai ngu
Trần Văn Hòa 45 Anh
Lê Thị Hoa Hơi trẻ {Anh, Pháp}
Bùi Thị Huệ Trung niên Ả rập
Bùi Văn Trường 50 Đức
Bảng 5: Bảng quan hệ Nhân viên
Trong quan hệ trên ta có các bộ:
t 1 =(Trần Văn Hoà, 45, Anh}
t 2 =(Lê Thị Hoa, hơi trẻ, [Anh, Pháp]}
t 3 =(Bùi Thị Huệ, trung niên, Ả rập}
t 4 =(Bùi Văn Trường, 50, Đức}
Lược đồ trên không thoả mãn dạng chuẩn mờ F1NF vì ở bộ thứ 2 Lê Thị
Hoa nói 2 ngôn ngữ và thuộc tính này là đa giá trị. Chúng ta áp dụng thuật toán
trên để đưa lược đồ trên về dạng chuẩn mờ F1NF. Ta có như sau:
t 1 =(Trần Văn Hoà, 45, Anh}
t 2 =(Lê Thị Hoa, hơi trẻ, [Anh, Pháp]}
Þ t 5 =(Lê Thị Hoa, hơi trẻ, Anh}
t 6 =(Lê Thị Hoa, hơi trẻ, Pháp}
t 3 =(Bùi Thị Huệ, trung niên, Ả rập}
t 4 =(Bùi Văn Trường, 50, Đức}
Khi đó lược đồ R đã ở dạng chuẩn mờ F1NF
3.5.2 Dạng chuẩn mờ F2NF
Cũng tương tự như trong CSDL quan hệ truyền thống, khi xét đến CSDL
quan hệ mờ thì dạng chuẩn mờ F2NF [10] được xây dựng dựa trên các khái
niệm liên quan đến phụ thuộc hàm mờ hoàn toàn ( full FFD) và phụ thuộc hàm
từng phần.
47
Định nghĩa: Cho F là tập các phụ thuộc hàm mờ của lược đồ R và K là khoá mờ
của R với mức thoả a . R được gọi là dạng chuẩn mờ F2NF nếu và chỉ nếu các
thuộc tính không khoá mờ phụ thuộc hoàn toàn vào khoá chính. Nói cách khác
là không có thuộc tính không khoá nào phụ thuộc hàm từng phần trên khoá mờ
K.
Ví dụ:
Cho quan hệ R ( A, B, C, D ) và phụ thuộc hàm mờ: (AB®D) 0.6 và
(A®C) 0.85
Ta thấy (AB) + 0.6 = { A, B, C, D} ÞAB là khoá mờ với mức thoả 0.6
Khoá này không phải là khoá chính do thuộc tính không phải là khoá C phụ
thuộc một phần vào khoá chính AB của quan hệ R. Do đó quan hệ R không
phải là ở dạng chuẩn mờ F2NF.
Khi lược đồ chưa ở dạng chuẩn mờ F2NF thì ta cần có thuật toán để đưa
lược đồ này về dạng chuẩn nêu trên. Dưới đây là các bước chi tiết của thuật
toán.
3.5.2.1 Xác định dạng chuẩn mờ F2NF
Thuật toán:
Thuật toán xác định phụ thuộc hàm một phần:
Giả sử xét phụ thuộc hàm một phần (X®Y) a
If
Tập Lefthand side X của tập các phụ thuộc hàm chứa thuộc tính đơn thì
thuật toán dừng lại
o Phụ thuộc hàm không phải là phụ thuộc hàm một phần
Else
Bắt đầu với sự kết hợp các thuộc tính đơn. Sau đó xét tất cả các bộ kết
hợp giữa các thuộc tính của X trừ sự kết hợp có chứa toàn bộ các thuộc
tính của quan hệ R.
o Tìm bao đóng của các sự kết hợp thuộc tính
o Nếu bao đóng chứa tất cả các thuộc tính bên phải (righthand side)
Y của phụ thuộc hàm với mức thoả b ³ ¶ thì đó là Phụ thuộc hàm
một phần
Lặp lại quá trình trên.
Để xác định xem quan hệ đã cho có phải ở dạng chuẩn mờ F2NF hay không
thì ta cần kiểm tra toàn bộ các thuộc tính không khoá để xem có phụ thuộc hàm
một phần trên các khoá mờ của quan hệ R.
Thuật toán:
Thuật toán xác định dạng chuẩn mờ F2NF. Xét K là tập các khoá mờ của
quan hệ R
For K i ÍR
Nếu khoá mờ có chứa thuộc tính đơn Þ không có phụ thuộc hàm một
phần. Lặp lại và tiếp tục với các cơ hội khác.
48
Với các thuộc tính không khoá A j R Î
o Lấy phụ thuộc hàm mờ K i ®A j với mức thoả ¶
o Áp dụng thuật toán xác định Phụ thuộc hàm mờ một phần nêu trên
để tìm ra liệu một phụ thuộc hàm có là phụ thuộc hàm một phần
hay không. Nếu có thì quan hệ trên không ở dạng chuẩn mờ F2NF
3.5.2.2 Đưa quan hệ về dạng chuẩn mờ F2NF
Trong trường hợp quan hệ R không ở dạng chuẩn mờ F2NF ta có thể đưa
quan hệ R về dạng chuẩn mờ F2NF bằng thuật toán sau:
Thuật toán:
Thuật toán chuẩn hoá về dạng chuẩn mờ F2NF.
R không ở dạng chuẩn mờ F2NF, sử dụng thuật toán xác định dạng chuẩn
F2NF, tìm các khoá mờ chấp nhận được và các thuộc tính không khoá mờ.
Sắp xếp lại và thiết lập một quan hệ mới cho mỗi khoá mờ một phần
(partial fuzzy keys) và các thuộc tính không khoá phụ thuộc vào nó
Phân rã các thuộc tính không khoá mờ mà nó là phụ thuộc hàm mờ một
phần vào các khoá mờ của quan hệ gốc và thiết lập quan hệ mới với các
thuộc tính còn lại.
Ví dụ 1:
Cho quan hệ R ( A, B, C, D ) và phụ thuộc hàm mờ: (AB®D) 0.6 và
(A®C) 0.85
Ta thấy (AB) + 0.6 = { A, B, C, D} ÞAB là khoá mờ với mức thoả 0.6
Phụ thuộc hàm mờ (A®C) 0.85 ( A là thuộc tính của khoá mờ) ÞCần sắp
xếp lại quan hệ R
Áp dụng thuật toán trên ta có 2 quan hệ mới:
R1 = ( A, C) trong đó A là khoá mờ với mức thoả 0.85
R2 = ( A, B, D) trong đó AB là khoá mờ với mức thoả 0.6
Khi đó các quan hệ R1, R2 đã ở dạng chuẩn F2NF.
Ví dụ 2:
Ta xét ứng dụng Quản lý rủi ro. Xây dựng một hệ thống đánh giá kết quả.
§ Các khách hàng: cá nhân, doanh nghiệp và liên danh
Các thuộc tính của khách hàng cá nhân (tuổi, tình trạng hôn nhân, địa chỉ)
trong khi đó thuộc tính của khách hàng doanh nghiệp sẽ phức tạp hơn và có
chứa các dữ liệu mờ. Các thuộc tính của quan hệ Đánh giá rủi do như sau:
§ Vốn (Vốn điều lệ)
§ Doanh thu (Doanh thu hằng năm)
§ Nhân sự (Số lượng nhân sự)
§ Kinh nghiệm (Số năm kinh nghiệm)
§ ĐKKD (Đăng ký kinh doanh)
§ Tài sản (Đánh giá nền tảng tài chính)
§ Công ty (Đánh giá cơ cấu tổ chức doanh nghiệp)
49
§ Phát mại tài sản (Đánh giá giá trị tài sản của doanh nghiệp trong
trường hợp rủi do cần phát mại tài sản)
§ Tín chấp (Đánh giá mức độ tín nhiệm của doanh nghiệp)
Các Phụ thuộc hàm mờ bao gồm:
FFD1: Vốn điều lệ và doanh thu hằng năm quyết định năng lực tài chính
của doanh nghiệp đó
{Vốn, Doanh thu} 0.75 ® Tài sản
FFD2: Số lượng nhận sự, số năm kinh nghiệm và số ĐKKD của doanh
nghiệp có thể sẽ quyết định tăng hay giảm giá trị công ty khi phát mại tài
sản
{ Nhân sự, Kinh nghiệm, ĐKKD} 0.65 ® Công ty
FFD3: Nền tảng tài chính và cơ cấu tổ chức doanh nghiệp sẽ quyết định
chủ yếu đến giá trị của doanh nghiệp trong trường hợp rủi ro cần phát mại
tài sản
{ Tài sản, Công ty} 0.85 ® Phát mại tài sản
FFD4: Đánh giá mức độ rủi do của công ty khi phải phát mại tài sản có
thể sẽ quyết định tăng hay giảm tín nhiệm của doanh nghiệp
Phát mại tài sản 0.8 ® Tín chấp
Trong qua hệ trên thì thuộc tính ( Vốn, Doanh thu, Kinh nghiệm, ĐKKD)
là khoá mờ với mức thoả 0.65 a = . FFD1 có chứa thuộc tính của khoá mờ (Vốn,
Doanh thu) do đó thuộc tính Tài sản là thuộc tính không khoá phụ thuộc hàm
vào một phần của khoá mờ trên.
Tương tự như vậy đối với FFD2 ta thấy thuộc tính Công ty cũng là thuộc
tính không khoá phụ thuộc hàm vào một phần của khoá mờ.
Do đó, quan hệ trên không phải ở dạng chuẩn mờ F2NF. Để chuẩn hoá
quan hệ trên về dạng chuẩn F2NF ta phân rã thành 2 quan hệ như sau:
R1 = ( Vốn, Doanh thu, Tài sản)
Trong đó thuộc tính {Vốn, Doanh thu} là khoá mờ với mức thoả 0.75 và phụ
thuộc hàm là:
{Vốn, Doanh thu} 0.75 ® Tài sản
R2 = ( Nhân sự, Kinh nghiệm, ĐKKD, Công ty)
Trong đó thuộc tính {Nhân sự, Kinh nghiệm}, ĐKKD là khoá mờ với mức thoả
b = 0.65 và phụ thuộc hàm là:
{ Nhân sự, Kinh nghiệm, ĐKKD} 0.65 ® Công ty
Khi đó trong quan hệ cũ vẫn còn những thuộc tính còn lại, loại các thuộc tính
Tài sản và Công ty ( các thuộc tính không khoá mà phụ thuộc một phần vào
khoá chính) khỏi quan hệ ban đầu. Khi đó quan hệ bao gồm các thuộc tính còn
lại là:
R3= ( Vốn, Doanh thu, Nhân sự, Kinh nghiệm, ĐKKD, Phát mại tài sản,
Tín chấp)
Trong đó {Vốn, Doanh thu, Nhân sự, Kinh nghiệm, ĐKKD} là khoá mờ
với mức thoả d =0.65 và các phụ thuộc hàm mờ là:
50
{ Nhân sự, Kinh nghiệm, ĐKKD} 0.65 ® Công ty
{Vốn, Doanh thu} 0.75 ® Tài sản
Như vậy các quan hệ đã không còn các thuộc tính không khoá mờ phụ thuộc vào
một phần của khoá chính. Khi đó các quan hệ R1, R2, R3 đã ở dạng chuẩn
F2NF.
3.5.3 Dạng chuẩn mờ F3NF
Định nghĩa: Cho F là tập của các phụ thuộc hàm của quan hệ R. K là khoá mờ
của quan hệ R với mức thoả a . R được gọi là dạng chuẩn mờ F3NF nếu và chỉ
nếu R ở dạng chuẩn F2NF và Phụ thuộc hàm X a ® A F Î , A ËX, hoặc X chứa
khoá mờ hoặc A là khoá chính mờ ( không tồn tại phụ thuộc bắc cầu).
Ta có thể sử dụng trực tiếp định nghĩa dạng chuẩn F3NF để xác định xem
quan hệ R có ở dạng chuẩn F3NF hay không. Tất cả các phụ thuộc hàm được
kiểm tra lại với các điều kiện:
Nếu các thuộc tính bên trái phụ thuộc hàm chứa toàn bộ thuộc tính của
phía bên phải phụ thuộc hàm thì phụ thuộc hàm đó không vi phạm dạng
chuẩn F3NF
Nếu các thuộc tính bên trái phụ thuộc hàm có chứa khoá mờ của quan hệ
thì dạng chuẩn F3NF không bị vi phạm
Nếu các thuộc tính bên phải của phụ thuộc hàm đều là các khoá chính mờ
thì dạng chuẩn F3NF cũng không bị vi phạm
Với các điều kiện trên ta xây dựng thuật toán xác định dạng chuẩn F3NF như
sau:
Thuật toán:
Thuật toán xác định dạng chuẩn mờ F3NF. Xét K là tập các khoá mờ
của quan hệ R.
(1) For all FDDs X a ® Y trong R
§ If XÊY , R ở dạng F3NF , else
§ If XÊK i trong đó K i K Ì , R ở dạng F3NF, else
§ Đặt P là tập các khoá chính mờ của quan hệ R. If Y ÍP, R ở
dạng F3NF
(2) If có ít nhất một phụ thuộc hàm trong quan hệ R không thoả mãn các
điều kiện trên thì R không ở dạng chuẩn F3NF.
Ví dụ:
Cho quan hệ R (A, B, C, D, E) và phụ thuộc hàm mờ: AB 0.85 ® C,
AC 0.8 ® D và C 0.7 ® E
Ta thấy phụ thuộc hàm đầu tiên AB 0.85 ® C có khoá mờ, và các thuộc tính
A, B của vế trái phụ thuộc hàm không vi phạm dạng chuẩn F3NF
Ở phụ thuộc hàm AC 0.8 ® D và C 0.7 ® E đã vi phạm dạng chuẩn F3NF vì
A, C không là một phần của khoá mờ {A,B} và D, E không phải là khoá chính.
Do đó R không ở dạng chuẩn F3NF. Cần sắp xếp lại quan hệ R
51
Áp dụng thuật toán trên ta có 2 quan hệ mới:
R1 = ( A, B,C) trong đó {A,B} là khoá mờ với mức thoả 0.85
R2 = ( C,D, E) trong đó C là khoá mờ với mức thoả 0.7
Khi đó các quan hệ R1, R2 đã ở dạng chuẩn F3NF.
3.5.4 Dạng chuẩn mờ Boyce Codd (FBCNF)
Tương tự như trong CSDL quan hệ truyền thống, dạng chuẩn mờ Boyce
Codd ( FBCNF) chặt chẽ hơn dạng chuẩn F3NF. Dạng chuẩn FBCNF sẽ tránh
được việc dư thừa dữ liệu trong thiết kế CSDL.
Định nghĩa: Cho F là tập của các phụ thuộc hàm của quan hệ R. K là khoá mờ
của quan hệ R với mức thoả a . R được gọi là dạng chuẩn mờ FBCNF nếu và
chỉ nếu R ở dạng chuẩn F3NF và với bất kỳ phụ thuộc hàm X a ® A F Î , A ÌX
hoặc X là siêu khoá mờ (fuzzy superkey) của R thì X K Ê .
Để kiểm tra xem quan hệ R có ở dạng chuẩn FBCNF hay không thì tất cả
các phụ thuộc hàm mờ của quan hệ R phải thoả mãn hai điều kiện:
Các thuộc tính phía bên trái của phụ thuộc hàm mờ có chứa toàn bộ các
thuộc tính bên phải.
Các thuộc tính phía bên trái của phụ thuộc hàm mờ có chứa bất kỳ khoá
mờ nào của quan hệ R
thì phụ thuộc hàm mờ đó không vi phạm dạng chuẩn FBCNF. Thuật toán xác
định xem quan hệ R có ở dạng chuẩn FBCNF hay không được xây dựng như
sau:
Thuật toán:
Thuật toán xác định dạng chuẩn mờ FBCNF.
Giả sử có phụ thuộc hàm vi phạm chuẩn FBCNF là X b ® A với mức thoả
b nào đó, trong đó A, X ÌR và A là thuộc tính đơn trị. Phân rã quan hệ R thành
hai quan hệ RA và XA
Lặp lại cho tất cả các phụ thuộc hàm vi phạm chuẩn FBCNF cho đến khi
trong quan hệ R không còn phụ thuộc hàm nào vi phạm chuẩn FBCNF. Khi đó
các quan hệ mới được hình thành sẽ ở dạng chuẩn FBCNF.
Ví dụ:
Cho quan hệ R = ( A, B, C, D, E, F, G ), các phụ thuộc hàm mờ với các
mức thoả tương ứng:
(CE® A) 0.8 , (BD ® E) 0.7 và (C ®B) 0.9 và A là khoá mờ của R với mức
thoả 0.85, tức là: (A®BCDEFG) 0.85 .
Xét quan hệ trên ta thấy R đã ở dạng chuẩn F2NF vì không có phụ thuộc
hàm từng phần do A là khóa đơn trị.
Xét R có ở dạng chuẩn F3NF?
Ta thấy A là khoá của quan hệ mà phụ thuộc hàm BD 0.7 ® E là phụ
thuộc hàm giữa các thuộc tính không khoá. Do đó quan hệ R không thoả mãn
điều kiện của dạng chuẩn F3NF.
Ta phân ra quan hệ R thành hai quan hệ:
52
R1 = ( B, D, E ) với các phụ thuộc hàm là (BD ® E) 0.7 , BD là khoá mờ
của quan hệ R1 với mức thoả 0.7
R2 = ( A,B,C,D,F,G ) với các phụ thuộc hàm (C ®B) 0.9 , A là khoá mờ
với mức thoả 0.85
Sau khi phân rã, R1 đã ở dạng chuẩn F3NF do không còn phụ thuộc hàm
bắc cầu
Xét quan hệ R2 ta thấy vẫn còn phụ thuộc hàm (C ®B) 0.9 là phụ thuộc
hàm bắc cầu nên R2 chưa ở dạng chuẩn F3NF. Tiếp tục tách quan hệ R2 thành 2
quan hệ mới:
R3 = ( A,C,D,F,G ) và A là khoá mờ với mức thoả 0.85
R4 = ( B,C ) với các phụ thuộc hàm (C ®B) 0.9 , C là khoá mờ với mức
thoả 0.9
Khi đó R3, R4 đã ở dạng chuẩn F3NF.
Sau khi phân rã xong thì các quan hệ R1, R3, R4 đã ở dạng chuẩn FBCNF.
53
KẾT LUẬN
4.1 Ý nghĩa khoa học và thực tiễn của đề tài
Trong thiết kế cơ sở dữ liệu thì lớp phụ thuộc dữ liệu đóng vai trò rất quan
trọng và một trong những lớp phụ thuộc dữ liệu đầu tiên là lớp phụ thuộc hàm.
Việc khai phá lớp phụ thuộc hàm có yếu tố quyết định trong việc thiết kế Lược
đồ khái niệm, bước đầu của quá trình xây dựng Cơ sở dữ liệu. Một trong những
đặc điểm quan trọng của phụ thuộc dữ liệu là việc nghiên cứu về lớp phụ thuộc
hàm và khoá (một khái niệm quan trọng trong việc xác định quan hệ phụ thuộc
dữ liệu). Việc phát triển nghiên cứu về dữ liệu mờ (fuzzy data) đòi hỏi việc mở
rộng khái niệm liên quan đến lớp phụ thuộc hàm mờ (fuzzy functional
dependency) và nghiên cứu về khái niệm khoá mờ (fuzzy key) trong CSDL quan
hệ. Đây cũng là sự mở rộng hết sức tự nhiên của quá trình phát triển Cơ sở dữ
liệu.
Đề tài nghiên cứu đã thể hiện một cách nhìn nhận khác về phụ thuộc hàm
mờ, có thể gợi mở những hướng tiếp cận mới về lớp phụ thuộc hàm này. Bên
cạnh đó việc tìm hiểu về các khái niệm liên quan đến việc mở rộng bao đóng tập
thuộc tính, mở rộng định lý tương đương có một ý nghĩa quan trọng trong việc
thiết kế và xây dựng CSDL sát với thực tế hơn. Việc nghiên cứu về dữ liệu mờ
này cũng cho phép xử lý và tìm kiếm thông tin trong CSDL mờ một cách hiệu
quả hơn.
4.2 Kết luận và kiến nghị
4.2.1 Kết luận
Có thể nói Cơ sở dữ liệu là một lĩnh vực nghiên cứu rất rộng lớn, trong
phạm vi luận văn này chưa và cũng không thể nêu hết toàn bộ các vấn đề về Cơ
sở dữ liệu mà chỉ đề cập đến một khía cạnh nào đó về lớp phụ thuộc dữ liệu là
lớp phụ thuộc hàm. Ngoài việc trình bày lại một số khái niệm, thuật toán cơ bản
luận văn đã đạt được một số kết quả mở rộng nhất định:
Tổng hợp lại khái niệm trong CSDL quan hệ truyền thống
Nghiên cứu về lớp Phụ thuộc hàm mờ:
o Đưa ra một số quan điểm về lớp phụ thuộc hàm mờ trong
CSDL quan hệ.
o Hệ tiên đề cho lớp Phụ thuộc hàm mờ
o Khái niệm và thuật toán tìm bao đóng trong ngữ cảnh mờ
o Khoá mờ (fuzzy key) và thuật toán tìm khoá
o Định lý tương đương trong lớp phụ thuộc hàm mờ
Tìm hiểu mở rộng khái niệm các dạng chuẩn thành dạng chuẩn mờ ( fuzzy
normal form) F1NF, F2NF, F3NF, FBCNF.
54
Tuy vẫn còn những hạn chế nhưng những kết quả đạt được cũng góp phần
quan trọng cho việc nghiên cứu về lớp phụ thuộc hàm mờ, xây dựng CSDL mờ
với các dữ liệu mô tả những mối quan hệ giữa các đối tượng trong thế giới thực
một cách cụ thể hơn, chính xác hơn, góp phần vào sự phát triển CSDL nói chung
và CSDL mờ nói riêng.
4.2.2 Hướng phát triển đề tài
Nghiên cứu về lớp phụ thuộc hàm mờ trong CSDL là một trong những
vấn đề khó và bao gồm rất nhiều các vấn đề nhỏ bên trong. Trong phạm vi luận
văn này cũng đã đạt được một số kết quả nhất định trong việc nghiên cứu về lớp
phụ thuộc hàm mờ trong CSDL quan hệ. Với mong muốn được nghiên cứu sâu
hơn về lĩnh vực CSDL nói chung cũng như tập trung vào lớp phụ thuộc hàm mờ,
khoá mờ hướng nghiên cứu tiếp theo của tác giả trong vấn đề này bao gồm:
Tìm kiếm các thuật toán tìm Phụ thuộc hàm mờ.
Tìm kiếm các thuật toán tốt hơn cho việc tìm khoá mờ.
Nghiên cứu về mối liên hệ giữa các dạng chuẩn mờ.
Khai phá dữ liệu mờ (fuzzy data mining).
55
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Ngô Thanh Thảo (2002) , Giáo trình Cơ sở dữ liệu, ĐH Cần Thơ, tr.
213.
2. Đỗ Trung Tuấn (2004), Cơ sở dữ liệu, NXB Đại học Quốc gia Hà nội,
tr. 713, 2425, 8187, 114123.
3. Lê Tiến Vương (1996), Nhập môn CSDL quan hệ, NXB Khoa học kỹ
thuật, tr. 915, 8090.
Tiếng Anh
4. Brian Hartlieb, Functional Dependencies in Fuzzy Databases, 21st
Computer Science Seminar, pp. 13.
5. J.C.Cubero & M.A.Vila (1994), A new definition of fuzzy functional
dependency in fuzzy realtional databases, International journal of
intelligent systems, pp. 441443.
6. Guoqing Chen, Etienne Kerre & Jacques Vandenbulcke (1994), A
computational algorithm for the FFD transitive closure and complete
axiomatization of fuzzy functional dependencies (FFD), International
journal of intelligent systems, pp. 422436.
7. Nedzad Dukic, Zikrija Avdagic (2004), Formalization of provenes
fuzzy functional dependency in fuzzy database, Mathware & Soft
computing 11, pp. 3234.
8. Nauman A.Chaudhry, James R.Moyne, Elke A.Rundensteiner (2004),
A design methodology for databases with uncertain data, The
university of Michigan, Dept. of electrical engineering & computer
science, pp. 14.
9. Õgũn Bahar, Adnal Yazci (2004), Normalization and lossless join
decomposition of similarity – Based fuzzy relational databases,
International journal of intelligent systems, pp. 894 906.
10.P. C. Saxena, and D. K. Tayal (2007), Fuzzy Join Dependency in
Fuzzy Relational Databases, International journal of information and
communication technology, pp. 3739
11.Qiang Wei & Guoqing Chen (2004), Efficient discovery of functional
dependencies with degrees of satisfaction, International journal of
intelligent systems, pp. 10911096.
12.Sadeq Al Hamouz and Ranjit Biswas (2006), Fuzzy Functional
dependencies in relational database, International journal of
computational cognition, pp. 3941.
56
13.Stephanne Lopes, JeanMarc Petit, Lotfi Lakhal (2000), Efficient
discovery of functional dependencies and Amstrong relations,
Speringer – Verlag Berlin Heidelberg, pp. 351353.
14. T.C.Ling, Mashakuri Hj.Yaacob, K.K.Phang (1997), Fuzzy database
frameworkrelation versus object – oriented model, IEEE, pp. 246
247.
15. Z.M.MA + , Li Yan (2008), A literature of fuzzy database models,
Journal of information science and engineering 24, pp.191193.
16. Y.Dhanalakshmi, Dr.I. Ramesh Babu (2008), Intrusion Detection
Using Data Mining Along Fuzzy Logic and Genetic Algorithms,
IJCSNS International Journal of Computer Science and Network
Security, VOL.8 No.2, pp. 2729.
Website
17.
18.
19.
57
PHỤ LỤC
Thuật toán tìm bao đóng tập thuộc tính X +
Input: Tập thuộc tính, tập các PTH ban đầu
Output: Bao đóng của thuộc tính mờ với mức thoả q nào đó1 (0 £ q £1)
Ngôn ngữ sử dụng: Pascal
{Chuong trinh mo phong thuat toan tim bao dong cua thuoc tinh mờ trong
CSDL quan he}
Program Tinh_bao_dong;
uses crt;
type contro= ^baodong;
baodong= record
thuoc_tinh: char;
muc_thoa:real;
next: contro; {tro sang phan tu tiep theo}
end;
mang= array[1..50] of char;
{*********Khai bao bien*******************************}
var
i: byte;
n,m:integer;
58
c,Y: char;
f: TEXT;
s: String;
muc_thoa,chi_so:array [1..50] of real;
vt,thuoc_tinh:array[1..50]of char;
vp: array[1..50]of string;
code: integer;
Blist, X, last: contro; {Blist la bao dong tam thoi}
MXD: mang; {Mien xac dinh cua tap thuoc tinh}
{**********Thu tuc doc du lieu tu File *******}
Procedure Doc_du_lieu;
Begin
Assign(f, 'Input.txt');
Reset(f);
readln(f);
readln(f,n);
readln(f,m);
for i:=4 to (3+n) do
begin
while not EOLN(f) do
begin
59
read(f,thuoc_tinh[i]);
read(f,c);
read(f,s);
val(s,chi_so[i],Code);
end;
readln(f);
end;
readln(f);
readln(f);
i:=14;
While not EOF(F) do
begin
While not EOLN(f) do
begin
read(f,vt[i]);
read(f,c); read(f,c);
read(f,c);
s:='';
while c' ' do
begin
s:=s+c;
read(f,c);
60
end;
vp[i]:=s;
read(f,c);
read(f,s);
val(s,muc_thoa[i], Code);
end;
readln(f);
i:=i+1;
end;
End;
{Ham kiem tra xem thuoc tinh Y da nam trong MXD hay chua?}
Function Kiemtra(Y:char;MXD: mang):Boolean;
var i:byte;
kt:Boolean;
Begin
kt:= false;
for i:=1 to 50 do
begin
if (Y=MXD[i]) then
begin
kt:=true;
end;
61
end;
Kiemtra:=kt;
End;
{***********Ham kiem tra xem phan tu co thuoc danh sach hay
khong*************}
function kiem_tra_thuoc(c: char; p: contro): boolean;
var q: contro;
kt: boolean;
begin
q:= p;
kt:= false;
if p= nil then kt:= false
else
begin
while q nil do begin
if (q^.thuoc_tinh = c) then
begin
kt:= true;
break;
end;
q:=q^.next;
end;
62
end;
kiem_tra_thuoc:= kt;
end;
{******************************************************}
function min(a,b: real): real;
begin
if a>b then min:= b
else min:= a;
end;
{******************************************************}
function max(a,b: real):real;
begin
if a>b then max:=a
else max:= b;
end;
{************Ham so sanh 2 bao dong tam thoi*********}
Function Sosanh(var X:contro; var Y:contro): Boolean;
var tg:contro;
kt: boolean;
Begin
tg:=X;
While tgnil do
63
begin
if not(kiem_tra_thuoc(tg^.thuoc_tinh, Y)) then
begin
sosanh:= true;
exit;
end;
tg:= tg^.next;
end;
tg:=Y;
While tgnil do
begin
if not(kiem_tra_thuoc(tg^.thuoc_tinh, X)) then
begin
sosanh:= true;
exit;
end;
tg:= tg^.next;
end;
sosanh:= false;
End;
{****Thu tuc them phan tu vao tap bao dong tam thoi***}
procedure Them(c: char; r: real;var p: contro);
64
var phan_tu_moi: contro;
begin
if p= nil then
begin
new(phan_tu_moi);
phan_tu_moi^.thuoc_tinh:= c;
phan_tu_moi^.muc_thoa:= r;
phan_tu_moi^.next:=nil;
p:= phan_tu_moi;
end
else
begin
new(phan_tu_moi);
phan_tu_moi^.thuoc_tinh:= c;
phan_tu_moi^.muc_thoa:= r;
phan_tu_moi^.next:=p;
p:= phan_tu_moi;
end;
end;
{***Ham tim vi tri cua mot thuoc tinh trong bao dong***}
Function vi_tri(c: char; p: contro): contro;
65
var q: contro;
begin
q:= p;
while q^.thuoc_tinh c do q:= q^.next;
vi_tri:= q;
end;
{*******Ham hop mo 2 bao dong tam thoi******}
Function hop(X,Blist: contro): contro;
var p,q,tg: contro;
Begin
tg:=nil;
p:= X;
while pnil do
begin
if not(kiem_tra_thuoc(p^.thuoc_tinh,tg)) then
Them(p^.thuoc_tinh,p^.muc_thoa, tg)
else
begin
q:= vi_tri(p^.thuoc_tinh,tg);
q^.muc_thoa:=max(q^.muc_thoa,p^.muc_thoa);
end;
66
p:= p^.next;
end;
p:= Blist;
while pnil do
begin
if not(kiem_tra_thuoc(p^.thuoc_tinh, tg)) then
Them(p^.thuoc_tinh,p^.muc_thoa, tg)
else
begin
q:= vi_tri(p^.thuoc_tinh,tg);
q^.muc_thoa:= max(q^.muc_thoa,p^.muc_thoa);
end;
p:= p^.next;
end;
hop:= tg;
End;
{******************************************************}
Procedure Inbaodong( X:contro);
var p: contro;
Begin
p:=X;
67
writeln;
writeln('Bao dong cua tap thuoc tinh ', p^.thuoc_tinh ,' la:');
While pNil do
begin
write('(',p^.thuoc_tinh,',',p^.muc_thoa:2:2,')');
write(' ');
p:=p^.next;
end;
End;
{**********Thu tuc tim bao dong cua thuoc tinh ********}
Procedure thuchien(B: char);
var i,j:byte;
p,q,tg:contro;
r: real;
Begin
{Khoi tri bao dong cua thuoc tinh B}
new(X);
X^.thuoc_tinh:=B;
X^.muc_thoa:=1;
X^.next:=nil;
{Khoi tri mien xac dinh}
68
for i:= 1 to 50 do
MXD[i]:='@';
{***************************************************}
MXD[2]:= B;
n:= 1;{n la so thuoc tinh trong MDX}
while (1>0) do
begin
for i:=14 to (13+m) do
begin
if Kiemtra(vt[i],MXD) then
begin
for j:= 1 to length(vp[i]) do
begin
if not(Kiemtra(vp[i][j],MXD)) then
begin
MXD[n+1]:=vp[i][j];
n:= n+1;
end;
end;
Them(vp[i][2],muc_thoa[i],Blist);
for j:= 2 to length(vp[i]) do
begin
69
if kiem_tra_thuoc(vp[i][j],Blist) then
begin
p:= vi_tri(vp[i][j],Blist);
P^.muc_thoa:= min(p^.muc_thoa,muc_thoa[i]);
end
else
Them(vp[i][j],muc_thoa[i], Blist);
end;
end;
end;
tg:= hop(X,Blist);
if sosanh(X,tg) then X:=tg
else exit;
end;
End;
BEGIN
clrscr;
Doc_du_lieu;
writeln('Tap thuoc tinh');
writeln('********************************************');
70
for i:= 4 to (3+n) do
begin
writeln(thuoc_tinh[i], ' ', chi_so[i]:2:2);
end;
writeln;
writeln('Tap cac PTH');
writeln('********************************************');
for i:= 14 to (13+m) do
begin
writeln(vt[i], '>',vp[i],' ', muc_thoa[i]:2:2);
end;
Repeat
clrscr;
write('Nhap thuoc tinh de tinh bao dong: '); readln(Y);
thuchien(Y);
Inbaodong(X);
writeln;
writeln('Ban co muon tiep tuc chuong trinh khong? (C/K)');
write('Cau tra loi la: '); readln(c);
until (c='k') or (c='K');
clrscr;
readln;
71
END.
Một số giao diện của việc cài đặt Thuật toán tìm bao đóng tập thuộc tính X +
Hình 4: Tập Input
Hình 5: Giao diện cài đặt thuật toán
72
Hình 6: Giao diện chạy thuật toán (Nhập tập thuộc tính cần tính bao đóng X + )
Hình 7: Kết quả bao đóng của tập thuộc tính {A,B,C}
Các file đính kèm theo tài liệu này:
- LUẬN VĂN-NGHIÊN CỨU MỘT SỐ VẤN ĐỀ VỀ PHỤ THUỘC DỮ LiỆU VÀ KHAI PHÁ DỮ LiỆU TRONG CƠ SỞ DỮ LiỆU QUAN HỆ.pdf