Thuật toán xác định bao đóng và khóa theo tiếp cận hợp giải trong lớp các phụ thuộc logic

Abstract: The algorithms for closures and keys in

relation schemas with functional dependencies are

well-known in theory of relational databases.

However, the problems of closures and keys in

relation schemas with positive Boolean dependencies

are still opened. This paper proposes a solution to

these problems. The results are presented by

unification method which is a new technique to

construct the basic algorithms for logic dependencies

in data and knowledge bases.

pdf 8 trang phuongnguyen 9320
Bạn đang xem tài liệu "Thuật toán xác định bao đóng và khóa theo tiếp cận hợp giải trong lớp các phụ thuộc logic", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Thuật toán xác định bao đóng và khóa theo tiếp cận hợp giải trong lớp các phụ thuộc logic

Thuật toán xác định bao đóng và khóa theo tiếp cận hợp giải trong lớp các phụ thuộc logic
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -50- 
Thuật toán xác định bao đóng và khóa theo tiếp 
cận hợp giải trong lớp các phụ thuộc logic 
Unification Algorithms for Closures and Keys in Relation Schemas 
with Class of Logic Dependencies 
Trƣơng Thị Thu Hà, Nguyễn Thị Vân, Nguyễn Xuân Huy
Abstract: The algorithms for closures and keys in 
relation schemas with functional dependencies are 
well-known in theory of relational databases. 
However, the problems of closures and keys in 
relation schemas with positive Boolean dependencies 
are still opened. This paper proposes a solution to 
these problems. The results are presented by 
unification method which is a new technique to 
construct the basic algorithms for logic dependencies 
in data and knowledge bases. 
Keywords: Positive Boolean dependencies, 
unification algorithm, membership problem, key 
algorithm, closure algorithm. 
I. GIỚI THIỆU 
Khóa của lƣợc đồ quan hệ là tập tối thiểu các thuộc 
tính nhằm xác định đơn trị một bộ trong cơ sở dữ liệu 
quan hệ. Khóa giữ vai trò quan trọng trong các bài 
toán tìm kiếm và suy dẫn. Chính vì vậy mà bài toán 
tìm khóa luôn đƣợc đề cập nhƣ một đối tƣợng cơ bản 
trong nghiên cứu về các loại phụ thuộc nhƣ phụ thuộc 
hàm, phụ thuộc đa trị, phụ thuộc sai khác [12, 13, 14], 
v.v.. Khái niệm khóa lại đƣợc dẫn xuất từ khái niệm 
bao đóng của một tập thuộc tính. Do đó bài toán tìm 
bao đóng và tìm khóa trong lƣợc đồ quan hệ có trang 
bị phụ thuộc Boole dƣơng và phụ thuộc Boole dƣơng 
tổng quát [10, 11, 14] đang là vấn đề mở. Bài báo này 
trình bày các thuật toán tìm bao đóng và khóa theo tiếp 
cận của phép hợp giải trong logic hình thức [1]. 
Sau phần giới thiệu của bài báo, phần 2 và 3 trình 
bày vắn tắt các khái niệm và kết quả nghiên cứu trƣớc 
đó về phụ thuộc Boole dƣơng. Phần 4 là một số hƣớng 
nghiên cứu của các nhóm tác giả về các loại phụ thuộc 
logic trong cơ sở dữ liệu. Phần 5 đề xuất thuật toán tìm 
khóa và tìm bao đóng trong lớp các phụ thuộc logic 
dựa trên thuật toán hợp giải. Phần 6 là kết luận của bài 
báo. 
II. CÔNG THỨC BOOLE DƢƠNG 
Cho U = {x1,..., xn} là tập hữu hạn các biến Boole 
nhận giá trị trong tập B = {0, 1}. Tập các công thức 
Boole (CTB), kí hiệu L(U), bao gồm các biểu thức 
đƣợc xây dựng từ các biến trong U, các hằng 0/1 và 
các phép toán logic , , , . Mỗi vector 0/1, v = 
(v1,...,vn) trong không gian B
n đƣợc gọi là phép gán trị. 
Khi đó với mỗi CTB f L(U), f(v) là trị của công 
thức f đối với phép gán trị v. Kí hiệu e là phép gán trị 
đơn vị, e = (1,1,...,1). Công thức f L(U) gọi là công 
thức Boole dương (CTBD) nếu f(e) = 1. 
Ký hiệu P(U) là tập các công thức Boole dƣơng 
trên U. Với mỗi công thức Boole f L(U), kí hiệu Tf = 
{v Bn | f(v) = 1} là bảng chân lí của f. Mỗi tập công 
thức F  L(U) đƣợc hiểu là một hội logic của các công 
thức thành phần, {f | f F}. Khi đó, TF =  {Tf | f 
F} là bảng chân lí của tập công thức F. Ta đã biết f 
g (F g) khi và chỉ khi Tf  Tg (TF  Tg). 
Theo qui ƣớc của lí thuyết cơ sở dữ liệu và tri thức, 
dấu phép hội thƣờng đƣợc bỏ qua, giống nhƣ phép 
nhân trong đại số, dấu phép tuyển có thể đƣợc viết là 
“+”, dấu phép phủ định “” đƣợc thay bằng “’”. Tập 
các thuộc tính (biến logic) đƣợc viết liền nhau nhƣ 
một dãy kí tự. 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -51- 
III. PHÉP SÁNH TRỊ 
Ta quy ƣớc mỗi miền trị dx của biến x trong U có 
chứa ít nhất hai phần tử. Với mỗi miền trị dx, xét ánh 
xạ x: dx dx
 B thoả ba tính chất sau [11, 14]: 
