Thuật toán tìm khóa

Một phần của tài liệu Phụ thuộc logic trong cơ sở dữ liệu (Trang 27)

Bước 1: Tính tập nguồn N. Nếu N Qthì chỉ có 1 khoá là N, ngược lại qua bước 2

Bước 2: Tính tập trung gian TG. Tính tập tất cả các tập con Xi của tập TG. Bước 3: Tìm tập S chứa mọi siêu khóa Si:

Với mỗi Xi, nếu NX i Qthì

Si N X i  Bước 4: Loại các siêu khóa không tối tiểu:

Si ,S jS , nếu Si S j thì S SS j

Thí dụ 1.16 Cho lược đồ quan hệ R(A, B, C) và tập phụ thuộc hàm:

F={ ABC, CA} Tìm mọi khóa của R? Bước 1: N = {B}, N BQ

Bước 2: TG = {AC}, tập các tập con trung gian là CTG , A,C, AC

F

F

F

Bước 3: N Xi NX i (N  X i  N X i  Q? B  B B Sai B A BA BAC Đúng B C BC BCA Đúng B AC BAC BAC Đúng

Như vậy tập siêu khoá S  BA,BC,BAC Bước 4: Loại các siêu khóa không tối thiểu:

Nhận thấy rằng BABAC nên loại siêu khóa BAC. Tập các khóa còn lại là

S  BA,BC

1 . 4 K ế t c h ƣ ơ n g

Chương này đã trình bày một số khái niệm cơ bản liên quan đến các lớp phụ thuộc hàm, các tính chất, tiên đề, lược đồ quan hệ, định lý tương đương và các thí dụ minh họa của phụ thuộc hàm, khóa và thuật toán tìm khóa trên phụ thuộc hàm.

C h ƣ ơ ng 2

MỘT SỐ KHÁI NIỆM CƠ SỞ TRONG PHỤ THUỘC BOOLE DƢƠNG

Trong chương 1 cũng đã nêu tổng quan về lớp phụ thuộc logic đầu tiên là lớp phụ thuộc hàm, phát biểu định lý tương đương cho lớp phụ thuộc này. Trong chương 2 sẽ tiếp tục trình bày một số khái niệm cơ bản về các lớp phụ thuộc logic như các lớp phụ thuộc Boole được mở rộng theo trình tự thời gian là phụ thuộc Boole dương.

Trong chương này cũng sẽ trình bày một số khái niệm liên quan đến việc tìm bao đóng, bài toán thành viên của lớp phụ thuộc Boole dương. Biểu diễn phụ thuộc Boole dương dưới dạng hội các công thức suy dẫn và thuật toán xây dựng xây dựng tập PTBD thỏa mãn quan hệ R cho trước cũng được trình bày trong chương này.

2 . 1 C c c ô n g t h ứ c B o o l e

Định nghĩa 2.1

Cho U = {x1,...,xn} là tập hữu hạn các i B e, B là tập ị B e,

B= {0,1}. Khi đó các g hứ B eCTB) là các công thức được xây dựng trên các biến của U, các hằng 0/1 và các phép toán , ,  ,.

Ký hiệu LU) là C B g ê i U.

Định nghĩa 2.2

Mỗi vector các phần tử 0/1, v = v1,...,vn) trong không gian Bn = BB...B được gọi là một phép gán trị cho các biến {x1,...,xn} trong U.

Khi đó với mỗi CTB fLU) ta có fv) = fv1,...,vn) là ị g hứ f đối với phép gán trị v, fv)được tính như sau:

1. Thay toàn bộ xuất hiện của mỗi biến xi trong f bằng trị vi tương ứng, (adsbygoogle = window.adsbygoogle || []).push({});

i=1,2,…,n để thu được một mệnh đề logic b.

2. Trị của fv)chính là trị của b.

Với mỗi tập con X U, ta quy ước viết hội gi ) của các biến trong X là dãy ký hiệu của X. Như vậy, trong trường hợp không gây ra nhầm lẫn, ký hiệu X

đồng thời biểu diễn cho các đối tượng sau đây:  ộ h ộ h trong U,

