- Phát biểu và chứng minh công thức tính bao đóng qua phép dịch chuyển
lược đồ quan hệ,
- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ nhất,
- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ hai,
- Phân tích thuật toán tìm khóa,
- Nghiên cứu và phát triển thuật toán tìm tất cả các khoá của LĐQH để vận
dụng cho các quy trình thiết kế các CSDL chuẩn hoá.
65 trang |
Chia sẻ: lylyngoc | Lượt xem: 2666 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn -Ứng dụng phép dịch chuyển lược đồ quan hệ trong cơ sở dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
to G;
endif;
endif;
endfor;
return G;
end Natural_Reduced.
Nếu dùng kỹ thuật chỉ dẫn để tổ chức truy nhập trực tiếp tới các thuộc tính và
PTH thì thuật toán thu gọn tự nhiên Natural_Reduced đòi hỏi độ phức tạp tính toán
là O(mn) trong đó m là số lượng PTH trong tập F, n là số lượng thuộc tính trong U.
Để ý rằng mn là chiều dài dữ liệu vào của thuật toán, do đó O(mn) chính là độ phức
tạp tuyến tính theo chiều dài dữ liệu vào.
Ta dễ dàng chứng minh tính đúng của mệnh đề sau,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 23
Mệnh đ ề
Nếu F và G là hai tập PTH trên cùng một tập thuộc tính U thì F G khi và chỉ
khi X U: XF
+
= XG
+
Phủ không dư
Địn h n g h ĩ a
Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ không dư
của F nếu
(i) G là một phủ của F, và
(ii) G có dạng không dư theo nghĩa sau: gG: G \{g} ≢ G
Thuật toán tìm phủ không dư của tập PTH
Algorithm Nonredundant
Format: Nonredundant(F)
Input: - Tập PTH F
Output: - Một phủ không dư G của F
(i) G F
(ii) g G: G\{g} ≢ G
Method
G:=F;
for each FD g in F do
if IsMember(g,G\{g})then
G:=G\{g};
endif;
endfor;
return G;
end Nonredundant.
Phủ thu gọn
Phủ thu gọn trái
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 24
Địn h n g h ĩ a
Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn trái
của F nếu
(i) G là một phủ của F, và
(ii) (LRG,AL): G\{LR}{L\AR} ≢ G
Thuật toán tìm phủ thu gọn trái của tập PTH
Để ý rằng AL ta có L\A L, nên
g: LRG,AL): G\{g}{L\AR}╞ LR,
do đó ta chỉ cần kiểm tra G ╞ L\AR ?
Algorithm Left_Reduced
Format: Left_Reduced(F)
Input: - Tập PTH F
Output: - Một phủ thu gọn trái G của F
(i) G F
(ii) g:LR G,AL: G\{g}{L\AR}≢G
Method
G:= F;
for each FD g:L R in F do
X:=L;
for each attribute A in X do
if IsMember(L\AR,G)then
delete A from L in G;
endif;
endfor;
endfor;
return G;
end Left_Reduced.
Phủ thu gọn phải
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 25
Địn h n g h ĩ a
Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn phải
của F nếu
(i) G là một phủ của F, và
(ii) (LRG, AR): G\{LR}{LR\A} ≢ G
Thuật toán tìm phủ thu gọn phải của tập PTH
Để ý rằng, AR: R\A R, nên (g: LRG,AR): G╞ LR\A
do đó ta chỉ cần kiểm tra G\{LR}{LR\A}╞ LA.
Algorithm Right_Reduced
Format: Right_Reduced(F)
Input: - Tập PTH F
Output: - Một phủ thu gọn phải G của F
(i) G F
(ii)(g:LR G,AR): G\{g}{LR\A}≢G
Method
G:= F;
for each FD g:L R in F do
H:=G\{LR};
X:=R;
for each attribute A in X do
if A in Closure(L,H{LR\A})then
delete A from R in G;
endif;
endfor;
endfor;
return G;
end Right_Reduced.
Phủ thu gọn
Địn h n g h ĩ a
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 26
Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn của
F nếu G đồng thời là phủ thu gọn trái và thu gọn phải của F.
Thuật toán tìm phủ thu gọn của tập PTH
Algorithm Reduced
Format: Reduced(F)
Input: - Tập PTH F
Output: - Một phủ thu gọn của F
Method
return Right_Reduced(Left_Reduced(F));
end Reduced.
Phủ tối tiểu
Địn h n g h ĩ a
Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ tối tiểu của
F nếu
(i) G là một phủ thu gọn của F,
(ii) Vế phải của mọi PTH trong G chỉ chứa một thuộc tính.
Thuật toán tìm phủ tối tiểu của tập PTH
Algorithm MinCover
Format: MinCover(F)
Input: - Tập PTH F
Output: - Một phủ tối tiểu G của F
Method
// Tách mỗi PTH LR trong F thành các PTH có
// vế phải chỉ chứa một thuộc tính LA, A R
G:=;
for each FD LR in F do
for each attribute A in R\L do
if LA not_in G then
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 27
add LA to G;
endif;
endfor;
endfor;
G:=Nonredundant(Left_Reduced(G));
return G;
end MinCover.
1.2.6. Khóa của lược đồ quan hệ
Khóa của lược đồ quan hệ
Địn h n g h ĩ a
Cho LĐQH a = (U, F). Tập thuộc tính K U được gọi là khoá của LĐQH a
nếu
(i) K
+
= U
(ii) A K: (K \A)+ U
Hai điều kiện trên tương đương với
(i') KU
(ii') A K: K\A ↛ U
Nếu K thoả điều kiện (i) (hoặc (i')) thì K được gọi là một siêu khoá.
Thuộc tính A U được gọi là thuộc tính khoá (nguyên thuỷ hoặc cơ sở) nếu A
có trong một khoá nào đấy. A được gọi là thuộc tính không khoá (phi nguyên
thuỷ hoặc thứ cấp) nếu A không có trong bất kỳ khoá nào.
Cho LĐQH a = (U, F). Ta ký hiệu UK là tập các thuộc tính khóa của a và U0 là
tập các thuộc tính không khóa của a. Dễ thấy UK |Uo là một phân hoạch của U.
C h ú ý
Trong một số tàì liệu thuật ngữ khoá được dùng theo nghĩa siêu khoá và thuật
ngữ khoá tối tiểu được dùng theo nghĩa khoá.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 28
Thuật toán tìm một khóa của LĐQH
Tư tưởng: Xuất phát từ một siêu khóa K tùy ý của LĐQH, duyệt lần lượt các thuộc
tính A của K, nếu bất biến (K\A)+ = U được bảo toàn thì loại A khỏi K. Có thể thay
kiểm tra (K\A)+ = U bằng kiểm tra A (K\A)+.
Algorithm Key
Format: Key(U,F)
Input: - Tập thuộc tính U
- Tập PTH F
Output: - Khóa K U thỏa
(i) K+ = U
(ii)AK: (K\A)+ U
Method
K:= U;
for each attribute A in U do
if A in Closure(K\A,F) then
K:=K\A
endif;
endfor;
return K;
end Key.
Thuật toán duyệt n thuộc tính, với mỗi thuộc tính thực hiện phép lấy bao đóng với
độ phức tạp n2m. Tổng hợp lại, độ phức tạp tính toán của thuật toán là O(n3m).
Một số tính chất của khóa
Các tính chất đơn giản
Cho LĐQH (U,F). Khi đó
1. K U là một khoá khi và chỉ khi U phụ thuộc đầy đủ vào K.
2. Hai khoá khác nhau của một LĐQH không bao nhau.
3. Mọi LĐQH đều có ít nhất một khoá.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 29
Địn h l ý
( Đặc trưng của các thuộc tính khóa [7])
Cho K là một khóa của LĐQH a = (U,F). Khi đó với mọi tập con X của K ta
có: X
+ K=X.
Chứn g m i n h
Vì X X+ và X K nên X X+K. Ta cần chứng minh X+K X. Giả sử
AX+K và AX. Ta xét tập M = K\A. Dễ thấy X M. Ta có, theo tính chất đồng
biến của bao đóng, AX+ M+. Từ đây suy ra K M+, do đó, theo tính chất lũy
đẳng của bao đóng và tính chất khóa của K ta có, U = K+ M++ = M+, tức là M là
bộ phận thực sự của khóa K lại đồng thời là siêu khóa, trái với định nghĩa khóa. Vậy
A X ■
Địn h l ý
(Công thức tính giao các khóa)
Cho LĐQH a = (U,F) với n thuộc tính trong U và m PTH trong F. Gọi UI là
giao các khóa của a. Khi đó có thể xác định giao các khóa bằng một thuật
toán tuyến tính theo mn qua công thức
FRL
I LRUU
)\(\
Chứn g m i n h
Trước hết để ý rằng các PTH LR và L(R\L) là tương đương, do đó ta có
thể giả thiết rằng mọi PTH trong F đều có dạng LR, LR = , tức là giả thiết
rằng tập PTH F được cho dưới dạng thu gọn tự nhiên. Do giả thiết này ta có R\L=R.
Dễ nhận thấy, theo công thức tính UI trong định lý, UI là tập các thuộc tính không
có mặt trong vế phải của mọi PTH trong F, do đó chúng phải có mặt trong mọi
khóa. Giả sử A là một thuộc tính có trong vế phải của PTH LAR' nào đó của F.
Ta chứng minh A sẽ không xuất hiện trong một khóa K nào đấy của a. Thật vậy, xét
tập X = U\A. Dễ thấy X L và X+ = XAR' = U và do đó X là siêu khóa. Từ siêu
khóa X không chứa A ta lấy ra được một khóa K không chứa A ■
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 30
Thuật toán xác định giao các khóa trong LĐQH
Algorithm KeyIntersec
Format: KeyIntersec(U,F)
Input: - Tập thuộc tính U
- Tập PTH F
Output: - Giao các khóa
FRL
LRUM
)\(\
Method
M:=U;
for each FD LR in F do
M:= M\(R\L);
endfor;
return M;
end KeyIntersec.
Theo thuật toán trên, để tính giao các khóa ta cần thực hiện m lần lặp ứng với
số lượng PTH trong tập F. Trong mỗi lần lặp, phép toán trên tập hợp n phần tử có
độ phức tạp O(n) do đó độ phức tạp của thuật toán tính giao các khóa, KeyIntersec
là O(mn). Tích mn chính là chiều dài của biểu diễn LĐQH a = (U,F) tức là chiều dài
của dữ liệu vào trong thuật toán.
Địn h l ý
(Định lý về khóa duy nhất, Hồ Thuần, Lê Văn Bào)
Cho LĐQH a = (U,F). Gọi UI là giao của các khóa trong a. Khi đó a có một
khóa duy nhất khi và chỉ khi UI
+
= U.
Chứn g m i n h
Nếu UI
+
= U thì UI là siêu khóa. Vì UI là giao của các khóa đồng thời lại là
siêu khóa nên a không thể còn khóa nào khác ngoài UI. Ngược lại, nếu a chỉ có một
khóa duy nhất K thì giao của các khóa đương nhiên là UI = K, và do đó, theo tính
chất của khóa UI
+
= K
+
=
U ■
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 31
Th í d ụ
Cho LĐQH a = (U, F), U = ABCDE, F = {ABC, ADB, BD}.
Ta có, giao của các khóa là UI = ABCDE\BCD = AE. UI
+
= (AE)
+
= AE U
nên a có hơn một khóa. Vì UI là giao các khóa nên ta có thể bổ sung cho UI một số
thuộc tính để thu được các khóa. Dễ xác định được a có hai khóa là K1 = ABE và
K2= ADE. Ta còn có, tập các thuộc tính khóa là UK = ABDE, tập các thuộc tính
không khóa là Uo = C.
1.2.7. Chuẩn hóa LĐQH trên cơ sở PTH
Phép tách
Địn h n g h ĩ a
Cho lược đồ quan hệ a = (U,F). Một phép tách lược đồ a là một họ các tập
con của U, = (X1, X2,...,Xk) thỏa tính chất
UX i
k
i
1
Phép tách = (X1, X2,...,Xk) trên lược đồ a được gọi là không tổn thất (hoặc
không mất thông tin) đối với tập PTH F nếu
R(U) SAT(F): R[X1] R[X2] ... R[Xk] = R
Ngược lại, nếu không tồn tại đẳng thức thì ta gọi là phép tách tổn thất.
Kiểm tra tính tổn thất của phép tách bằng kỹ thuật bảng
Algorithm Lossless_Join_Testing
Input
- LĐQH p = (U,F)
- Phép tách = (X1, X2,...,Xk)
Output
True, nếu là một phép tách không tổn thất
False, ngoài ra.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 32
Method
1. Khởi trị: Lập bảng T với các cột là các thuộc tính trong U và k dòng, mỗi dòng
ứng với một thành phần của Xi trong : Dòng i chứa các ký hiệu phân biệt
(KHPB) aj ứng với các thuộc tính Aj trong Xi và các ký hiệu không phân biệt
(KHKPB) bij ứng với các thuộc tính Aj trong U-Xi . Chú ý rằng mọi KHPB trong
cột j của T là giống nhau và bằng aj còn mọi KHKPB trong bảng T lúc đầu là khác
nhau.
2. Sửa bảng: Lặp đến khi bảng T không còn thay đổi:
Vận dụng các F-luật để biến đổi bảng như sau:
Với mỗi PTH L R trong F, nếu trong bảng T có chứa hai dòng u và v giống
nhau trên L thì sửa các ký hiệu của chúng cho giống nhau trên mọi cột A R
trong bảng T như sau:
a. nếu u.A = v.A: không sửa,
b. nếu một trong hai ký hiệu u.A hoặc v.A là KHPB thì sửa mọi xuất hiện
trong bảng của KHKPB thành KHPB đó,
c. nếu cả hai ký hiệu u.A và v.A đều là KHKPB thì sửa mọi xuất hiện trong
bảng của ký hiệu có chỉ số thứ nhất lớn hơn thành ký hiệu thứ hai.
3. Kết luận: Gọi bảng kết quả là T*.
Nếu T* chứa một dòng toàn KHPB thì return True nếu không return
False.
end Lossless_Join_Testing.
Th í d ụ
a) Dùng kỹ thuật bảng để kiểm tra tính kết nối không tổn thất của phép tách trong
LĐQH p = (U,F), U = ABCD, F = { A B, AC D }, = (AB, ACD).
T T*
1. A 2. B 3. C 4. D
1. AB
a1 a2 b13 b14
2. ACD
a1 b22 / a2 a3 a4
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 33
Vì T* chứa dòng thứ hai gồm toàn ký hiệu phân biệt nên phép tách đã cho là không
tổn thất.
b) Dùng kỹ thuật bảng để kiểm tra tính kết nối không tổn thất của phép tách trong
LĐQH p = (U,F), U = ABCDE,
F = { A C, B C, C D, DE C, CE A }, = (AD, AB, BE, CDE).
T T*
1. A 2. B 3. C 4. D 5. E
1. AD a1 b12 b13 / a3 a4 b15
2. AB a1 a2 b23 / b13 / a3 b24 / a4 b25
3. BE b31 a2 b33 / b13 / a3 b34 / a4 a5
4. CDE b41 / b31 b42 a3 a4 a5
Vì T* không chứa dòng nào gồm toàn ký hiệu phân biệt nên phép tách đã cho là tổn
thất.
Tính chất của phép tách
Mệnh đ ề
Cho LĐQH a = (U, F). Nếu X Y thì phép tách (XY, U\(Y\X)) là không tổn thất.
Các dạng chuẩn
Địn h n g h ĩ a
LĐQH p = (U,F) được gọi là lược đồ
a) dạng chuẩn 1 (1NF) nếu mọi thuộc tính trong U đều không phải là thuộc
tính phức hợp,
b) dạng chuẩn 2 (2NF) nếu p là LĐ 1NF và mọi thuộc tính không khoá đều
phụ thuộc đầy đủ vào mọi khoá,
A Uo , K Key(p) : K
+ A
c) dạng chuẩn 3 (3NF) nếu p là LĐ 1NF và mọi thuộc tính không khoá đều
phụ thuộc trực tiếp vào mọi khoá,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 34
A Uo , K Key(p) : K * A
d) dạng chuẩn 3 (3NF) nếu p là LĐ 1NF và mọi PTH không tầm thường
XA, A là thuộc tính không khóa đều cho ta X là một siêu khoá,
(X A, A Uo – X ) X
+
= U
e) dạng chuẩn Boyce-Codd (BCNF) nếu p là LĐ 1NF và mọi thuộc tính đều
phụ thuộc trực tiếp vào mọi khoá,
A U , K Key(p) : K * A
f) dạng chuẩn Boyce-Codd (BCNF) nếu p là LĐ 1NF và mọi PTH không tầm
thường XY đều cho ta X là một siêu khóa.
(X Y, Y – X ) X + = U
Sơ đồ tương quan giữa các dạng chuẩn
BCNF 3NF 2NF
Thuật toán chuẩn hoá 3NF không tổn thất và bảo toàn PTH
Algorithm 3NF
Function: Chuẩn hóa 3NF không tổn thất và bảo toàn PTH.
Input: LĐQH p = (U,F)
Output: Các LĐQH 3NF (U1,K1),(U2,K2),...,(Us ,Ks) thoả
RREL(U): R[U1]R[U2]...R[Us] = R
K1, K2,..., Ks - khoá của các lược đồ tương ứng
F i=1..s(F+[Ui])
Method
1. Tìm một phủ tối tiểu của F:
G = {K1 A1,K2 A2,..., Km Am}
2. Ghép các PTH có cùng vế trái trong G để thu được
phủ G = {K1 X1, K2 X2,..., Ks Xs}.
3. // Xét phép tách = (K1X1,...,KsXs). Nếu
// chứa một siêu khóa nào đó
// của p thì return {(K1X1,K1),...,( KsXs,Ks)}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 35
// nếu không return {(K1X1,K1),...,(KsXs,Ks),
// (K,K)} với K là một khóa của p.
construct = (K1X1,K2X2,...,KsXs);
for each component V = KiXi in do
if V+ = U then // V = KiXi là siêu khóa
return {(K1X1,K1),...,(KsXs,Ks)};
endif;
endfor;
K = Key(U,F);
return {(K1X1,K1),...,(KsXs,Ks),(K,K)};
End 3NF.
Th í d ụ
Xác định và giải thích dạng chuẩn cao nhất của LĐQH sau:
a = (U, F), U = ABCD, F = { A C, D B, C ABD }
LĐQH a có 2 khoá là A và C vì A+ = C+ = ABCD = U. Tập thuộc tính khoá là
Uk = AC, tập thuộc tính không khoá là Uo = BD. Ta có, DB, B là thuộc tính không
khóa và D không phải là một siêu khóa do đó a không ở 3NF và đương nhiên không
ở BCNF. Vì hai khoá A và C đều chỉ có một thuộc tính nên các thuộc tính không
khoá khác là B và D đều phụ thuộc đầy đủ vào hai khoá này. Vậy a ở 2NF.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 36
CHƯƠNG 2
PHÉP DỊCH CHUYỂN LƯỢC ĐỒ QUAN HỆ
Quản lý các cơ sở dữ liệu lớn và phức tạp đòi hỏi nhiều thuật toán hữu hiệu
để tính toán các đối tượng như bao đóng, khóa, phủ... Một số thuật toán tốt theo
nghĩa độ phức tạp tính toán giới hạn ở các hàm tuyến tính hoặc đa thức theo chiều
dài dữ liệu vào đã được công bố như thuật toán tính bao đóng của tập thuộc tính,
thuật toán tìm một khóa, thuật toán xác định thành viên hay thuật toán xác định phụ
thuộc hàm suy dẫn, thuật toán tìm giao các khóa, thuật toán xác định một lược đồ
quan hệ có một khóa duy nhất.... [1, 2, 8].
Một nhận xét tự nhiên là nếu kích thước của LĐQH càng nhỏ thì các thuật
toán càng phát huy hiệu quả hơn. Một số hướng nghiên cứu tinh giản các lược đồ cơ
sở dữ liệu được thực hiện thông qua các phép biến đổi tương đương, chẳng hạn đưa
tập PTH về dạng thu gọn hoặc thu gọn tự nhiên, dạng không dư, dạng tối ưu (chứa
ít ký hiệu nhất)... đã được công bố [3, 5, 6, 7].
Trong phép dịch chuyển lược đồ quan hệ [7]. Bản chất của kỹ thuật này là
loại bỏ khỏi LĐQH ban đầu một số thuộc tính không quan trọng theo nghĩa chúng
không làm ảnh hưởng đến kết quả tính toán các đối tượng đang quan tâm như bao
đóng, khóa, phản khóa... Mặc dù LĐQH thu được qua phép dịch chuyển không
tương đương với LĐQH ban đầu, nhưng ta có thể thu được các đối tượng cần tìm
bằng những phép toán đơn giản như loại bỏ hoặc thêm một số thuộc tính. Điều lý
thú là sau khi loại bỏ một số thuộc tính thì một số PTH sẽ được loại bỏ theo, vì
chúng trở thành các PTH tầm thường (có vế trái chứa về phải) hoặc mang thông tin
tiền định (đó là các phụ thuộc hàm dạng X).
Th í d ụ
Cho LĐQH a = (U,F) với tập thuộc tính U = ABCDEH và tập PTH F = {AE D,
BC E, E BC}. Để tìm tập khóa Key(a) của lược đồ a chúng ta xây dựng một
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 37
lược đồ b bằng cách xóa khỏi lược đồ a các thuộc tính A, D và H. Ta thu được lược
đồ b = (V,G) trong đó V= U\ADH = BCE, G = {E Ø, BC E, E BC}. Tiếp
đến ta loại PTH tầm thường E Ø khỏi G. Ta thu được G = {BC E, E BC}.
Ta dễ dàng tìm được hai khóa của lược đồ b, Key(b) = {BC, E}. Để thu được
Key(a) ta chỉ việc thêm tập thuộc tính AH (không thêm D) vào mỗi khóa của lược
đồ b. Vậy Key(a) = {AHBC, AHE}. Dù F đã là tập PTH tối ưu [7] nhưng G còn
chứa ít ký hiệu hơn F.
2.1. Phép dịch chuyển LĐQH
Địn h n g h ĩ a
Cho hai LĐQH a = (U,F), b = (V,G) và tập thuộc tính M U. Ta nói LĐQH b
nhận được từ LĐQH a qua phép dịch chuyển theo tập thuộc tính M, nếu sau
khi loại bỏ mọi xuất hiện của các thuộc tính của M trong lược đồ a thì thu
được lược đồ b.
Nếu sau khi thực hiện phép dịch chuyển theo M cho LĐQH a ta thu được
LĐQH b thì ta viết
b = a\M
Thao tác loại bỏ M được thực hiện trên lược đồ a = (U,F) để thu được lược đồ
b=(V,G) như sau:
1. Tính V = U\M có độ phức tạp O(n) với n là số lượng thuộc tính trong
U.
2. Với mỗi PTH X Y trong F ta tạo một PTH X\M Y\M cho G. Thủ
tục này được ký hiệu là G = F\M. Tính F\M đòi hỏi độ phức tạp O(mn)
với m là số lượng PTH trong F.
Như vậy b = a\M = (U\M,F\M) được thực hiện với độ phức tạp O(mn), tức là tuyến
tính theo chiều dài dữ liệu vào (LĐQH a).
Sau khi thực hiện thủ tục G = F\M nếu
G chứa các PTH tầm thường (dạng X Y, X Y) thì ta loại các PTH này
khỏi G,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 38
G chứa các PTH trùng lặp thì ta lược bớt các PTH này.
Th í d ụ
Cho LĐQH a = (U,F), U = ABCDEH, F = {AE D, A DH, BC E,
E BC}. Với M = ADH, hãy xác định b = (V,G) = a\M.
Ta có V= U\ADH = ABCDEH\ADH=BCE,
G = {E Ø (loại), (loại), BC E, E BC} ≡ {BC E, E BC}.
Ta cũng dễ nhận thấy phép dịch chuyển thỏa tính hợp thành, cụ thể là nếu a là
LĐQH trên tập thuộc tính U và X, Y là hai tập con của U thì
a\(XY) = (a\X)\Y
Trong trường hợp X và Y là hai tập con rời nhau của U ta có
a\XY = (a\X)\Y = (a\Y)\X
2.2. Thuật toán dịch chuyển LĐQH
Thuật toán Translation dưới đây mô tả phép dịch chuyển một LĐQH với độ phức
tạp O(mn).
Algorithm Translation
Format: Translation(a,M)
Input:
- LĐQH a = (U,F)
- Tập thuộc tính M U
Output:
- LĐQH b = (V,G) = a\M, V = U\M, G = F\M.
Method
V := U\M;
G := ;
for each FD L R in F do
G := G {L\M R\M};
endfor;
G := Natural_Reduced(G);
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 39
return (V,G);
end Translation.
Thủ tục Natural_Reduced(G) đưa tập PTH G về dạng thu gọn tự nhiên bằng cách
loại khỏi G những PTH tầm thường (có vế trái chứa vế phải), chuyển đổi mỗi PTH
về dạng PTH có hai vế trái và phải rời nhau và gộp các PTH có cùng vế trái.
Định lý sau đây thiết lập công thức biểu diễn bao đóng của tập thuộc tính theo phép
dịch chuyển LĐQH.
2.3. Định lý cơ bản của phép dịch chuyển LĐQH
Địn h l ý
(Công thức biểu diễn bao đóng theo phép dịch chuyển LĐQH [7])
Cho LĐQH a = (U,F) và hai tập con không giao nhau X và Y trong U. Khi đó
(XY)
+
F = XY
+
F\X
Chứn g m i n h
Đặt V = U\X và G = F\X và để ý rằng do X Y = Ø và X không xuất hiện trong V
và G nên theo định nghĩa bao đóng của tập thuộc tính ta có X Y+G = Ø.
Ta chứng minh bằng quy nạp theo số bước xây dựng các dãy (XY)(h) và Y(h),
h = 0,1,… theo thuật toán tính bao đóng của các tập thuộc tính XY và Y tương ứng
với các tập PTH F và G. Cụ thể là ta chứng minh bất biến
(XY)
(h)
= XY
(h)
, h = 0,1,…
Cơ sở: h = 0. Ta có (XY)(0) = XY và Y(0) = Y, do đó (XY)(0) = XY(0) = XY.
Quy nạp: Giả sử với h ≥ 0 ta có (XY)(h) = XY(h). Ta cần chứng minh
(XY)
(h+1)
= XY
(h+1)
.
Ta sẽ chỉ ra rằng khi chuyển từ bước h sang bước h+1 hai tập (XY)(h) và XY(h) sẽ
được bổ sung thêm cùng một số thuộc tính. Trước hết để ý rằng do X Y = và X
không có mặt trong LĐQH b = a \ X = (V, G) nên với mọi h = 0,1,2,... ta luôn có
X Y(h) = . Ngoài ra, do dãy (XY)(h) đơn điệu không giảm và (XY)(0) = XY X nên
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 40
với mọi h = 0,1,2,... ta luôn có (XY)(h) X. Từ các nhận xét này và từ giả thiết quy
nạp (XY)(h) = XY(h) ta suy ra
L U: L (XY)(h) = XY(h) L\X Y(h) và
Z U\X: Z Y(h) XZ XY(h) = (XY)(h)
Giả sử PTH L R F thỏa tính chất L (XY)(h). Khi đó L\X R\X G và
L\X Y(h). Từ (XY)(h) = XY(h) ta suy ra R(XY)(h) = RXY(h) = (R\X) XY(h).
Ngược lại, giả sử Z P G và Z Y(h). Theo định nghĩa của phép dịch chuyển
theo X, trong F, tồn tại một PTH L R để Z = L\X và P = R\X. Khi đó ta có
L XZ XY(h) = (XY)(h) và do đó R(XY)(h) = RXY(h) = (R\X)XY(h) = PXY(h) ■
Để ý rằng với mọi tập X, ta có X = X và X = . Từ nhận xét này ta suy ra hệ
quả sau,
Hệ q ủ a
(Công thức tính bao đóng cho một tập thuộc tính)
Cho LĐQH a = (U,F) và tập X U. Khi đó X+F = X()
+
F\X.
Th í d ụ
Cho LĐQH a = (U,F), U = ABCDEH, F = {AE D, BC E, E BC}.
Tính
1. (AHE)
+
và
2. E
+
?
Ta có, theo hệ quả về công thức tính bao đóng cho một tập thuộc tính
1. (AHE)
+
F = AHE()
+
F\AHE
G = F\AHE = { D, BC (loại), BC} ≡ { BCD}.
Từ đây ta tính được ()+G =BCD. Do đó (AHE)
+
= AHEBCD = U.
2. E
+
= E()+F\E.
G = F\E = {A D, BC (loại), BC} ≡ {A D, BC}.
Từ đây ta tính được ()+G =BC. Do đó E
+
= EBC.
Cho LĐQH a = (U,F), ta nhắc lại các ký hiệu sau
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 41
Uo là tập các thuộc tính không khóa, hay phi nguyên thủy, tức là thuộc
tính không xuất hiện trong bất kỳ khóa nào của a,
UK là tập các thuộc tính khóa, hay nguyên thủy, tức là thuộc tính có
trong một khóa nào đó của a (hợp của các khóa),
UI là tập các thuộc tính có trong mọi khóa, tức là giao của các khóa
của a.
Rõ ràng, UI UK.
Ta cũng đã biết phân hoạch U = Uo | UK và
K Key(a), X Uo (K UK ) (K X = K Uo = )
Ngoài ra,
X, Y U: X Y = X \ Y = X
Để ý rằng nếu M là siêu khóa của LĐQH a = (U,F) thì Z Uo ta có M\Z
cũng là siêu khóa của a. Nói cách khác từ một siêu khóa bất kỳ bỏ đi một số thuộc
tính không khóa ta vẫn thu được siêu khóa.
Bổ đ ề
(Bổ đề về siêu khóa trong phép dịch chuyển LĐQH)
Cho hai LĐQH a = (U,F), b = (V,G) và X U. Biết b = a\X. Khi đó
(i) Nếu M là siêu khóa của a thì M\X là siêu khóa của b.
(ii) Nếu Z là siêu khóa của b thì XZ là siêu khóa của a. Nói riêng, nếu X Uo
và Z là siêu khóa của b thì Z là siêu khóa của a.
Chứn g m i n h
(i) Giả sử M là siêu khóa của a. Đặt P = M\X, ta có X P = và M XP. Vì M là
siêu khóa của a, vận dụng tính đồng biến của bao đóng và công thức biểu diễn bao
đóng ta có, U = XV = M+F (XP)
+
F = XP
+
F\X . Từ các đẳng thức XV = XP
+
F\X,
X V = và X P
+
F\X = ta suy ra P
+
F\X = V. Vậy P = M\X là siêu khóa của b.
(ii) Đảo lại, giả sử Z là siêu khóa của b = a\X. Khi đó Z X = và Z+G = V. Đặt
M = XZ, ta có M
+
F = (XZ)
+
F = XZ
+
F\X = XZ
+
G = XV = U. Vậy XZ là siêu khóa của
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 42
a. Nếu X Uo thì ta có thể loại bỏ khỏi XZ bộ phận thuộc tính không khóa X để thu
được Z là siêu khóa của a ■
Hệ q ủ a
(Hệ quả về siêu khóa trong phép dịch chuyển LĐQH)
Cho LĐQH a = (U,F) và tập thuộc tính X U. Khi đó nếu Z là siêu khóa của
lược đồ a\X + thì XZ là siêu khóa của lược đồ a.
Chứn g m i n h
Đặt b = a \ X+. Theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, nếu Z là
siêu khóa của b thì X+Z là siêu khóa của a, ta có (X+Z)+ = U. Theo tính chất C5 của
bao đóng của tập thuộc tính, (X+Z)+ = (XZ)+ = U. Từ đây suy ra XZ là siêu khóa của
a ■
C h ú ý
Để ý rằng hệ quả trên không hoàn toàn tương tự như bổ đề về siêu khóa trong phép
dịch chuyển LĐQH. Điểm khác nhau chính là lượng dịch chuyển trong bổ đề về
siêu khóa là X, trong hệ quả này là bao đóng của X, X + X.
(Bổ đề về khóa trong phép dịch chuyển LĐQH)
Cho hai LĐQH a = (U,F), b = (V,G) và tập thuộc tính X Uo. Biết b = a\X.
Khi đó
Key(a) = Key(b)
Chứn g m i n h
Giả sử K Key(a). Khi đó nói riêng K là siêu khóa của a. Do K UK, X Uo,
UK Uo = nên theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, K = K\X
là siêu khóa của b. Giả sử K chứa một siêu khóa M của b. Khi đó lại theo bổ đề về
siêu khóa trong phép dịch chuyển LĐQH ta có M là siêu khóa của a. Do K là khóa
của a, M là siêu khóa của a chứa trong K, nên theo tính chất tối tiểu của khóa ta
phải có M = K. Vậy K là khóa của b.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 43
Đảo lại, Nếu K là khóa của b thì K X = và theo bổ đề về siêu khóa trong phép
dịch chuyển LĐQH ta có K là siêu khóa của a. Gỉa sử K chứa một siêu khóa M của
a. Khi đó ta có M K và do đó M X = . Theo bổ đề về siêu khóa trong phép
dịch chuyển LĐQH ta có M = M\X là siêu khóa của b. Do K là khóa của b và K
chứa M nên M = K. Vậy K là khóa của a ■
Cho , SubSet(U) và M, P SubSet(U). Ta định nghĩa phép toán trên
SubSet(U) như sau
M P = MP (hợp của hai tập con M và P, M P)
M = {MX | X } và
= { XY | X , Y }
2.4. Dạng biểu diễn thứ nhất của khóa
Địn h l ý
(Dạng biểu diễn thứ nhất của khóa)
Nếu dịch chuyển LĐQH a = (U,F) theo tập X U để nhận được LĐQH b=a\X
thì
1. Key(a) = Key(b) khi và chỉ khi X Uo
2. Key(a) = X Key(b) khi và chỉ khi X UI
Chứn g m i n h
(1) Giả sử Key(a) = Key(b) và A X và A Uo. Theo phân hoạch của các thuộc
tính trong U, A UK. Như vậy phải tồn tại một khóa K trong Key(a) để A K. Do
Key(a) = Key(b) nên K Key(b). Từ đây suy ra K U\X hay là K X = . Điều
này mâu thuẫn với A K và A X. Vậy ta phải có X Uo.
(1) Suy từ bổ đề về khóa trong phép dịch chuyển LĐQH.
(2 ) Đẳng thức Key(a) = X Key(b) cho biết X có mặt trong mọi khóa của a, tức
là X UI .
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 44
(2 ) Giả sử X UI. Ta sẽ chứng minh rằng mọi khóa K Key(a) đều được biểu
diễn dưới dạng XM, trong đó M Key(b) và ngược lại, nếu M Key(b) thì
XM Key(a).
Cho K Key(a). Khi đó, vì X UI nên X phải có trong mọi khóa của a, nói riêng
X K. Đặt M = K\X, ta có M X = và K = XM. Theo bổ đề về siêu khóa trong
phép dịch chuyển LĐQH ta suy ra M = K \ X là siêu khóa của b. Giả sử M chứa
một siêu khóa P của b. Khi đó XP lại là siêu khóa của a và XP K. Vì K là khóa
của a nên XP = K = XM. Để ý rằng X P = X M = , ta suy ra P = M. Vậy M
là khóa của b.
Cho M Key(b). Ta có X M = . Theo bổ đề về siêu khóa trong phép dịch
chuyển LĐQH thì XM là siêu khóa của a. Gọi K là khóa của a chứa trong siêu
khóa XM. Lại theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, K\X là siêu
khóa của b. Vì K là khóa của a và X UI nên X K. Từ đây suy ra K\X M. Áp
dụng tính tối tiểu cho khóa M của b ta suy ra K\X = M. hay K = XM. Điều này
chứng tỏ XM là khóa của a ■
Th í d ụ
1. Cho LĐQH a = (U,F) với tập thuộc tính U = ABCDEH và tập PTH
F = {AE D, BC E}. Ta tính được giao các khóa là UI = ABCDEH \ DE =
ABCH. Đặt b = (V,G) với V = U\ABCH = DE, G = F\ABCH = {ED, E}. Ta
có b = a\ABCH và tính được Key(b) = {}, Vậy Key(a) = ABCH Key(b) =
{ABCH}.
2. Với lược đồ đã cho ta tính được UK = ABCH nên Uo = U\UK = BCDEH\ABCH =
DE. Đặt c = a\DE = (P,W) ta có P = U\DE = ABCH, W = F\DE = {A (loại),
BC (loại)} ≡ và do đó Key(c) = ABCH. Theo định lý về dạng biểu diễn thứ
nhất của khóa, vì Uo = DE nên Key(a) = Key(c) = ABCH.
Hệ q ủ a
(Dịch chuyển LĐQH theo các bộ phận không khóa và giao các khóa)
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 45
Cho LĐQH a = (U,F) và các tập thuộc tính X Uo , Y UI . Nếu thực hiện
phép dịch chuyển theo XY để nhận được LĐQH b = a\XY thì
Key(a) = Y Key(b).
Chứn g m i n h
Do X Uo, Y UI nên X Y = . Đặt c = a\X, ta có, b = a\XY = (a\X)\Y = c\Y.
Áp dụng dạng biểu diễn thứ nhất của khóa ta thu được:
Vì X Uo nên Key(a) = Key(c) và do đó giao các khóa của c vẫn là UI. Vì Y UI
xét trong c nên Key(c) = Y Key(b). Vậy Key(a) = Y Key(b) ■
2.5. Dạng biểu diễn thứ hai của khóa
Địn h l ý
(Dạng biểu diễn thứ hai của khóa)
Cho LĐQH a = (U,F). Khi đó mọi khóa K của a đề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à khóa của LĐQH a\L+.
Chứn g m i n h
Giả sử K Key(a). Nếu K=U thì đương nhiên K chứa mọi vế trái của các PTH
trong F, khi đó ta chọn một vế trái cực tiểu tùy ý. Giả sử K U. Khi đó, để tính bao
đóng K+ ta phải tìm được một PTH f: X Y F thỏa 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
trong số vế trái cực tiểu này. Tóm lại ta đã chứng minh được rằng mọi khóa 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à
khóa của LĐQH a\L+. Nếu L+ = U thì a\L+ = a\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 khóa
L
+
K = L hay K\L=K\L+=M. Từ đây suy ra M U\L+. Theo bổ đề về siêu khóa
trong phép dịch chuyển LĐQH, M sẽ là siêu khóa của lược đồ a\L+. Giả sử M chứa
siêu khóa P của lược đồ a\L+. Khi đó theo bổ đề về siêu khóa trong phép dịch
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 46
chuyển LĐQH, L+P sẽ là siêu khóa của a, do đó (L+P)+ = U. Vận dụng tính chất C5
của bao đóng ta có (L+P)+ = (LP)
+
= U, do đó LP là siêu khóa của a. Vì
P M K = LM nên LP K. Vì K là khóa của a 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à khóa của
a\L
+
■
Th í d ụ
Với LĐQH a = (U,F), U = ABCDEH, F = {AE D, A C, E BC,
EHA, AC EH, BD C}. Ta có ML(F) = {A, E,BD}. Ta thấy,
E
+
= EBC U. Vậy E không phải là khóa của a. Ta dịch chuyển a theo E+.
Đặt b = a\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ễ thấy H là một khóa của b. Như vậy EH là khóa của a,
trong đó E là một vế trái cực tiểu, H là khóa của a\E+.
C h ú ý
Xét mệnh đề đảo của mệnh đề về dạng biểu diễn thứ hai của khóa, cụ thể là
Với mọi vế trái cực tiểu L của LĐQH a, ta có L Key(a\L+) Key(a)
Mệnh đề trên là không đúng.
Th í d ụ
1. Theo thí dụ trước ta đã tính được LĐQH b = a\E+ = (V,G), V = ADH,
G = {A DH, H A}. Ngoài khóa H, lược đồ b còn khóa A, tuy nhiên EA không
phải là khóa của a vì riêng A đã là khóa của a.
2. Thí dụ sau đây minh họa 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ỳ khóa nào.
Xét LĐQH a = (U,F), 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,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 47
(AE)
+
= ADE ≠ U nên AE không thể là khóa. Ta chứng tỏ rằng vế trái cực tiểu AE
không có trong bất kỳ khóa nào. Thật vậy, vì (AE)+ = ADE nên để xây dựng một
khóa chứa AE ta cần thêm cho AE một vài thuộc tính khác với A, D và E, cụ thể là B
hoặc/và C. Nếu thêm cho AE thuộc tính B thì ABE chứa khóa BE; nếu thêm cho AE
thuộc tính C thì ACE chứa khóa CE. Vậy vế trái cực tiểu AE không thể là bộ phận
của bất kỳ khóa nào của a.
Bổ đề sau đây cho ta một dấu hiệu tạo và chọn các khóa từ tập khóa của lược
đồ sau dịch chuyển.
Bổ đ ề
(Các khóa sinh từ khóa của lược đồ sau dịch chuyển)
Cho LĐQH a = (U,F) và vế trái cực tiểu L. Khi đó nếu K L Key(a\L+) và
K không chứa vế trái cực tiểu nào khác ngoài L thì K là khóa của a.
Chứn g m i n h
Giả sử ta có phân hoạch K =L M, M Key(a\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 khóa trong phép dịch chuyển LĐQH thì
K là siêu khóa của a. Gọi P là khóa của a 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 khóa P nên theo định lý về đặc trưng của khóa ta có
L
+
P = L hay P\L+ = P\L = Q. Theo bổ đề về siêu khóa trong phép dịch chuyển
LĐQH, Q sẽ là siêu khóa của a\L+. Vì M cũng là khóa của a\L+ và Q M nên
Q = M và do đó P = LQ = LM = K. Vậy K là khóa của a ■
Th í d ụ
Xét LĐQH a = (U,F), 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,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 48
E
+
= EBC U. Vậy E không phải là khóa của a.
Ta thực hiện phép dịch chuyển lược đồ a theo E+. Ta có b = a\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(b) =
= {A, H}, do đó E Key(b)={EA, EH}. Thành phần EH không chứa thêm vế trái
cực tiểu nào khác E, do đó EH là khóa của a.
C h ú ý
Tồn tại LĐQH có khóa chứa một vài vế trái cực tiểu.
Th í d ụ
Xét LĐQH a = (U,F) với U = ABCD, F = {A B, C D}. Ta có khóa
K=AC chứa đồng thời hai vế trái cực tiểu A và C.
Bổ đ ề
Cho LĐQH a = (U,F) và vế trái cực tiểu L. Khi đó M Key(a\L+), mọi khóa
K của a chứa trong LM đều phải chứa M.
Chứn g m i n h
Ta đã biết LM là siêu khóa. Giả sử K là khóa của a và K LM. Ta xét phân họach
K = P|Q, trong đó P = K L, Q = K M. Vì L M = L+ M = nên P Q =
. Theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH ta có K\L+=K\L= PQ\L
= Q là siêu khóa của a\L+. Siêu khóa này chứa trong khóa M của a\L+ do đó, theo
tính chất tối tiểu của khóa ta phải có Q = M, hay là K M ■
Bổ đề trên cho phép ta xây dựng thuật toán GetKey nhận một khóa từ tập
LM L Key(a\L+) với L là vế trái cực tiểu của lược đồ nguồn a. Trước hết để ý
rằng LM đã là một siêu khóa của LĐQH a. Như vậy, để tìm một khóa 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 khóa
của a có trong LM.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 49
Algorithm GetKey
//Tìm một khóa từ LM
Format: GetKey(U,F,L,M)
Input: - Vế trái cực tiểu L của LĐQH a = (U,F)
- M Key(a\X+)
Output: - Khóa K của lược đồ a 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;
end GetKey.
2.6. Kết luận
Lý thuyết về phép dịch chuyển lược đồ quan hệ nhằm nâng cao hiệu quả của
các thuật toán tìm bao đóng và tìm khóa phục vụ cho các quá trình chuẩn hóa lược
đồ quan hệ. Qua đó cũng giúp tìm hiểu sâu hơn về các đối tượng khác trong quản lý
về cơ sở dữ liệu .
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 50
CHƯƠNG 3
CÀI ĐẶT CHƯƠNG TRÌNH
ỨNG DỤNG PHÉP DỊCH CHUYỂN LĐQH TRONG CSDL
3.1. Giới thiệu
Luận văn tập trung nghiên cứu các phép biến đổi LĐQH, chú trọng là phép dịch
chuyển LĐQH [7]. Việc cài đặt chương trình ứng dụng nhằm mục đích mô phỏng
các kết quả nghiên cứu được của học viên. Chương trình có giao diện đơn giản, dễ
sử dụng, dễ hiểu và được viết bằng ngôn ngữ Visual Basic 6.0, một ngôn ngữ khá
phổ biến, dễ học, dễ hiểu, hướng đối tượng… và cho phép tạo giao diện nhanh, dễ
dàng.
Chương trình cho phép nhập mới vào tập thuộc tính và tập các PTH của LĐQH,
cho phép lưu cất LĐQH thành tệp trên ổ đĩa và có thể mở tệp đã có sẵn trên đĩa.
Ngoài ra, chương trình còn cho phép thực hiện cập nhật, thay đổi LĐQH qua các
thao tác thêm/xoá thuộc tính, thêm/xoá PTH. Các chức năng chính của chương trình
bao gồm: Tìm bao đóng của tập thuộc tính, tìm một khoá/mọi khoá, tìm giao các
khoá, kiểm tra PTH suy dẫn, xác định dạng chuẩn và chuẩn hoá LĐQH. Chức năng
tìm phủ thu gọn, phủ thu gọn tự nhiên, phủ không dư, phủ tối tiểu của tập PTH cũng
được thiết kế trong chương trình. Đặc biệt, chương trình xây dựng chức năng ứng
dụng phép dịch chuyển LĐQH để có thể vận dụng cho các quy trình thiết kế các
CSDL chuẩn hoá.
3.2. Các chức năng của chương trình
Với mục đích yêu cầu và nội dung của luận văn, chương trình được xây dựng với
một số chức năng chính sau:
- Menu Soạn thảo: bao gồm các chức năng:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 51
+ Nhập mới lược đồ quan hệ: cho phép nhập mới vào các thuộc tính và các
PTH của LĐQH.
+ Mở lược đồ quan hệ: mở một LĐQH đã được lưu trên đĩa
+ Lưu lược đồ quan hệ: lưu cất LĐQH trên ổ đĩa
+ Bên cạnh đó còn có một số chức năng thao tác khác cho phép cập nhật, sửa
đổi và lưu trữ LĐQH như xoá/thêm thuộc tính, xoá/thêm PTH...
- Menu Chức năng: bao gồm các chức năng sau:
+ Tìm bao đóng của tập thuộc tính: thực hiện tìm bao đóng của một tập thuộc
tính được nhập vào
+ Phủ của tập phụ thuộc hàm: cho phép tìm các phủ không dư, phủ thu gọn,
phủ thu gọn tự nhiên, phủ tối tiểu của tập PTH.
+ Tìm khoá: chức năng này thực hiện việc tìm một khoá hoặc tìm tất cả các
khoá của LĐQH. Trong đó, việc tìm mọi khoá của LĐQH được ứng dụng kết quả
nghiên cứu và phát triển thuật toán của học viên.
+ Xác định chuẩn: xác định dạng chuẩn cao nhất của LĐQH hoặc xác định
LĐQH có thuộc dạng chuẩn 2NF, 3NF, BCNF không?
+ Chuẩn hoá 3NF không tổn thất và bảo toàn tập PTH: thực hiện việc chuẩn
hoá LĐQH ở dạng chuẩn 3NF không tổn thất và bảo toàn tập PTH, hiển thị kết quả
chuẩn hoá.
+ Kiểm tra PTH suy dẫn: kiểm tra xem một PTH nhập vào có được suy dẫn
từ tập các PTH đã cho của LĐQH không? (bài toán thành viên).
+ Tìm giao các khoá của LĐQH: tìm tập thuộc tính là giao các khoá của
LĐQH
+ Dịch chuyển LĐQH và tìm khoá: chức năng này mô phỏng kết quả nghiên
cứu về phép dịch chuyển LĐQH và ứng dụng việc tìm khoá sau khi dịch chuyển.
Kết quả hiển thị khoá của LĐQH nguồn và khoá của LĐQH sau khi dịch chuyển.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 52
3.3. Một số giao diện của chương trình
* Giao diện chính của chương trình
Khung “Luoc đo quan he” sẽ hiển thị tập thuộc tính và tập các PTH của LĐQH
Khung “Noi dung yeu cau” hiển thị các nội dung yêu cầu đặt ra cho chương trình
Khung “Hien thi ket qua” sẽ hiển thị các kết quả tìm được theo nội dung yêu cầu
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 53
* Giao diện nhập mới thuộc tính của LĐQH
- Giao diện nhập PTH
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 54
- Giao diện tìm khoá, tìm mọi khoá
- Ngoài ra còn một số các giao diện khác như: giao diện tìm bao đóng và hiển thị
kết quả, giao diện dịch chuyển LĐQH và tìm khoá của LĐQH sau khi dịch chuyển,
tìm các phủ, kiểm tra PTH suy dẫn, chuẩn hoá 3NF, …
3.4. Các thí dụ:
3.4.1. Thí dụ 1: (Tìm khóa của LĐQH)
Cho LĐQH a = (U,F) với tập thuộc tính U = ABCDEH và
tập PTH F = {AE D, BC E, E BC}. Để tìm tập khóa Key(a) của lược đồ a
chúng ta xây dựng một lược đồ b bằng cách xóa khỏi lược đồ a các thuộc tính A, D
và H.
Ta thu được lược đồ b = (V,G) trong đó V= U\ADH = BCE,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 55
G = {E Ø, BC E, E BC}. Tiếp đến ta loại PTH tầm thường E Ø khỏi
G. Ta thu được G = {BC E, E BC}. Ta dễ dàng tìm được hai khóa của lược đồ
b, Key(b) = {BC, E}. Để thu được Key(a) ta chỉ việc thêm tập thuộc tính AH
(không thêm D) vào mỗi khóa của lược đồ b.
Vậy Key(a) = {AHBC, AHE}. Dù F đã là tập PTH tối ưu [7] nhưng G còn chứa ít
ký hiệu hơn F.
3.4.2. Thí dụ 2: (Tìm bao đóng của tập thuộc tính)
Cho LĐQH a = (U,F), U = ABCDEH, F = {AE D, BC E, E BC}.
Tính
1. (AHE)
+
và
2. E
+
?
Giải :
Ta có, theo hệ quả về công thức tính bao đóng cho một tập thuộc tính
1. (AHE)
+
F = AHE()
+
F\AHE
G = F\AHE = { D, BC (loại), BC} ≡ { BCD}.
Từ đây ta tính được ()+G =BCD. Do đó (AHE)
+
= AHEBCD = U.
2. E
+
= E()+F\E.
G = F\E = {A D, BC (loại), BC} ≡ {A D, BC}.
Từ đây ta tính được ()+G =BC. Do đó E
+
= EBC.
3.4.3. Thí dụ 3: (Dạng biểu diễn thứ nhất của khóa)
1. Cho LĐQH a = (U,F) với tập thuộc tính U = ABCDEH và tập PTH
F = {AE D, BC E}. Ta tính được giao các khóa là
UI = ABCDEH \ DE = ABCH. Đặt b = (V,G) với V = U\ABCH = DE,
G = F\ABCH = {ED, E}. Ta có b = a\ABCH và tính được
Key(b) = {}, Vậy Key(a) = ABCH Key(b) ={ABCH}.
2. Với lược đồ đã cho ta tính được UK = ABCH nên Uo= U\UK =
ABCDEH\ABCH = DE. Đặt c = a\DE = (P,W) ta có P = U\DE = ABCH, W =
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 56
F\DE = {A (loại), BC (loại)} ≡ và do đó Key(c) = ABCH. Theo
định lý về dạng biểu diễn thứ nhất của khóa, vì Uo=DE nên Key(a) = Key(c) =
ABCH.
3.4.4. Thí dụ 4: (Dạng biểu diễn thứ hai của khóa)
Cho LĐQH a = (U,F), U = ABCDEH,
F = {AE D, A C, E BC, EH A, AC EH, BD C }.
Ta có ML(F) = {A, E, BD}. Ta thấy,
E
+
= EBC U. Vậy E không phải là khóa của a. Ta thu gọn a theo E+.
Đặt b = a\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 } .
Nhận xét :
Dễ thấy H là khóa của b. Như vậy EH là khóa của a, trong đó E là một vế trái cực
tiểu, H là khóa của a\E+
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 57
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận.
Về lý thuyết, luận văn tập trung vào các kết quả sau đây:
- Khái niệm về phép dịch chuyển lược đồ quan hệ,
- Phát biểu và chứng minh công thức tính bao đóng qua phép dịch chuyển
lược đồ quan hệ,
- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ nhất,
- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ hai,
- Phân tích thuật toán tìm khóa,
- Nghiên cứu và phát triển thuật toán tìm tất cả các khoá của LĐQH để vận
dụng cho các quy trình thiết kế các CSDL chuẩn hoá.
Về thực hành luận văn sẽ cài đặt các kết quả lý thuyết dưới dạng chương trình bao
gồm các chức năng sau:
Nạp và cập nhật dữ liệu: thuộc tính và các phụ thuộc hàm.
Tính bao đóng
Tìm các khóa của lược đồ quan hệ.
Chuẩn hoá LĐQH
Hướng phát triển
Một bài chưa giải quyết trọn vẹn hiện nay là khảo sát tính bất biến của các dạng
chuẩn trong phép dịch chuyển lược đồ quan hệ. Bài toán được phát biểu như sau:
Cho lược đồ quan hệ với tập thuộc tính U. Giả sử lược đồ quan hệ nhận
được từ lược đồ qua phép dịch chuyển theo bộ phận thuộc tính M trong U. Lược
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 58
đồ quan hệ ban đầu có thể ở một trong các dạng chuẩn 2NF, 3NF hoặc BCNF
(Boyce-Codd Normal Form). Có thể nói gì về dạng chuẩn của lược đồ .
Một vài công trình đã chỉ ra rằng tương quan về dạng chuẩn của hai lược đồ
nguồn và đích phụ thuộc vào cấu trúc của tập M [5, 6, 7]. Thí dụ, nếu M là bộ
phận trong giao các khóa và ở dạng là 3NF thì cũng là 3NF.
Việc tiếp tục khảo sát các điều kiện cho bài toán trên sẽ cho ta một số kết quả về
tính bất biến của các dạng chuẩn thông qua các phép dịch chuyển lược đồ quan hệ.
Các kết quả này có thể vận dụng cho các quy trình thiết kế các cơ sở dữ liệu chuẩn
hóa.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 59
DANH MỤC CÔNG TRÌNH CÔNG BỐ
1) VŨ TRÍ DŨNG (2009), ”Về thuật toán tìm tất cả các khoá của lược đồ quan hệ”,
Tạp chí Khoa học và Công nghệ, Đại học Thái Nguyên, 58 (10) , 48 - 51.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 60
TÀI LIỆU THAM KHẢO
[1] DEMETROVICS J., NGUYEN XUAN HUY (1991), “Closed Sets and
Translations of Relation Schemes”, Computers Math. Applic., 21(1), 13-23.
[2] DEMETROVICS J., THI V.D. (1996), “Some Results about Normal Forms
for Functional Dependency in the Relational Datamodel”, Discrete Applied
Mathematics, 69, 61-74.
[3] LE DUC MINH, VU NGOC LOAN, and NGUYEN XUAN HUY (2005),
“Some Results Concerning Covers in the Class of Multivalued Positive
Boolean Dependencies”, in Book: The Mathematical Foundation of
Informatics, Eds. by Do Long Van and M. Ito, Proceeding of the
Conference, World Scientific, 119-130.
[4] CLAUDIO L. LUCCHESI, SYLVIA L. OSBORN (1978), “Candidate Keys
for Relations”, Journal of Computer and System Sciences, 17 (2), 270-279.
[5] NGUYỄN XUÂN HUY, ĐOÀN VĂN BAN, ĐÀM GIA MẠNH,
NGUYỄN THẾ DŨNG (2001), “Về mối liên hệ giữa suy diễn phụ thuộc
hàm và suy diễn logic”, Tạp chí Tin học và điều khiển học, 17 (4), 11-16.
[6] NGUYỄN XUÂN HUY, LÊ THỊ MỸ HẠNH (2005), “Giàn giao của ánh
xạ đóng”, Chuyên san Các công trình nghiên cứu - triển khai Viễn thông và
Công nghệ Thông tin, 14 (4), 35-42.
[7] NGUYỄN XUÂN HUY (2006), Các phụ thuộc logic trong cơ sở dữ liệu,
Viện Khoa học và Công nghệ Việt Nam, NXB Thống Kê, Hà Nội.
[8] VŨ ĐỨC THI (1997), Cơ sở dữ liệu: Kiến thức và thực hành, NXB Thống
Kê, Hà Nội.
Các file đính kèm theo tài liệu này:
- Luận văn-ứng dụng phép dịch chuyển lược đồ quan hệ trong cơ sở dữ liệu.pdf