a, b dx 
 x(a, a) = 1 
 x(a, b) = x(b, a) 
 c dx: x(a, c) = 0 
 x chính là quan hệ (hai ngôi) bộ phận thực sự, 
thoả các tính chất phản xạ và đối xứng trên miền trị dx. 
Việc xác định x đƣợc hiểu là thiết lập một phép sánh 
trị trên miền trị dx cho x. 
Quan hệ bằng =x đƣợc định nghĩa:  a, b dx: 
=x(a, b) = 1, khi và chỉ khi a = b là trƣờng hợp riêng 
của phép sánh trị và đƣợc ngầm định trong trƣờng hợp 
không định nghĩa tƣờng minh phép sánh trị cho thuộc 
tính này. 
Cho quan hệ r trên tập thuộc tính U, với mỗi bộ v 
r, thuộc tính x U và tập con thuộc tính X  U, kí 
hiệu u.x (u.X) là trị của thuộc tính u (của tập con thuộc 
tính X) trong bộ u. Với mỗi cặp bộ u, v r, u = (u1, 
u2,... , un), v = (v1, v2,... , vn), ta đặt tƣơng ứng một 
vector t Bn, t = (t1, t2,... , tn) và kí hiệu là (u,v), 
trong đó thành phần ứng với thuộc tính x trong U 
chính là ảnh của ánh xạ x (u.x, v.x). Khi đó mỗi quan 
hệ r sẽ đƣợc đặt tƣơng ứng với tập các vector 0/1: 
Tr = { (u, v) | u,v r} 
và đƣợc gọi là bảng trị của quan hệ r [10, 14, 15]. 
IV. QUAN HỆ GIỮA CÁC LOẠI PHỤ THUỘC 
LOGIC TRONG CỞ SỞ DỮ LIỆU 
 Phụ thuộc hàm đã là cách thức truyền thống để 
thiết kế lƣợc đồ, ràng buộc toàn vẹn, tối ƣu hoá truy 
vấn,Với đề xuất đầu tiên cho khía cạnh hƣớng lƣợc 
đồ, là định nghĩa cơ sở trên phép suy dẫn thông 
thƣờng ( ) và phép sánh trị đẳng thức (=). Tuy nhiên, 
trong hƣớng dữ liệu thực tiễn không phải lúc nào cũng 
đồng nhất. Do đó, rất nhiều nhóm nghiên cứu gần đây 
đã đề xuất các loại phụ thuộc khác nhau để phù hợp 
hơn với đặc trƣng của dữ liệu, ví dụ nhƣ việc lấy đƣợc 
dữ liệu ngƣợc nhau, phục hồi dữ liệu, loại bỏ dữ liệu 
trùng lặp[4, 16, 17]. 
Phụ thuộc hàm có điều kiện [2, 3, 5]. Phụ thuộc hàm 
có điều kiện là mở rộng các phụ thuộc hàm bằng cách 
củng cố các mẫu của các hằng số có quan hệ về ngữ 
nghĩa. Các phụ thuộc hàm có điều kiện đã đƣợc chứng 
minh là hiệu quả hơn so với phụ thuộc hàm trong việc 
phát hiện và sửa chữa các điểm không nhất quán (tình 
trạng không sạch) của dữ liệu. 
Một phụ thuộc hàm có điều kiện trên quan hệ r là 
một cặp (X x, TP) thỏa mãn: 
 X  U và x U, với U là tập các thuộc tính 
 X x là một phụ thuộc hàm 
 TP là tập bộ mẫu trong X và x tƣơng ứng. 