ộ i gi trong U,

ộ g hứ B e được lập bởi hội logic các biến trong X. Ngoài ra, nếu X = {B1,...,Bm} U ta ký hiệu:

X = B1B2...Bm và gọi là ạ g hội.X = B1B2...Bmvà gọi là ạ g ể .

Hai phép gán trị đặc biệt được quan tâm là hé g ị ị e = 1,1,...,1) và hé g ị h gz = 0,0,...,0).

Với mỗi tập hữu hạn các CTB, F = {f1, f2,...,fm} trong LU), F được xem là một công thức dạng F = f1f2...fm. Khi đó với mỗi phép gán trị v, giá trị chân lý của công thức F sẽ được tính như sau:

Fv) = f1v) f2v) ... fmv)

Định nghĩa 2.3

Với mỗi công thức f trên U, g ị f ký hiệu là Vf chứa n+1 cột, trong đó n cột đầu tiên chứa các trị của các biến trong U, cột cuối cùng, cột thứ n+1, chứa trị của f ứng với mỗi phép gán trị của dòng tương ứng. Như vậy bảng trị chứa 2n dòng, trong đó n là lực lượng của tập U. B g h f, ký hiệu là Tf, là tập các

phép gán trị v sao cho fv) nhận giá trị 1,

Tf = {v B n | fv) =1}

Khi đó g h F của tập hữu hạn các công thức F trên U, chính là giao

T T f F f F    Ta có, v TF khi và chỉ khi f F: fv) = 1. Thí dụ 2.1

Cho CTB F = { f: AB, g: CA} trên U = ABC. Ta có bảng trị Vf, Vg và các bảng chân lý Tf , TgTF như sau:

Nhận xét

Với mỗi CTB f, bảng trị Vf của f chứa trị của ọi hé g ị cho f, trong khi bảng chân lý Tf chỉ là ộ h g ị ứng với các giá trị 1 của f.

Định nghĩa 2.4

Cho f g là hai CTB. Ta nói công thức f dẫn ra được công thức gvà ký hiệu

f g, nếu Tf Tg; Ta nói f g là hai công thức tương đương, ký hiệu f g, nếu Tf = Tg. Với hai tập công thức F, G trong LU), ta nói F dẫn ra được G, ký hiệu FG, nếu TF TG; F G là tương đương, ký hiệu F G, nếu TF = TG.

Tf A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 Tg A B C 1 0 1 1 1 1 TF A B C 1 1 1 Vf, Vg A B C f g 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 Hình 2.1 Bảng chân lý Tf, Tg Hình 2.2 Bảng trị Vf, Vg

Thí dụ 2.2

Cho hai CTB Gh trên U = ABC,

trong đó G là một hội của các CTB fg:

G = { f: AC, g: BC} , h: ABC. Ta thấy TGTh nên G h.

2 . 2 P h ụ t h u ộ c B o o l e d ƣ ơ n g

Tiếp theo một số phụ thuộc logic như phụ thuộc hàm, phụ thuộc đối ngẫu, phụ thuộc mạnh, phụ thuộc yếu…đã được đề xuất và nghiên cứu bởi một số tác giả, các nhóm nghiên cứu độc lập với nhau của J Berman và W.J.Blok và Sagiv, Delobel et al. đã mở rộng khái niệm PTH sang phụ thuộc Boole dương. Đây là lớp phụ thuộc logic bao gồm các ràng buộc dữ liệu được mô tả thông qua các công thức Boole dương là những công thức nhận giá trị 1 (true) khi tất cả các biến đều có trị 1. Trong mô tả các phụ thuộc hàm và phụ thuộc Boole dương phép sánh trị của thuộc tính vẫn là phép sánh đẳng thức (=). Đối với các phụ thuộc Boole dương định lý tương đương vẫn bảo toàn hiệu lực.

2.2.1 Công thức Boole dƣơng Định nghĩa 2.5 (adsbygoogle = window.adsbygoogle || []).push({});

Công thức f LU) được gọi là g hứ B e g CTBD)nếu fe) =1,

