1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các thuật toán tìm khóa trong cơ sở dữ liệu quan hệ

33 3,2K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 451,42 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các thuật toán tìm khóa trong cơ sở dữ liệu quan hệ

Trang 1

ÐẠỤ ỷỌạ QUỐạ ịỤự TỷÀNỷ PỷỐ ỷỒ ạỷÍ MỤNỷ

-

ÐỀ TÀỤể

Trang 2

T ÀI LIỆU THAM KHẢO

- Closed sets and Translations of relation schemes – 1991 - Nguyễn Xuân

Huy

- Balanced relation scheme and problem of key representation – 1985 –

J.Demetrovics, H ồ Thuần, Nguyễn Xuân Huy, Lê Vãn Bảo

Trang 3

I L ời nói đầu

Qua quá trình học môn cõ sở dữ liệu trýớc đây, khái niệm về

khóa và tìm khóa của một lýợc đồ quan hệ, chúng tôi chỉ tìm hiểu ở

mức cõ bản, chýa có điều kiện đầu tý sâu hõn, do đó việc tìm khóa rất

tốn thời gian và còn gặp nhiều khó khãn đối với nhiều bài toán trong

thực tế với độ phức tạp lớn

Dýới sự gợi ý của Thầy Tiến sĩ Đỗ Phúc, chúng tôi đã hiểu đýợc

vấn đề cặn kẽ hõn và cố gắng tìm kiếm vài thuật toán tìm khóa hầu

giải quyết một số bài toán trong thực tế có độ phức tạp týõng đối lớn

Do nhu cầu thực tế, với dữ liệu có số thuộc tắnh lớn thì việc tìm

khóa là rất phức tạp Do đó bài toán ỘTìm KhóaỢ luôn là vấn đề hấp

dẫn nhiều ngýời tìm hiểu nhằm mục đắch giảm thiểu độ phức tạp càng nhiều càng tốt

Ở góc độ là học viên, với sự ham muốn tìm tòi, học hỏi và sự

hýớng dẫn động viên của Thầy, chúng tôi đã tìm hiểu bài toán ỘTìm

khóaỢ với mong muốn là tìm đýợc những giải thuật có độ phức tạp

thấp hõn so với giải thuật tìm khóa chuẩn

Trong bài thu hoạch này, chúng tôi kắnh trình đến Thầy kết quả

tìm hiểu và việc xây dựng các thuật toán tìm khóa sau hõn hai tháng

học tập

Tuy rằng rất nỗ lực, nhýng với sự hiểu biết còn hạn chế nên bài thu hoạch không tránh khỏi nhiều thiếu sót Chúng tôi rất mong nhận đýợc những chỉ bảo của Thầy

Trang 4

II M ột Số khái niệm cõ bản

A Quan H ệ

1 Quan h ệể

Gọi R = { A1, A2, Ầ, An } là tập hữu hạn các thuộc tắnh, mỗi thuộc tắnh Ai

với i=1,2, ,n có miền giá trị týõng ứng là Di, ký hiệu dom(Ai)

Quan hệ r trên tập thuộc tắnh R là tập con của tắch Descarte

tắnh X,Y là tập con của U Phụ thuộc hàm X Y (đọc là X xác định Y) đýợc định nghĩa là:

 t, tỖr, nếu t.X = tỖ.X thì t.Y = tỖ.Y

Ý nghĩa: nếu 2 bộ có cùng giá trị X thì có cùng giá trị Y

2 Bao đóng của tập phụ thuộc hàm

Gọi F là tập các phụ thuộc hàm trên lýợc đồ quan hệ R

Gọi XY là một phụ thuộc hàm X,Y U

Ta nói F khẳng định logic XY (viết là F|=XY) nếu mỗi quan hệ r của R

thỏa các phụ thuộc trong F thì cũng thỏa XY

Bao đóng của F là tập các phụ thuộc hàm đýợc khẳng định logic từ F, nghĩa

là:

F+= { XY | F|=XY }

Trang 5

3 H ệ tiên đề ựrmstrong