Phụ thuộc hàm mềm [8]. Ilyas nghiên cứu phụ thuộc 
hàm mềm với các giá trị của thuộc tính đƣợc dự đoán 
bởi các giá trị của thuộc tính khác. Trong phụ thuộc 
hàm, giá trị của X xác định đầy đủ giá trị của Y. Trong 
phụ thuộc hàm mềm, giá trị của X xác định giá trị của 
Y nhƣng không đầy đủ, chỉ với xác suất cao. Ví dụ, 
trong một cơ sở dữ liệu của xe ô tô, một phụ thuộc 
mềm có thể: model → make. Với model = 323, ta suy 
ra make = Mazda với xác suất cao, nhƣng xác suất nhỏ 
có thể là BMV. Do đó phụ thuộc hàm mềm đƣợc sử 
dụng trong việc cải tiến sự đánh giá chọn lọc trong tối 
ƣu hoá truy vấn và làm nên chỉ số so sánh tối thiểu. 
Phụ thuộc hàm độ đo [9]. Koudas nghiên cứu các phụ 
thuộc với độ đo gần giống trên tập thuộc tính Y khi cho 
các giá trị đƣợc so sánh chính xác trên tập thuộc tính X; 
với X, Y  U. 
Trƣớc hết, ta xây dựng độ đo cho tập các điểm S 
trong không gian, khoảng cách giữa hai điểm bất kỳ d: 
dx dx ℝ là độ đo đƣợc xác định trên miền của x, 
thỏa ba tính chất: 
a, b dx: 
 d(a, b) ≥ 0, d(a, b) = 0 khi và chỉ khi a = b 
 d(a, b) = d(b, a) 
 c dx: d(a, c) + d(c, b) ≥ d(a, b). 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -52- 
Đƣờng kính của tập các điểm S trong không gian 
độ đo là khoảng cách lớn nhất giữa cặp điểm p, q 
trong S, d(S) = . 
Cho quan hệ r trên tập thuộc tính U; hai tập con X, 
Y  U. Cho tập bộ T r, độ đo d trên Y, tham số  ≥ 0. 
Ta nói có phụ thuộc hàm độ đo X
→Y nếu 
 . Trong đó, T.Y = {t.Y | t T}, 
 {[ ] } là phân hoạch của quan hệ r trên tập 
thuộc tính X. 
Phụ thuộc đối sánh [6]. Phụ thuôc đối sánh đƣợc đề 
xuất đầu tiên trong Fan (2008) với việc đặc tả các luật 
đối sánh với biến đối tƣợng. Trong quan hệ r, với mỗi 
thuộc tính x có một miền khoảng cách tƣơng ứng dx. 
Một toán tử đồng dạng trên một thuộc tính x 
đƣợc định nghĩa trên miền khoảng cách của x, : dx 
dx {true, false}, với u, v dx. Cho tập các thuộc tính 
X, toán tử đồng dạng trên X nhận trị true nếu các 
toán tử đồng dạng trên x X đều là true. Một toán tử 
đối sánh   trên thuộc tính x đƣợc định nghĩa trên 
miền khoảng cách của x. Nó là true nếu hai giá trị 
đồng dạng. 
Một phụ thuộc đối sánh có dạng: [X ] [Y], 
trong đó X, Y  U, và ,  biểu thị sự tƣơng ứng 
đồng dạng các toán tử đối sánh trên tập thuộc tính X 
và Y theo thứ tự. 
Phụ thuộc tuần tự [7]. Golab đề xuất phụ thuộc tuần 
tự có dạng: X → g
Y, với X  U là các thuộc tính có 
thứ tự, Y  U đƣợc trang bị một độ đo nào đó, g là 
khoảng thời gian. Điều đó nói lên rằng khi các bộ đƣợc 
sắp xếp trên X (thí dụ nhƣ theo thuật toán group by X 
trong SQL), thì khoảng cách giữa các giá trị Y của hai 
bộ bất kỳ liên tiếp nhau trong khoảng thời gian g. 
Một phụ thuộc tuần tự có điều kiện là một cặp: (X 
→ g
Y, tr) với tr là bộ mẫu. Với mỗi mẫu tr đặc tả một 
dãy giá trị của X để đồng nhất một tập các bộ trên r. 
Phụ thuộc sai khác [12, 13]. Phụ thuộc sai khác trên 
quan hệ r có dạng g: X Y, trong đó X, Y là các tập 
con của tập thuộc tính U; X, Y là các hàm sai khác 
thỏa độ sai khác a: da
2
 D thỏa hai tính chất phản xạ 