trong đó e là phép gán trị đơn vị, e = (1,1,...,1).

Ký hiệu PU) là tập toàn bộ g hứ g trên U. Theo Post ta có thể xem PU) bao gồm các công thức được xây dựng từ các phép toán , ,  và hằng 1. Th A B C 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 TG A B C 0 1 1 1 1 1 Hình 2.3 Bảng chân lý TG, Th

Thí dụ 2.3

1. AB, AB)CB), AB)CB)B)C1là các CTBD.

2. Các công thức suy dẫn, suy dẫn mạnh, yếu và đối ngẫu đều là các CTBD. 3. Công thức A (B) không phải là CTBD, vì khi A = B = 1 ta có 1  0 = 0.

2.2.2 Bảng chân lý của quan hệ

Với hai bộ uv tùy ý trong quan hệ R ta định nghĩa (u,v) là phép gán trị:

(u,v) = (u.A1= v.A1, u.A2= v.A2,..., u.An= v.An)

Nói cách khác, nếu u = (u1, u2, u3 … n,)v = (v1, v2, v3 … n) thì ta đặt:

t = (u,v) = (t1,t2,...,tn)

trong đó ti = 1 nếu ui = viti = 0 nếu uivi, 1 i n

Với mỗi quan hệ R REL(U) ta gọi bảng chân lý của quan hệ R là tập :

TR = {u,v)u,v R}

T h í d ụ 2 . 4

Nhận xét:

- Mỗi dòng t của TR chính là một phần tử trong không gian Bn

- Nếu R  thì TR = - Nếu R  thì e TRvì (u,u) = e nên eTR R Bộ A B C t1 1 a 2 t2 2 b 2 t3 1 a 3 TR A B C t1&t1 1 1 1 t1&t2 0 0 1 t1&t3 1 1 0 t2&t3 0 0 0 Hình 2.5 Bảng chân lý TR Hình 2.4 Quan hệ R(A,B,C)

2.2.3 Phụ thuộc Boole dƣơng Định nghĩa 2.6

Mỗi công thức Boole dương trong PU) được gọi là một hụ h ộ B e g PTBD). Dễ thấy phụ thuộc hàm là một PTBD.

Ta nói quan hệ R thỏa tập PTBD F và ký hiệu RF) nếu TRTF.

Cho tập PTBD F và một PTBD f. Ta nói F dẫn ra được f theo quan hệ, và ký hiệu F f nếu R RELU): RF) Rf).

Cho tập PTBD F và một PTBD f. Ta nói F dẫn ra được f theo quan hệ có không quá hai bộ, ký hiệu F ├2 f nếu RREL_2U): RF) Rf).

2.2.4 Một số tính chất của công thức Boole dƣơng

Mệnh đề 2.1

Tích các công thức Boole dương (CTBD) là một CTBD. Tổng các CTBD là một CTBD.

Chứng minh

Gọi f và g là hai CTBD và e là phép gán trị đơn vị thì f(e) = g(e) = 1, do đó f(e)g(e) = 1.1 = 1 và f(e) + g(e) = 1+1 = 1.

Định nghĩa 2.7

Mỗi tập CTBD F = {f1,…,fk} được hiểu là một CTBD duy nhất có dạng tích như sau: F = f1…fk. (adsbygoogle = window.adsbygoogle || []).push({});

Định nghĩa 2.8

Tập CTBD F suy dẫn ra được tập CTBD G nếu F => G với mọi g trong G. Tập CTBD F và G tương đương, F  G nếu F => G và G => F. Nếu G  F thì G là phủ của F.

Mệnh đề 2.2

Tập CTBD được chuẩn hóa CNF nếu mọi công thức thành phần của nó đều có dạng CNF.

Thí dụ 2.5

Mệnh đề 2.3

Mọi tập CTBD đều có thể được chuẩn hóa CNF.

Thí dụ 2.6

Cho g = (a+b)(c’+a) là một CTB CNF. Hãy đưa g’ về dạng CNF? Ta có g’ = [(a+b)(c’+a)]’ = (a+b)’ + (c’+a)’ = a’b’ + ca’ =