Để xác định đýợc khóa và hiểu đýợc các phép suy diễn logic cho các phụ thuộc hàm nói chung, chúng ta phải có những quy tắc suy diễn cho biết làm sao để có thể suy ra một hay nhiều phụ thuộc từ các phụ thuộc đã có

Nãm 1974, Armstrong đã đýa ra một tập các quy tắc suy diễn.Các quy tắc

n ày là đúng đắn, nghĩa là khi sử dụng chúng, ta sẽ suy ra từ F một phụ

thuộc hàm thuộc F+

Hõn nữa những quy tắc suy diễn đầy đủ theo nghĩa: từ

tập các phụ thuộc F đã biết, những quy tắc này cho phép suy đýợc tất cả các

Bổ đề : hệ tiên đề Armstrong là đúng đắn, nghĩa là nếu X Y đýợc suy

t ừ F nhờ hệ tiên đề này thì X Y đúng trong mọi quan hệ mà các phụ

Xét A3:

Giả sử quan hệ r thỏa XY và YZ, và có 2 bộ t1, t2r giống nhau

ở các thuộc tắnh của X và khác nhau ở các thuộc tắnh Z

Do XY, và r1.X = r2.X nên r1.Y = r2.Y

Trang 6

Do YZ, và r1.Y = r2.Y nên r1.Z = r2.Z Điều này trái với giả thiết

4 C ác quy tắc suy diễn bổ sung

A4: Quy t ắc Hợp

N ếu X  Y và X  Z thì XYZ

Ch ứng minh:

Do XY, áp dụng tắnh tãng trýởng đối với X ta có XXY

Do XZ, áp dụng tắnh tãng trýởng đối với X ta có XYYZ

Áp dụng Tắnh Bắc Cầu đối với XXY và XYYZ ta có XYZ

A5: Quy t ắc Giả Bắc Cầu

N ếu X  Y và WY Z thì XWZ

Ch ứng minh:

Do XY, áp dụng tắnh tãng trýởng đối với W ta có XWWY

Áp dụng Tắnh Bắc Cầu đối với XY và WYZ ta có XWZ

A6: Quy t ắc Phân Rã

N ếu X  YZ thì X  Y và X  Z

Ch ứng minh:

Áp dụng tắnh phản xạ

H ệ quả: nếu XY thì XAi, AiY

5 Bao đóng của tập thuộc tắnh

Cho R(U) trong đó U là tập các thuộc tắnh Gọi F là tập phụ thuộc hàm và X

là một tập con của U

Bao đóng của X ứng với F (ký hiệu là X+

) là tập các thuộc tắnh A sao cho

XA đýợc suy từ F nhờ hệ tiên đề Armstrong

Bổ đề ể X Y đýợc suy từ F nhờ hệ tiên đề Armstrong nếu và chỉ nếu

Y  X +

Ch ứng minh:

Đặt Y = A1,A2,Ầ,An và giả sử Y X Theo định nghĩa trên, XAi

đýợc suy ra bằng hệ tiên đề Armstrong với mọi i Bằng quy tắc hợp, thì

XY là đúng

Ngýợc lại, giả sử XY đýợc suy ra từ hệ tiên đề Armstrong Bằng quy

Trang 7

B ài toán thành viênể

Gi ải thuật tắnh bao đóngể

Nhập: tập thuộc tắnh hữu hạn X, tập phụ thuộc hàm F và X U

Olddep = Newdep For each pth WZ  F do

Trang 8

C Kho á của lýợc đồ quan hệ

Cho quan hệ r(R), tập KR đýợc gọi là khóa của quan hệ r nếu K+

=R và

nếu bớt 1 phần tử khỏi K thì K+≠R Nhý thế, tập KR và (K\A) +≠R, AK

Nhận xét:

 Một quan hệ có nhiều khóa

 Khóa bao hàm (còn gọi là siêu khóa) là một tập chứa khóa Nói cách

khác, khóa là một trýờng hợp đặc biệt của khóa bao hàm

D Ph át biểu bài toán

M ục đắch chắnh yếu của bài thu hoạch đýợc tóm tắt bởi bài toán sau đây:

Cho l ýợc đồ quan hệ (R,F), trong đó R là tập các thuộc tắnh, F là tập các

ph ụ thuộc hàm xác định trên R Câu hỏi đýợc đặt ra là Tìm tất cả các Khoá

Trang 9

III C ác thuật toán tìm khoá cõ bản

A Qui ýớc cú pháp

Ng ôn ngữ tựa Pascal - Hýớng ðối týợng

1 Ki ểu dữ liệu Set ể

Kiểu Tập Hợp trong Ðại Số bao gồm các phép toán Ðại số trên

Tập Hợp:

- Mô tả A là Tập Hợp : A: Set

- Phép gán tập A vào B: B:=A;

- Phép Hợp : C là hợp của A và B: C:=A  B;

- Phép Giao: C là giao của A và B: C:=A  B;

- Phép Hiệu: C là hiệu của A và B: C:=A - B;

- Ðịnh nghĩa A là Tập rỗng: A:=0;

- Số phần tử của tập A: A.SizeOf() ( Hoặc SizeOf(A) )

- Tập hợp chỉ chứa một phần tử thứ i của A:

A.BaseOf(i) (Hay BaseOf(i,A))

- Biểu thức logic A rỗng hay không: A!=0 ( Hoặc A<>0)

- Biểu thức logic A,B khác nhau: A!=B ( Hoặc A<>B)

- Biểu thức logic A,B bằng nhau: A=B

- Biểu thức logic A là tập con của B: AB

- Biểu thức logic A là tập con của B hay bằng B: AB

2 Ki ểu dữ liệu Setsể

Kiểu dãy ( Array ) mỗi phần tử là một Set

Thí dụ : L: Array[1 100] of Set; thì ta gọi L có kiểu Sets

Trên kiểu Sets có các phép toán sau:

- Ðịnh nghĩa L có zero phần tử: L.Reset();

- Thêm vào L một tập hợp A : L.Add(A)

- Số tập hợp có trong L: L.SizeOf()

- Tập hợp thứ i trong L: L.Set(i)

- Hủy tập thứ i trong L: L.Sub(i)

- Kiểm tra việc tồn tại X trong L: L.Exist(X)

3 Ki ểu dữ liệu ấỏể

Biểu diển một phụ thuộc hàm , là gồm 2 tập hợp X và Y trong phụ thuộc

hàm có dạng XY

Mô tả f là một phụ thuộc hàm: f: FD

- Tập hợp vế trái của f: f.X ( Hay f.X())

- Tập hợp vế phải của f: f.Y ( Hay f.Y())

4 Ki ểu dữ liệu ấỏsể

Biểu diển một danh sách các phụ thuộc hàm

Mô tả F là danh sách phụ thuộc hàm : F : FDs

- Số lýợng các phụ thuộc hàm trong F: F.SizeOf() ( Hay SizeOf(F) )

- Khởi ðộng F, zero phần tử: F.Reset();

- Phụ thuộc hàm thứ i: F.FD(i)

- Thêm một phụ thuộc hàm f vào F: F.Add(f) ( F:=F + f)

- Thay thế phụ thuộc hàm thứ I bởi f: F.Replace(I,f);

- Huỷ bỏ phụ thuộc hàm thứ i: F.Sub(i); ( F:=F – f)

Trang 10

5 M ột số thủ tục ụ hàm cõ bản ể

Function Closure(X :Set ; Var F : FDs) : Set;

// T ìm bao đóng của X dựa trên Tập F

// T ài liệu tham khảo: Giáo Trình CSDL Nâng Cao Ờ TS Đỗ Phúc

Procedure AddSuperKey(K: Set; Var Keys: Sets);

// Th êm một Super Key vào danh sách Keys

// Keys Ch ỉ chứa các SuperKey có kắch thýớc nhỏ

Trang 11

Function CheckKey( X , R : Set; Var F: FDs) : Boolean;

// Ki ểm tra một SuperKey có phải là Key hay không

If (Closure(X – X.BaseOf(i), F) = R ) then

Return (False);

Return (True);

End;

B Thu ật toán từ trên xuống