và đối xứng của độ đo. 
Bảng 1. So sánh các loại phụ thuộc logic 
Loại phụ 
thuộc logic 
Phép toán 
logic 
Phép 
sánh trị 
Tập 
trị 
Phụ thuộc 
có điều kiện 
 Thỏa tập mẫu 
Tp 
{0,1} 
Phụ thuộc 
hàm mềm 
 = (Với xác 
suất cao) 
[0;1] 
Phụ thuộc 
hàm độ đo 
 Độ đo khoảng 
cách  
[0;1] 
Phụ thuộc 
hàm đối 
sánh 
 Đồng dạng 
trên toán tử 
đối sánh cho 
vế trái và  
cho vế phải 
{0,1} 
Phụ thuộc 
tuần tự 
 Thời khoảng g [a..b] 
Phụ thuộc 
sai khác 
 Hàm sai khác 
 thỏa độ sai 
khác a với hai 
tính chất 
không âm và 
đối xứng 
[0;1] 
Phụ thuộc 
Boole 
dƣơng 
, , , Phép sánh 
đẳng thức (=) 
{0,1} 
Phụ thuộc 
Boole 
dƣơng tổng 
quát 
, , , Thỏa phép 
sánh trị với 
ba tính chất 
phản xạ, đối 
xứng và bộ 
phận. 
{0,1} 
Phụ thuộc 
Boole 
dƣơng đa trị 
, , , Thỏa phép 
sánh trị với 
ba tính chất 
phản xạ, đối 
xứng và bộ 
phận. 
[0;1] 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -53- 
Phụ thuộc Boole dƣơng tổng quát [14]. Mỗi công 
thức Boole dƣơng f trong P(U) với phép sánh trị là 
một phụ thuộc Boole dương tổng quát (PTBDTQ). 
Quan hệ r trên tập thuộc tính U thỏa PTBDTQ f (tập 
PTBDTQ F) và viết r(f) (r(F)) nếu Tr  Tf (Tr  TF). 
Phụ thuộc Boole dƣơng đa trị [14]. Tập trị Boole 
B = {b1,...,bk} gồm k giá trị thực trong đoạn [0; 1], k ≥ 
2 đƣợc sắp tăng và thỏa các điều kiện sau: 
 0 B, 
  b B 1 b B. 
Với mỗi trị b B ta định nghĩa hàm Ib 
 x B : Ib(x) = 1 nếu x = b, ngoài ra Ib(x) = 0 
Cho U = {x1,...,xn} là tập hữu hạn các biến Boole, 
B là tập trị Boole. Khi đó các công thức Boole đa trị 
(CTBĐT) là các công thức đƣợc xây dựng trên các 
biến của U, các trị trong B , các hàm Ib với b B và 
các phép toán , , , . Mỗi công thức Boole dƣơng 
đa trị f với f (e) =1 thỏa phép sánh trị trên tập trị B 
là phụ thuộc Boole dương đa trị (PTBDĐT). 
V. LỚP CÁC PHỤ THUỘC LOGIC 
Trong [10, 14, 15] đã chỉ ra mối quan hệ giữa một 
số loại phụ thuộc trong cơ sở dữ liệu,và gọi chung 
là lớp các phụ thuộc logic (PTLG). Mỗi phụ thuộc 
trong lớp này chính là một biểu thức Boole trên tập 
hữu hạn các thuộc tính. Thí dụ, phụ thuộc hàm là 
trƣờng hợp riêng của PTBDTQ khi các biểu thức logic 
có dạng hội suy dẫn và các phép sánh trị =. 
V.1. Định lý tƣơng đƣơng 
Cho tập các PTBD F và một PTBD f trên tập thuộc 
tính U. Cho quan hệ r trên tập thuộc tính U. Quan hệ 
r(U) thỏa PTBD f và viết r(f) nếu Tr  Tf, quan hệ r(U) 
thỏa tập PTB F, R(F), nếu Tr  TF. Ta nói tập PTBD F 
suy ra PTBD f theo quan hệ và viết F├ f , nếu với mọi 
quan hệ r(U), r thỏa F kéo theo r thỏa f: 
F├ f  r(U): r(F) r(f) 
Ta nói F suy ra f theo quan hệ có không quá hai bộ 
và viết F├2 f, nếu với mọi quan hệ r trên tập thuộc tính 
U và có không quá hai bộ, r thỏa F thì r thỏa f: 
F├2 f  r(U), ||r|| 2 : r(F) r(f) 
Định lý 5.1. (Định lý tƣơng đƣơng) [10, 11, 15] 
Cho tập PTBD F và một PTBD f trên U. Ba mệnh 
đề sau là tương đương: 
 F f (suy dẫn logic) 
 F├ f (suy dẫn theo quan hệ) 
 F├2 f (suy dẫn theo quan hệ có không quá 2 bộ) 