(a’+c)(a’+a’)(b’+c)(b’+a’) = (a’+c)(b’+c)(b’+a’)a’.

Thí dụ 2.7

Cho g = (a’+b)(a+c’+d)e là một CTB CNF. Hãy đưa g’ về dạng CNF? g’ = (a+a’+e’)(a+c+e’)(a+d’+e’)(b’+a’+e’)(b’+c+e’)(b’+d’+e’).

Định nghĩa 2.9

- Tập CTBD F dược gọi là không dư nếu với mọi f thuộc về tập F ta có F\{f} không tương đương với F.

- Tập CTBD G dược gọi là một phủ không dư của tập CTBD nếu G là một phủ của F và G là tập không dư.

Quy trình tìm phủ không dƣ

1. CNF: Chuyển các công thức f trong F sang dạng CNF. Nếu f là công thức hằng đúng thì loại.

Trùng lặp thì lược bớt.

2. Với mỗi CNF f trong F xây dựng một CNF cho f’. 3. Duyệt

Với mỗi f trong F:

Nếu Ff’ = 0 thì F = F \ {f}; return F;

Thí dụ 2.8

Tìm phủ không dư của F = {a’, a+b, b} // chú ý: a’ không phải là CTBD F CNF F CNF f’ Xét Loại?

1 a’ a’ a 1

2 a+b a+b a’b’ 2 Loại

3 b B b’ 3

Thí dụ 2.9

Tìm phủ không dư của F = {a=>b, c=>b, ac=>b}

F CNF F CNF f’ Xét Loại? 1 a=>b a’+b ab’ 1

2 c=>b c’+b cb’ 2 (adsbygoogle = window.adsbygoogle || []).push({});

3 ac=>b a’+c’+b acb’ 3 Loại Kết quả: G = { a’+b, c’+b}

Thí dụ 2.10

Tìm phủ không dư của F = {a=>b, b=>c, a=>c, ad=>d, a’+b, abd=>d}. Chuẩn hóa CNF: F = {a’+b, b’+c, a’+c}

Loại ad => d và abd => d vì là các hằng đúng (tautology) Đưa các phủ định của F về CNF: F* = {ab’, bc’, ac’}

F CNF f’ Xét Loại? 1 a’+b ab’ 1

2 b’+c bc’ 2

3 a’+c ac’ 3 Loại Kết quả: G = {a’+b, b’+c}

2.2.5 Định lý tƣơng đƣơng

Cho tập PTBD F và một PTBD f. Ba mệnh đề sau là tương đương: i) Ff gi )

ii) F f he hệ)

iii) F 2 f he hệ ó h g 2 ộ)

Đối với PTH ta đã định nghĩa quan hệ R thỏa PTH f: X Y, và ký hiệu là

R(f) nếu:

Khi coi PTH như là một trường hợp riêng của CTBD ta chấp nhận định nghĩa quan hệ R thỏa PTH f: X Y nếu TRTf.

Định lý 2.1 sau đây xác định tính tương đương của hai định nghĩa trên.

Định lý 2.1

Cho quan hệ R trên tập thuộc tính U và một PTH f: X Y trên U. Khi đó

R(f) khi và chỉ khi TR Tf.

Hệ quả 2.1

Cho quan hệ R trên tập thuộc tính U và tập PTH F trên U. Khi đó R(F) khi và chỉ khi TR TF.

2.3 Bài to n suy dẫn cho lớp phụ thuộc Boole dƣơng

Với hầu hết các loại phụ thuộc dữ liệu, bài toán suy dẫn hay còn gọi là bài toán thành viên đều được đề cập đến với nhiều khía cạnh khác nhau. Bài toán thành viên là bài toán quyết định xem với một tập F hữu hạn các phụ thuộc và f là một phụ thuộc nào đó, hãy cho biết tập F có suy dẫn hay dẫn ra được f theo quan hệ hay không.