Input ban ðầu : X=R ; Keys.Reset();

OutPut : Keys là Tập các Khoá trên ( R,F )

Procedure FindKeys(X , R: Set; Var F: FDs; Var Keys: Sets)

Var

T: Set;

I: Integer;

Begin

If ( Keys.Exist(X) ) Then return;

AddSuperKey(X, Keys); // X là SuperKey

End;

Ðộ phức tạp: Tính trên số lần thực hiện Hàm Closure

Trang 12

C Thu ật toán từ dýới lên

Input X:=0; T:= R; Keys.Reset()

Output: Keys là Tập các Khoá

Procedure FindKeys( X, T, R: Set; Var F: FDs; Var Keys: Sets) Var

A: Set;

Begin

If ( Closure(X,F)=R) Then

Begin AddSuperKey(X,Keys); Return ; End;

For i:=1 To T.SizeOf() do

Đây là thuật toán cải biên từ thuật toán từ dýới lên

Input G là Tập nút gốc, T: Tập các nút trung gian

Tập nút gốc đýợc tắnh trên thuật toán sau:

G:= (R Ờ ( _XX  _YY))  ( _XX - _YY);

Tập T các nút trung gian đýợc xác định sau:

T:= ( R Ờ ( _YY - _XX) ) Ờ G;

Trong đó _XX, _YY đýợc tắnh nhý sau:

Procedure SumXY( Var _XX, _YY : Set ; Var F: FDs)

Trang 13

Procedure FindKeys( G, T, R: Set; Var F: FDs; Var Keys: Sets)

For i:=1 To T.SizeOf() do

Cho (R,F) là 1 lýợc đồ quan hệ, trong đó R là tập các thuộc tắnh và F là

tập các phụ thuộc hàm Giả sử F đã đýợc rút gọn nhý sau :

o Chỉ tồn tại các phụ thuộc hàm dạng XA trong đó A là 1 thuộc tắnh

của R

o Chỉ tồn tại các phụ thuộc hàm không tầm thýờng nghĩa là XA thuộc

F thì A không thuộc X

Ph ép Chiếu:

Cho (R,F), Cho R1 l à tập con của R

Ta g ọi (R1,F1) là kết quả của phép chiếu (R,F) trên tập R1 nếu và chỉ

n ếu

F1={ X Y thuộc F ; trong đó XY thuộc R1 }

Ta g ọi (R1,F1) là kết quả của phép chiếu mở rộng (R,F) trên tập R1

n ếu và chỉ nếu

F1={ f : X Y trong đó f thoả các điều kiện (a), (b) }

(a): N ếu f:XY thuộc F , trong XY thuộc R1 thì f thuộc F1

(b): N ếu f:XY thuộc F, trong đó Y thuộc R1, X không thuộc

R1, X R1<>

Th ì Phụ thuộc hàm XR1  Y thuộc F1

Ph ụ thuộc hàm dý thừa đối với việc tìm khoá:

Ph ụ thuộc hàm f đýợc gọi là dý thừa trong việc tắnh toán xác định

Kho á của (R,F)

t ức là Nếu K là khoá của (R,F) thì K cũng là Khoá của (R,F Ờ f)

Danh s ách Tập hợp chặn trên: Cho K,L l à Danh sách các Tập hợp

T ức K,L là kiểu Sets

Trang 14

L đýợc gọi là Tập Chặn Trên của K nếu nhý mọi phần tử của K đều

l à phần tử của L

B Thu ật toán loại Tập Lá

1 Kh ái niệm ể Tập ịốcụ Lá và Trung gian

Cho (R,F) là 1 lýợc đồ quan hệ, trong đó R là tập các thuộc tắnh và F là

tập các phụ thuộc hàm Trên R ta xây dựng các tập thuộc tắnh sau :

- N út gốc ể

Cho G là 1 thuộc tắnh thuộc R, G đýợc gọi là nút gốc nếu :

với mọi XA thuộc F thì A <> G

- N út lá ể

Cho L là 1 thuộc tắnh thuộc R, L đýợc gọi là nút lá nếu :