V.2. Bài toán thành viên 
Kí hiệu F+ = {f P(U) | F├ f } là tập toàn bộ các 
PTBD đƣợc suy dẫn theo quan hệ từ tập PTBD F. Nếu 
F├ f , có nghĩa f F+ thì f là thành viên của F+. Hiển 
nhiên, nếu f F thì F├ f. Vấn đề đặt ra là ngoài F thì 
F
+
 còn chứa PTBD nào khác? 
Bài toán thành viên [18]: Cho F là tập PTBD và f là 
một PTBD trên U. Hãy xác định F├ f ? Nói cách khác 
là xác định f F+? 
Định lý 5.1 cho thấy việc kiểm tra F├ f tƣơng 
đƣơng với việc kiểm tra suy dẫn logic F f và cũng 
tƣơng đƣơng với việc kiểm tra trên các quan hệ có 
không quá hai bộ. 
Định lý tƣơng đƣơng cũng cho biết bài toán thành 
viên tƣơng đƣơng với bài toán suy dẫn của logic mệnh 
đề trong lớp các phụ thuộc Boole dƣơng. Nếu chọn 
cách kiểm tra F├ f theo quan hệ thì ta phải xây dựng 
2
m
 quan hệ, trong đó m là tích các lực lƣợng của miền 
trị của các thuộc tính. Để xây dựng bảng chân lí T cho 
mỗi quan hệ gồm k bộ ta phải xét k2 cặp bộ. Trong 
trƣờng hợp các thuộc tính có vô hạn giá trị thì tiếp cận 
theo quan hệ là không thể. Do đó, theo định lý tƣơng 
đƣơng, thay vì kiểm tra F├ f theo quan hệ, ta có thể 
chứng minh F f theo logic, cụ thể là vận dụng thuật 
toán hợp giải để chứng minh F f . 
Thuật toán 5.1. (Thuật toán hợp giải) 
Trong logic, bài toán suy dẫn F f đối với tập 
công thức Boole F và công thức Boole f trên tập biến 
Boole U đƣợc giải theo thuật toán hợp giải nhƣ sau 
[1] 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -54- 
Để chứng minh F f ta xét phủ định g = (F f)’ 
 Ff’. Nếu chứng minh đƣợc Ff’ là sai thì F f, 
ngƣợc lại F không suy dẫn đƣợc f. 
Bƣớc 1. Chuẩn hóa CNF. Đƣa g về dạng chuẩn hội 
(CNF) h, tức là viết g dƣới dạng hội của các tuyển cơ 
sở, trong đó mỗi hạng tử của mọi tuyển cơ sở đều là 
các biến đơn hoặc phủ định của biến đơn trong g. Gọi 
thủ tục này là CNF, ta có h = CNF(g). 
Bƣớc 2. Hợp giải. Lần lƣợt thay cặp nhân tử 
(a+B)(a’+C) trong h bằng (B+C) cho đến khi không 
còn thay đƣợc nữa, hoặc gặp hai nhân tử phủ định 
nhau là x và x'. Ta gọi thủ tục này là Unif(h). 
Lƣu ý x  x+0  0+x, nên ta có thể thay (a+B)a’ hoặc 
(a’+B)a bằng B trong quá trình hợp giải. 
Bƣớc 3. Kết luận. Nếu h bị xóa hết (kết quả nhận đƣợc 
là tập rỗng ), tức là hợp giải thành công thì kết luận 
F f; ngƣợc lại, với mọi khả năng thay thế nhƣ trên, 
h không bị xóa hết, tức là hợp giải không thành công 
thì kết luận F không suy dẫn ra f. 
Tổng hợp các bƣớc trên ta thu đƣợc thuật toán 
Member_PBD(F, f) kiểm tra tập PTBD f có là thành 
viên trong tập F+ ? 
Nếu f F+ thuật toán cho giá trị 1 (true), ngƣợc lại 
thuật toán cho ra giá trị 0 (false). 
Thuật toán 5.2. [18] (Thuật toán thành viên) 
Algorithm Member_ PBD(F, f) 
Input: Tập PTBD F; PTBD f. 
Output: true, if F f ; else false 
Method 
g  Ff’; // gán Ff' cho g 
h  CNF(g) ; 
return Unif(h) =  ; 
End Member_ PBD. 
Mệnh đề 5.1. Bài toán thành viên trong lớp các phụ 
thuộc Boole dương thuộc lớp NP đầy đủ (NPC) [18] 
V.3. Thuật toán bao đóng 
Gọi U là tập các thuộc tính và F là tập PTBD trên 
U, X  U. Ta định nghĩa bao đóng X+ của X là tập các 
thuộc tính sau: 
X
+
 = {a U | X a F+} 