Vận dụng bài toán thành viên ta có thể xác định được một tập phụ thuộc dữ liệu đã cho có dư thừa không hay có thể kiểm tra xem hai tập phụ thuộc dữ liệu có tương đương với nhau hay không. Thuật toán giải quyết bài toán thành viên có ý nghĩa quan trọng trong việc thiết kế cơ sở dữ liệu. Nhiều nhà nghiên cứu xem đây như là một trong những mục đích cơ bản của việc nghiên cứu các phụ thuộc dữ liệu.

Bài toán suy dẫn cho phụ thuộc Boole dương được phát biểu như sau:

Ch L QH = U F ) F BD ộ BD f. X ị h f F+ (hay F f) hay h g g ó F+ ó g BD F?

Định nghĩa 2.7

Cho tập PTBD F trên U. Xét LĐQH a = (U, F). Bao đóng của tập PTBD F, ký hiệu F+ là tập PTBD được suy dẫn từ F, cụ thể là:

F+ = { g P(U) | Fg } = { g P(U) | TFTg } trong đó P(U) là tập các công thức Boole dương trên U.

Trong phần này sẽ đề cập một số cách giải quyết bài toán suy dẫn trong trường hợp F là tập PTBD và f là một trong các PTBD ứng với các công thức suy dẫn, suy dẫn mạnh, suy dẫn yếu, suy dẫn đối ngẫu,… thuật toán giải bài toán suy dẫn trong trường hợp tổng quát cũng được đề xuất và chứng minh. Các kết quả này đã được trình bày trong [11], [6].

Trong logic ta đã biết F ╞ (gh) khi và chỉ khi với mọi t TF ta có hoặc là (adsbygoogle = window.adsbygoogle || []).push({});

gt) = 0 hoặc là ht) = 1.

F ╞(gh) t TF: gt) = 0 ht) =1 Hoặc một phát biểu tương đương khác,

F ╞(gh)t TF: gt) = 1 ht) = 1

Ngoài ra ta có, với mọi tập biến X U và với mọi phép gán trị v Bn: Xv) = 1 A X: v.A = 1

Xv) = 1  A X: v.A = 1 hoặc các mệnh đề đối ngẫu là

Xv) = 0  A X: v.A = 0 Xv) = 0  A X: v.A = 0 Vận dụng các nhận xét trên ta có,

Định lý 2.2

Cho tập PTBD F trên U và các tập X, Y, Z U. Khi đó:

1.XY F+ vTF:  A X: v.A = 0) B Y: v.B=1)) 2.XY F+ v TF: A X: v.A = 0)B Y: v.B=1)) 3.XY F+ v TF:A X: v.A = 0)B Y: v.B=1))

4.XY F+ v TF:A X: v.A = 0)B Y: v.B=1)) 5.XY)Z) F+ 

vTF: AX:v.A=0)BY: v.B=1)CZ: v.C=1))

Định nghĩa 2.8

Cho U = {A1,A2,...,An} và tập trị logic B = {0,1}. Với mỗi phép gán trị vBn ta ký hiệu Setv)= {A U | v.A=1} và với mỗi bảng TB n ta ký hiệu

SetT) = {Setv) | vT}.

Ngoài ra ta định nghĩa ánh xạ Vec: SubSet(U) Bn như sau:

XU: Vec(X) = (v1,v2,...,vn), vi = 1 nếu AiXvi = 0 nếu AiX.

Ta cũng phát triển toán tử Vec cho họ các tập con bất kỳ của U, cụ thể là, P SubSet(U): Vec(P) = {Vec(X) | X P}

Dễ thấy VecSet là hai ánh xạ thuận nghịch với nhau.

Thí dụ 2.5

1. Với bảng T cho trên tập U = ABC như dưới đây ta có:

Set(T) = {BC, AC, B}.

2. Cho U = ABCDP = {AC,ABD,B,}. Ta có:

Vec(P) = {(1,0,1,0), (1,1,0,1), (0,1,0,0), (0,0,0,0)}. Khi đó kết quả trên có thể phát biểu theo ngôn ngữ tập hợp như sau:

Định lý 2.2 Ch BD F ê U X Y Z U Khi ó:

Một phần của tài liệu Phụ thuộc logic trong cơ sở dữ liệu (Trang 27)