với mọi XA thuộc F thì L không thuộc X

N ếu K là một khoá của (R,F) thì G  K ( G là tập con của K)

T ức là Nút gốc phải tham gia vào các khóa

Chứng minh : Cho G là 1 thuộc tắnh thuộc tập Goc

Vì K là khóa nên có phụ thuộc hàm KG thuộc Closure(F)

Nếu G không thuộc K mâu thuẩn với định nghĩa G là thuộc tắnh

Trang 15

Nếu Closure(K-L,F) = R thì L không thuộc K vì nếu ngýợc lại sẽ

trái với giả thiết K là khoá

Nếu Closure(K-L,F) <> R

Xét Closure(K-L,F) :

Nếu X thuộc Closure(K-L,F) xong

Nếu X không thuộc Closure(K-L,F) xong

2.3 B ổ đề ởọộ ể

Cho l ýợc đồ quan hệ ỮRụấỀụ trong đó R là tập các thuộc tắnh

v à ấ là tập các phụ thuộc hàmọ K là tập gồm các khóa của

(R.F)

G ọi L là ợ nút láụ ấ_L là tập các phụ thuộc hàm trong ấ mà có

v ế phải là Lọ

Ta x ây dựng lýợc đồ quan hệ ỮR-{L},F-F_L), trong đó R-{L}

l à tập các thuộc tắnh và ấ-F_L là tập các phụ thuộc hàmọ ịọi

K Ỗ là tập các khóa của ỮR-{L},F-F_L) Ta có K là tập con của

a Từ việc xác định các nút lá ta loại bỏ chúng và các phụ thuộc

hàm liên quan đến chúng Nhý vậy từ (R,F) đýợc thu hẹp thành (R1,F1)

b Sau khi thực hiện býớc a có thể trên (R1,F1) lại xuất hiện 1 tập

các nút lá mới khi đó ta tiếp tục lặp lại býớc a

c Khi không còn phát sinh nút lá mới, ta sẽ tìm khoá trên (R1,F1) sau đó duyệt trên tập các khoá vừa tìm đýợc để cho ra các khóa

của (R,F)

4 X ây dựng thuật toán

Procedure Projection(Var R1: Set; Var F1, F: FDs) Begin

Trang 16

Procedure RemoveLeaf(Var R: Set; Var F: FDs) Var XX,YY:Set;

F1: FDs;

Begin

L:=R;

While ( L <> 0) do Begin

SumXY(XX,YY,F);

L:=YY – XX; // L l à tập nút Lá

If ( L<>0) Then

Begin R:=R – L; // Loại bỏ các nút Lá

Cho (R,F), R l à tập các thuộc tính, F là tập các phụ thuộc hàm

Cho K l à tập con của R , ðặt E:= Closure(K,F) - K

E g ọi là Tập Suy diễn từ K

Gi ả sử KE<>  tức tồn tại thuộc tính A  KE

V ì A  E và E= Closure(K’,F) – K’ nên A  Closure(K’,F)

Trang 17

E l à thuộc tắnh suy diễn từ K

N ếu f: XE , trong đó X không là tập con của Closure(K,F)

Th ì f là dý thừa trong việc tìm khoá có chứa K

Ch ứng Minh:

Ta s ẽ chứng minh rằng: Closure (K,F) = (Closure(K,F Ờ f)

Hay f: XE kh ông xuất hiện trong quá trình tìm Closure(K,F)

Th ực vậy, Thuật toán tìm Bao đóng chỉ duyệt tìm các f : WZ tho ả điều kiện

L à WClosure(K,F) vì X không là Tập con của Closure(K,F) nên

f kh ông đýợc chọn trong quá trình tìm Closure(K,F)

Ta gi ả sử rằng K là một khoá, tức closure(K,F)=R;

Ta s ẽ chứng minh rằng Closure(K,F Ờ f)=R

Th ực vậy, Giã sử rằng: Closure(K,F Ờ f)<>R, tức là E không có

trong Closure(K,F Ờ f) Vì theo nhý chứng minh trên E phải thuộc

Gi ã sữ rằng không tồn tại trong F các phụ thuộc hàm có dạng

f: XEi trong đó Ei thuộc tập E, X không là tập con của

Closure(K Ỗ,F)

Ta thay đổi F nhý sau:

(i) V ới mọi f: XY thu ộc F, YE thì thu gọn F:=F Ờ f

(ii) V ới mọi f:XY thu ộc F, XE<>  thì thay f bằng

(X-E) KỖY

F sau khi thay đổi ta gọi là F1

Th ì khoá của (R,F) cũng là khoá của (R Ờ E,F1)

Trang 18

Ch ứng Minh:

Do m ệnh ðề C.4 nên ta có thể áp dụng vào (i)

(ii) Ta c ó X=(X-E)  (XE) H õn nữa trong quá trình tìm khóa

ta c ó thể xuất phát từ tập gốc K’ mà XE  Closure(K’,F) nên ta

c Ta chỉ cần duyệt tuyến tính trên danh sách Khoá chặn trên ðể

chỉ ra danh sách khoá của (R,F)

d Việc loại bỏ các phụ thuộc hàm dý thừa trong việc xác ðịnh khoá, có thể tìm ra các nút Lá mới và ta có thể thu hẹp R1 ðýợc nhỏ hõn nữa

e Sau mỗi býớc tìm một khoá, Tập Trung Gian T ðýợc thu hẹp nhanh

Tức là nếu G dự kiến là Tập thuộc tính tham gia khoá, thì : T:= T – Closure(G,F); là tập trung gian mới

4 X ây dựng thuật toán chuẩn

Procedure FindKeys( G, T, R: Set; Var F: FDs; Var Keys: Sets) Var

A,C : Set;

Begin

C:= Closure(G,F);

If ( C=R) Then Begin AddSuperKey(G,Keys); Return ;

End;

T:= T – C; // Loại Tập Suy Diễn Bổ ðề C.1

For i:=1 To T.SizeOf() do

Trang 19

D Thu ật toán phân rã

1 Kh ái niệm

Cho 3 danh s ách kiểu Sets : L1, L2 và L

Ta định nghĩa phép toán X trên Sets nhý sau: L:= L1  L2

- V ới mọi Tập A thuộc L1 thì L:= L  A Tức là L.Add(A)

- V ới mọi Tập B thuộc L2 thì L:= L  B Tức là L.Add(B)

- V ới mọi Tập A thuộc L1, Tập B thuộc L2 thì : L:= L  (AB )

Ta thấy rằng tập khoá K của (R,F) là:

K={ AC, AD,AE, BC,BD,BE }

Nếu ta đặt R1=AB và F1= { AB; BA }

Và R2=CDE và F2= { CD; DE; EC }

Gọi L1 là tập khoá của (R1,F1) L1={A,B}

Gọi L2 là tập khoá của (R2,F2) L2={ C,D,E } Đặt L:= L1  L2

Thì L= { A,B,C,D,E, AC,AD,AE,BC,BD,BE }

Nhận xét là KL tức L là tập chặn trên của K

Các thuật toán tìm tất cả các Khoá của (R,F) có độ phức tạp là số lần

thực hiện hàm tắnh Bao Đóng của các tập X nào đó : Closure(X,F)

Với thắ dụ 2 nói trên , có 6 khoá , Giả sữ Độ phức tạp là 6

Với (R1,F1) có độ phức tạp là 2

Với (R2,F2) có độ phức tạp là 3

Để tìm L , ta có độ phức tạp là 2 + 3 = 5 (nhỏ hõn 6, chú ý là: 6 = 2*3)

Vấn đề đýợc đặt ra là : Nếu có một phép phân rã (R,F) thành (R1,F1) và (R2,F2) sau cho K1  K2 là tập chặn trên của K thì độ phức tạp tắnh

toán cho việc tìm tất cả các khoá trên (R,F) đýợc giảm thiểu nhiều lần

Ghi ch ú : K là tập các khoá của (R,F), K1 là tập các khoá của (R1,F1) ,

K2 l à tập các khoá của (R2,F2)

Ngày đăng: 30/07/2015, 11:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w