Để tìm bao đóng X+ của X, ta khởi tạo X+ = X sau 
đó vận dụng thuật toán thành viên để xét cho từng 
thuộc tính a U X, nếu X a F+ thì bổ sung thêm 
a vào X+. Tiếp tục quá trình cho đến khi không mở 
rộng thêm X+ đƣợc nữa. 
Để ý rằng nếu F đã đƣợc đƣa về dạng CNF thì điều 
kiện X a F+ sẽ cho ta CNF(F(X a)') = FXa', do 
đó sẽ tƣơng đƣơng với điều kiện Unif(FXa') = . 
Thuật toán 5.3. (Thuật toán tìm bao đóng) 
Algorithm Closure_PBD(X, F) 
Input: Tập PTBD F dạng CNF 
 Tập thuộc tính X  U 
Output: X+ = {a U | X a F+} 
Method 
Y  X; // Y chứa kết quả 
V  U-X; // phần bù của X 
repeat 
Z  Y; 
for each attribute a in V do 
 if Unif(FYa') =  then 
 add a to Y; 
 endif; 
endfor; 
until Y = Z; 
return Y; 
End Closure_PBD. 
Theo mệnh đề 5.1 thì thuật toán tìm bao đóng trong 
lớp các phụ thuộc Boole dƣơng là NP đầy đủ (NPC). 
Thí dụ 5.1. Cho tập thuộc tính U = abcd, tập PTBD F 
= {b’+c, a’+b}, X = ab, tìm bao đóng X+? 
Ta có F = (b’+c)(a’+b) hiện ở dạng CNF. 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -55- 
Đặt Y = X = ab, V = U-X = cd. Xét các thuộc tính 
trong V. 
Với c V, ta có Unif(FXc’) = (b’+c)(a’+b)abc’ = 
(c+a')abc' = bcc' = . Vậy Y = abc. 
Với d V, ta có Unif(FXd’) = (b’+c)(a’+b)abcd’ = 
(a'+c)abcd’ = cbcd’ ≠  nên Y không thay đổi. Cuối 
cùng ta thu đƣợc X+ = (ab)+ = abc. 
V.4. Thuật toán tìm khóa 
Cho F là tập PTBD trên U. Tập K  U đƣợc gọi là 
khóa nếu 
- K+ = U 
- a K: (K a)+ ≠ U 
Để tìm tập khóa K, trƣớc tiên đặt K = U. Sau đó rút 
gọn K bằng cách xét từng thuộc tính a trong K, nếu 
(K a)+ = U thì loại a ra khỏi K. 
Do ta luôn bảo toàn bất biến K+ = U nên điều kiện 
(K a)+ = U tƣơng đƣơng với điều kiện (K a) a. Điều 
kiện này lại tƣơng đƣơng với điều kiện 
Unif(F(K a)a') = . 
Thuật toán 5.4. (Thuật toán tìm khóa) 
Algorithm Key_PBD(U, F) 
Input: Tập thuộc tính U; Tập PTBD F dạng CNF 
Output: K  U: 
- K+ = U 
- a K: Unif(F(K - a)a') = Ø 
Method 
K  U; 
for each attribute a in K do 
if Unif(F(K - a)a') = Ø then 
delete a from K; 
 endif 
endfor 
return K; 
End Key_PBD. 
Theo mệnh đề 5.1 thì thuật toán tìm khóa trong lớp 
các phụ thuộc Boole dƣơng là NP đầy đủ (NPC). 
Thí dụ 5.2. Cho tập các thuộc tính U ={a, b, c, d}, tập 
phụ thuộc Boole dƣơng F = {b’+c, a’+b}, hãy xác 
định một khóa K trong quan hệ r? 
Trƣớc hết ta đƣa F về dạng CNF, F = 
(b’+c)(a’+b). 
Áp dụng thuật toán tìm khóa, đặt K = U = abcd. 
Lần lƣợt rút gọn khóa K bằng cách xét từng thuộc tính 
a, b, c và d trong K: 
Xét a: K-a = bcd. Ta có: Unif(Fbcda’) = 
(b’+c)(a'+b)bcda’ = (a'+c)bcda' ≠ . Vậy, K không 
thay đổi, K = abcd. 
Xét b: K-b = acd. Ta có: Unif(Facdb’) = 
(b’+c)(a'+b)acdb’ = (b'+c)bcdb' = . Vậy, K = acd. 
Xét c: K-c = ad. Ta có Unif(Fadc') = (b’+c)(a'+b)adc’ 
= (b'+c)bdc' = cdc' = . Vậy, K = ad. 
Xét d: K-d = a. Ta có Unif(Fad') = (b'+c)(a'+b)ad' = 
(b'+c)bd' = cd' ≠ . Vậy, K không thay đổi. Cuối 
cùng ta thu đƣợc khóa k = ad. 
VI. KẾT LUẬN 
Thuật toán hợp giải có thể đƣợc cài đặt nhƣ một 
tiện ích trong các thƣ viện của các ngôn ngữ lập trình 
logic nhƣ Prolog, P#, Lisp. Nghiên cứu các phụ thuộc 
Boole dƣơng theo tiếp cận của logic hình thức cho 
phép ta thiết kế và quản lí các cơ sở dữ liệu và tri thức 
với những phụ thuộc phức tạp và đa dạng một cách 
thống nhất. Các kết quả thu đƣợc trong bài này có thể 
đƣợc vận dụng trong lĩnh vực khai thác tri thức từ các 
tập dữ liệu lớn. 
TÀI LIỆU THAM KHẢO 
[1] BAADER F., SNYDER W., “Hanbook of Automated 
Reasonning”. Ed. Alan Robinson and Andrei Voronkov, 
Elsevier Science Publishers B.V, 2001. 
[2] BOHANNON P., FAN W., GEERTS F., JIA X., 
KEMENTSIETSIDIS A., (2007), “Conditional 
functional dependencies for data cleaning”, In ICDE, 
pp.746-755. 
[3] BRAVO L., FAN W., MA S., (2007), “Extending 
dependencies with condition”, In VLDB, pp.243-254. 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -56- 
[4] DAVID MAIER, V. M MEGLER, KRISTIN TUFTE 
(2014), Challenges for Dataset Search, “Database 
System for Advanced Applications”, Lecture Notes in 
Computer Science Volum 8421, 1-15. 
[5] FAN W., GEERTS F., LAKSHMANAN L. V. S., 
XIONG M., (2009), “Discovering conditional 
functional dependencies”, In ICDE, pp. 1231-1234. 
[6] FAN W., LI J., JIA X., MA S., (2009), “Reasoning 
about record matching rules”, PVLDB. 
[7] GOLAB L., KARLOFF H., KORN F., SAHA A., 
SRIVASTAVA D., (2009), “Sequential 
dependencies”, PVLDB, 2(1), pp.574-585. 
[8] ILYAS I. F., MARKL V., HAAS P. J., BROWN P., 
ABOULNAGA A., (2004), “Cords: Automatic 
discovery of correlations and soft functional 
dependencies”, In Sigmod Conference, pp.647-658. 
[9] KOUDAS N., SAHA A., SRIVASTAVA D., 
VENKATASUBRAMANIAN S., (2009), “Metric 
functional dependencies”, In ICDE, pp.1275-1278. 
[10] NGUYEN XUAN HUY, LE THI THANH, 
“Generalized Positive Boolean Dependencies”, J. Inf. 
Process. Cybern. EIK, 28, 1992, 6, 363-370. 
[11] SAGIV Y., DELOBEL C., PARKER D. S., FAGIN R., 
“An equivalence between Relational Database 
Dependencies and a Fragment of Propositional Logic”, 
J.ACM, 28, 1981, 435 - 453. Corrigendum J. ACM, 34, 
1987, 1016 -1018. 
[12] SONG S., CHEN L. and CHENG H., “Efficient 
Determination of Distance Thresholds for Differential 
Dependencies”, IEEE Transactions on knowledge and 
data engineering, Vol. 26, No. 9, 2014, 2179-2192. 
[13] SONG S., CHEN L., “Differential Dependencies: 
Reasoning and Discovery”, ACM Trans. Datab. Syst. 
9, 4, Article 39, (March 2011), 42 pages. 
[14] NGUYỄN XUÂN HUY, “Các phụ thuộc logic trong 
cơ sở dữ liệu”, NXB Thống Kê, 2006. 
[15] NGUYỄN XUÂN HUY, CAO TÙNG ANH, TRƢƠNG 
THỊ THU HÀ, LƢƠNG NGUYỄN HOÀNG HOA, BÙI 
ĐỨC MINH (2012), “Các biến thể của phụ thuộc sai khác 
trong cơ sở dữ liệu quan hệ”, Kỷ yếu Hội thảo quốc gia lần 
thứ XV: “Một số vấn đề chọn lọc của Công nghệ thông tin 
và Truyền thông”, NXB Khoa học và Kỹ thuật, ISBN 978-
604-67-0251-137- 41. 
[16] NGUYỄN XUÂN HUY, ĐÀM GIA MẠNH, VŨ THỊ 
THANH XUÂN, KIM LAN HƢƠNG (2001), “Về một 
lớp công thức logic suy dẫn”, Tạp chí Tin học và điều 
khiển học, 17 (4), tr. 17-22. 
[17] 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), tr.11-16. 
[18] TRƢƠNG THỊ THU HÀ, “Độ phức tạp của các thuật 
toán chuẩn hóa phụ thuộc Boole dương", Tạp chí 
Công nghệ thông tin và truyền thông, ISSN 1859 – 
3526, Tập V-1, Số 12(32), 12-2014. 
Nhận bài ngày: 29/02/2016 
Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-2, Số 16 (36), tháng 12/2016 
 -57- 
SƠ LƢỢC VỀ TÁC GIẢ 
TRƢƠNG THỊ THU HÀ 
Sinh năm 1979 tại Nghệ An. 
Tốt nghiệp Cử nhân CNTT tại 
Trƣờng ĐH Sƣ phạm Hà Nội năm 
2000, Thạc sĩ CNTT tại Trƣờng 
ĐH Công nghệ, ĐH Quốc gia Hà 
Nội năm 2006. Đang là nghiên 
cứu sinh tại Khoa CNTT, Học 
viện Kỹ thuật Quân sự. 
Hiện công tác tại Khoa CNTT, trƣởng Đại học Kinh 
doanh và Công nghệ Hà Nội. 
Lĩnh vực nghiên cứu: Cơ sở dữ liệu, Công nghệ phần 
mềm. 
Email: thuha.bh@gmail.com 
NGUYỄN THỊ VÂN 
Sinh năm 1985 tại Hà Tĩnh. 
Tốt nghiệp Cử nhân CNTT tại 
Trƣờng ĐH Kinh doanh và Công 
nghệ Hà Nội năm 2011, Thạc sĩ 
ngành Khoa học máy tính tại 
Trƣờng ĐH CNTT và Truyền 
thông năm 2014. 
Hiện công tác tại Khoa CNTT, 
Trƣờng Cao đẳng Cộng đồng Hà Nội. 
Lĩnh vực nghiên cứu: Các phụ thuộc logic trong cơ sở 
dữ liệu, mô hình dữ liệu và cơ sở dữ liệu. 
Email: van.cdcd@gmail.com 
NGUYỄN XUÂN HUY 
Sinh năm 1944, Hải Phòng. 
Tốt nhiệp Cử nhân Toán, ĐH Sƣ 
phạm Leningrad (Liên Xô) năm 
1973, Tiến sỹ CNTT năm 1982, 
Tiến sỹ khoa học CNTT, Viện 
Hàn lâm Khoa học Liên Xô năm 
1990. 
Là Trƣởng Phòng Cơ sở dữ liệu 
và Lập trình, Viện CNTT, Viện Hàn lâm KH&CN 
Việt Nam từ năm 1997-2009. 
Hƣớng nghiên cứu: Cơ sở dữ liệu và Công nghệ phần 
mềm. Email: nxhuy564@gmail.com 

File đính kèm:

  • pdfthuat_toan_xac_dinh_bao_dong_va_khoa_theo_tiep_can_hop_giai.pdf