Phép dịch chuyển lƣợc đồkhối

Một phần của tài liệu (LUẬN văn THẠC sĩ) phép dịch chuyển lược đồ khối trong mô hình dữ liệu dạng khối (Trang 51)

2.2.1. Định nghĩa

Nhƣ chúng ta đã biết, trong mô hình quan hệ, để giảm tính phức tạp của việc xác định bao đóng, khóa trong các cơ sở dữ liệu lớn, phức tạp thì phép dịch chuyển LĐQH đã đƣợc đề xuất. Trong mô hình cơ sở dữ liệu dạng khối, việc xác định khóa và bao đóng càng khó khăn hơn. Chính vì vậy mà phép dịch chuyển lƣợc đồ khối cũng đƣợc đề xuất ở đây. Nhờ việc dịch chuyển lƣợc đồ khối mà trong nhiều trƣờng hợp việc tính bao đóng và khóa của khối trở nên đơn giản hơn.

Định nghĩa 2.2[4]

Cho hai lƣợc đồ khối =(R,F), = (S,G), X n (i) i 1

id

 , X = {x(i), x id, i A}, A {1, 2, ..., n}. Ta nói lƣợc đồ nhận đƣợc từ lƣợc đồ qua phép dịch chuyển theo tập thuộc tính X, nếu sau khi loại bỏ các thuộc tính trong X ở lƣợc đồ thì ta thu đƣợc lƣợc đồ .

Để ký hiệu phép dịch chuyển từ lƣợc đồ thành lƣợc đồ theo tập thuộc tính X, ta viết = \ X.

Thao tác loại bỏ X từ lƣợc đồ thành lƣợc đồ nhƣ sau:

- Tính S = R\X, R = (id; A1, A2,…, An), ở đây, ta loại bỏ các thuộc tính Ai (i A) trong R, thủ tục này có độ phức tạp là O(nk), với k là số phần tử của A.

- Với mỗiPTH từ M N trong F, với M, N

n (i) i 1

id

 , ta tạo mộtPTH mới M\X N\X trong G. Thủ tục này đƣợc ký hiệu là G = F \X và có độ phức tạp O(mnk) với m là số lƣợng các PTH trong F.

Từ đó, ta thấy độ phức tạp của phép dịch chuyển = \ X = (R\X,F\X) là O(mnk), do vậy nó là tuyến tính theo chiều dài của dữ liệu vào.

Sau khi thực hiện thủ tục F = F\X thì:

+ Nếu G chứa các PTH tầm thƣờng (dạng X Y, X Y) thì ta loại bỏ chúng khỏi G.

+ Nếu G chứa các PTH trùng nhau thì ta loại bỏ bớt các PTH này (G không chứa các PTH trùng nhau).

1. Cho hai lƣợc đồ khối =(R,F), = (S,G), X n (i) i 1 id  , X = {x(i), x id, i A}, A {1, 2, ..., n}. Lƣợc đồ nhận đƣợc từ lƣợc đồ qua phép dịch chuyển theo tập thuộc tính X: = \ X. Khi đó, nếu id = {x}, thì lƣợc đồ khối suy biến thành LĐQH và phép dịch chuyển theo tập thuộc tính X trong lƣợc đồ khối này trở thành phép dịch chuyển theo tập thuộc tính X từ LĐQH về LĐQH trong mô hình dữ liệu quan hệ.

2. Cho hai lƣợc đồ khối =(R,F), = (S,G), X n (i) i 1

id

 , X = {x(i), x id, i A}, A {1, 2, ..., n}. Khi đó, nếu lƣợc đồ nhận đƣợc từ lƣợc đồ qua phép dịch chuyển theo tập thuộc tính X: = \ X thì:

S = R\X, Gh = Fh \ X = hx x id F  \X. Từ đó, ta có: Ghx = Fhx \ (X n (i) i 1 x  ), x id.

Nhƣ vậy, việc dịch chuyển trên khối trong trƣờng hợp này lại đƣợc chuyển về việc dịch chuyển trên các lát cắt, mà trong mỗi lát cắt thì việc này lại chính là việc dịch chuyển LĐQH trong mô hình dữ liệu quan hệ.

2.2.2. Sự khác biệt giữa phép chuyển dịch lược đồ khối so với phép dịch chuyển lược đồ quan hệ

Phép dịch chuyển lƣợc đồ khối thực chất là một mở rộng của phép dịch chuyển LĐQH nên hầu hết các nghiên cứu liên quan đến phép dịch chuyển lƣợc đồ khối đều cần kế thừa kết quả từ các nghiên cứu phép dịch chuyển LĐQH.

Xét lƣợc đồ khối =(R, F), X n (i) i 1

id

 , X = {x(i), x id, i A}, A {1, 2, ..., n}. Lƣợc đồ = (S,G) là lƣợc đồ kết quả phép dịch chuyển của từ

lƣợc đồ qua theo tập thuộc tính X: = \ X. Khi đó, nếu id = {x}, thì lƣợc đồ khối suy biến thành LĐQH và phép dịch chuyển theo tập thuộc tính X trong lƣợc đồ khối này trở thành phép dịch chuyển theo tập thuộc tính X từ LĐQH về LĐQH trong mô hình dữ liệu quan hệ.

Việc dịch chuyển trên khối có thể đƣợc chuyển về việc dịch chuyển trên các lát cắt, mà trong mỗi lát cắt thì việc này lại chính là việc dịch chuyển LĐQH trong mô hình dữ liệu quan hệ.

Phép dịch chuyển LĐQH a = <U, F> theo tập thuộc tính M đƣợc thực hiện với độ phức tạp tuyến tính theo chiều dài dữ liệu vào: O(mn) (với n là số lƣợng thuộc tính trong U; m là số lƣợng PTH trong F).

Phép dịch chuyển lƣợc đồ khối α = (R, F) theo tập thuộc tính X có độ phức tạp O(mnk) (với n là số lƣợng thuộc tính trong R; m là số lƣợng các PTH trong F; k là số phần tử của A).

Phép dịch chuyển lƣợc đồ khối có thể đƣợc thực hiện thông qua tập PTH Fh hoặc thông qua tập PTH Fhx nghĩa là có thể đƣợc thực hiện trên khối hoặc thông qua các lát cắt.

2.2.3 Một số thuật toán dịch chuyển lược đồ khối Thuật toán 2.4(Phép dịch chuyển 1)[4]

Algorithm Dich_chuyen_1 Format: Dich_chuyen_1( , X) Input: - Lược đồ khối = (R,F), - X n (i) i 1 id

 , X = {x(i), x id, i A}, A

{1, 2, ..., n}.

Output: = \ X = (V,G), V = R\X, G = F\X.

V:=R\X; G := ; For each L R in F do G := G (L\X R\X); Endfor; G:= Rutgon(G); Return(V,G); End Dich_chuyen_1;

Thủ tục Rutgon(G) sẽ đƣa G về dạng rút gọn tự nhiên, nghĩa là loại bỏ các PTH tầm thƣờng, đƣa các PTH về dạng có vế phải và trái rời nhau, gộp các PTH có cùng vế trái.

Trong trƣờng hợp tập PTH F có dạng Fh thì việc dịch chuyển lƣợc đồ khối lại chính là dịch chuyển lƣợc đồ của các lát cắt trong khối. Từ đó, ta có thuật toán sau:

Thuật toán 2.5(Phép dịch chuyển 2)[4]

Algorithm Dich_chuyen_2 Format: Dich_chuyen_2( , X) Input: - Lược đồ khối = (R, Fh), - X n (i) i 1 id

 , X = {x(i), x id, i A}, A

{1, 2, ..., n}.

Output: = \ X = (V,G), V = R\X, G = F\X.

Method

V:=R\X; G := ;

For each x in id do For each L R in Fhx do G := G (L\X R\X); Endfor; Endfor; G:= Rutgon(G); Return(V,G); End Dich_chuyen_2;

Bản chất của phép dịch chuyển lƣợc đồ khối là loại bỏ khỏi lƣợc đồ 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ƣợc đồ khối thu đƣợc qua phép dịch chuyển không tƣơng đƣơng với lƣợc đồ 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. 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.

Nhƣ vậy, sau khi thực hiện phép dịch chuyển, ta thu đƣợc lƣợc đồ với kích thƣớc nhỏ hơn và có thể có số FTH ít hơn lƣợc đồ ban đầu.

Một nhận xét tự nhiên là nếu kích thƣớc của lƣợc đồ càng nhỏ thì các thao tác tìm khóa, tìm bao đóng càng đơn giản. Sau đây chúng ta cùng tìm hiểu các kỹ thuật biểu diễn bao đóng và khóa của lƣợc đồ khối ban đầu thông qua lƣợc đồ dịch chuyển.

2.2.4. Biểu diễn bao đóng qua phép dịch chuyển Mệnh đề 2.1[4] Mệnh đề 2.1[4]

Cho lƣợc đồ khối =(R,Fh), R = (id; A1, A2,…, An), X, Y n (i) i 1 id  , X = {x(i), x id, i A}, Y = {x(i), x id, i B}, A,B {1, 2, ..., n}, A B= . Khi đó: a) (XY)+Fh = X(Y)+Fh\X b) (XY)+Fh = X( n (i) x id i 1 (Y x )   + Fhx\X). c) (XY)+Fh = n n (i) (i) x id i 1 i 1 [(X x )(Y x )    + Fhx\X]. Chứng minh - Trƣớc hết, ta chứng minh c)

Dựa vào điều kiện cần và đủ của bao đóng trên lƣợc đồ khối, ta có:

(XY)+Fh = n (i) x id i 1 (XY x )   + Fhx.

Mặt khác, theo giả thiết, ta có: A B =

Suy ra:

n n

(i) (i) i 1 i 1

(X x ) (Y x )= , x id. Tiếp theo, ta chứng minh:

n (i) i 1 (XY x )+ Fhx = n n (i) (i) i 1 i 1 (X x ) (Y x )+ Fhx. (1) Để ngắn gọn, ta ký hiệu: Xx = n (i) i 1 X x , Yx = n (i) i 1 Y x , Khi đó, đẳng thức (1) trở thành: (XxYx)+ Fhx =Xx (Yx)+Fhx\X (2)

Mặt khác, theo công thức tính bao đóng của tập XxYx dựa vào phép dịch chuyển LĐQH theo tập Xx trong lát cắt Rx đã đƣợc chứng minh, ta có:

(XxYx)+Fhx = Xx(Yx)+Fhx\Xx (3)

Do đó (XxYx)+Fhx\Xx = Xx(Yx)+Fhx\X (4) Từ (3) và (4) ta có:

(XxYx)+Fhx = Xx(Yx)+Fhx\X nghĩa là (1) đã đƣợc chứng minh. Từ(1) ta có: n (i) x id i 1 (XY x )   + Fhx= n n (i) (i) x id i 1 i 1 [(X x )(Y x )    + Fhx\X]. Suy ra (XY)+Fh = n n (i) (i) x id i 1 i 1 [(X x )(Y x )    + Fhx\X] - Ta chứng minh b)

Theo chứng minh c) ở trên, ta có

(XY)+Fh = n n (i) (i) x id i 1 i 1 [(X x )(Y x )    + Fhx\X]. Mà X = n (i) x id i 1 (X x )  

Suy ra: (XY)+Fh = X(

n (i) x id i 1 (Y x )   + Fhx\X). - Ta chứng minh a)

Theo kết quả ở phần b), ta có: (XY)+Fh = X(

n (i) x id i 1

(Y x )

  )+Fhx\X). Đựa vào điều kiện cần và đủ của bao đóng trên lƣợc đồ khối, ta có: (Y)+Fh\X = n (i) x id i 1 (Y x )   + Fhx\X).

Vậy: (XY)+Fh = X(Y)+Fh\X a) đƣợc chứng minh. Từ các kết quả trên, ta có hệ quả sau:

Cho lƣợc đồ khối =(R, Fh), R = (id; A1, A2,…, An), X n (i) i 1 id  , X = {x(i), x id, i A}, A {1, 2, ..., n}. Khi đó:

a) (X)+Fh = X( )+Fh\X. b) (X)+Fh = X( n (i) i 1 id  ( )+Fhx\X). Chứng minh

Sử dụng kết quả a) và b) ở trên với trƣờng hợp đặc biệt Y = ta có ngay điều phải chứng minh.

2.2.5. Biểu diễn khóa qua phép dịch chuyển

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, U0, UK, UI, là các tập thuộc tính chỉ số

n (i) i 1

id

 ; đối với lƣợc đồkhối , ta ký hiệu: - U0 là tập hợp các thuộc tính không khóa.

- UK là tập hợp các thuộc tính khóa

- UI là tập hợp các thuộc tính nằm trong mọi khóa.

Cho các lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An), = (S,G), = \X. Khi đó, ta ký hiệu:

x = (Rx, Fhx) là lƣợc đồ lát cắt của = (R, Fh) tại điểm x, x = (Sx, Gx) là lƣợc đồ lát cắt của = (S, G) tại điểm x,

Mệnh đề 2.2[4]

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, Y, Q

n (i) i 1

id

 , X = {x(i), x id, i A}, Y = {x(i), x id, i B}, Q = {x(i), x id, i C}; A, B, C {1, 2, .., n}, = (S, G), = \X. Khi đó:

a) Nếu Y là siêu khóa của thì Y\X là siêu khóa của .

b) Nếu Y là siêu khóa của thì Yx\ Xx là siêu khóa của x =(Sx,Gx), x id, ở đây Xx = {x(i), i A}, Yx = {x(i), i B}.

c) Nếu Q là siêu khóa của thì XxQx là siêu khóa của x, x id, ở đây Qx = {x(i), i C}. Trƣờng hợp X chỉ gồm các thuộc tính không khóa của và Q là siêu khóa của thì Qx chính là siêu khóa của x, x id.

Chứng minh

a) Giả sử Y là siêu khóa của , đặt P = Y\X P Q = và Y XP. Theo giả thiết Y là siêu khóa của , do đó:

X( n (i) i 1 id  \X)= n (i) i 1 id  =Y+Fh (XP)+Fh = X(P)+Fh\X. Mà: X ( n (i) i 1 id  \X) = , X P+Fh\X = P+Fh\X = n (i) i 1 id  \X(1) Từ (1), ta thấy P = Y\X chính là siêu khóa của = \X.

b) Giả sử Y là siêu khóa của , theo kết quả của a) ta có Y\X là siêu khóa của = \X. Từ đó, ta có: Yx\Xx là siêu khóa của x = (Sx, Gx), x id.

c) Giả sử Q là siêu khóa của thì: Q X= , Q+Fh\X=

n (i) i 1 id  \X Suy ra: (XQ)+Fh = X(Q)+Fh\X =X( n (i) i 1 id  \X) = n (i) i 1 id  Vậy, XQ là siêu khóa của .

Nếu X chỉ gồm các thuộc tính không khóa của thì việc loại bỏ từ siêu khóa XQ các thuộc tính không khóa X vẫn cho ta siêu khóa Q của .

d) Giả sử Q là siêu khóa của , thì theo c) ta có XQ là siêu khóa của . Từ đó, ta có XxQx là siêu khóa của x, x id.

Trƣờng hợp X chỉ gồm các thuộc tính không khóa của , thì suy ra Xx là tập các thuộc tính không khóa của x, do đó Qx = XxQx\Xx chính là siêu khóa của x, x id.

Mệnh đề 2.3[4]

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, Q

n (i) i 1

id

 ,

X = {x(i), x id, i A}, Q = {x(i), x id, i C}; A, C {1, 2, .., n}, = (S, G), = \X+. Khi đó, nếu Q là siêu khóa của thì:

a) XQ là siêu khóa của .

b) XxQx là siêu khóa của x, x id.

Chứng minh

a) Giả sử Q là siêu khóa của , theo mệnh đề 2.2, ta có X+Q là siêu

khóa của , khi đó (X+Q)+ =

n (i) i 1 id  . Mà ta có: (XQ)+ = (X+Q)+ = n (i) i 1 id  XQ là siêu khá của .

b) Giả sử Q là siêu khóa của thì theo a) ta có XQ là siêu khóa của . Từ đó, ta có: XxQx là siêu khóa của x, x id.

Mệnh đề 2.4[4]

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, K

n (i) i 1

id

 ,

X = {x(i), x id, i A}, K={x(i), x id, i B}; A, B {1, 2, .., n}, = (S, G), = \X.

Khi đó,

b) Nếu K là khóa của thì Kx\Xx là khóa của x = (Sx, Gx), x id. Ở đây, Kx = {x(i), i B}, Xx = {x(i), i A}.

Chứng minh

a) Giả sử, K là khóa của K là siêu khóa của , theo mệnh đề 2.2, ta có K\X là siêu khóa của . Nếu K\X không phải là khóa của thì M K\X là siêu khóa của , theo mệnh đề 5.2 ta lại có XM là siêu khóa của .

Mà XM X(K\X)=K, điều này mâu thuẫn với giả thiết K là khóa của . Do đó, K\X là khóa của .

b) Giả sử K là khóa của , khi đó, theo a) ta có K\X là khóa của . Vậy ta có Kx\Xx là khóa của x, x id.

Mệnh đề 2.5[4]

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, K

n (i) i 1

id

 ,

X = {x(i), x id, i A}, K = {x(i), x id, i B}; A, B {1, 2, .., n}, X U0, = (S, G), = \X. Khi đó,

a) Nếu K là khóa của thì K là khóa của

b) Nếu Kx là khóa của x = (Sx, Gx), Kx = {x(i), i B}, x id thì K là khóa của .

Chứng minh

a) Giả sử K là khóa của K là siêu khóa của theo mệnh đề 2.2, ta có K là siêu khóa của (vì giả thiết X U0). Ta chứng minh K là khóa của

.

Giả sử K không là khóa của , khi đó K’ K mà K’ là siêu khóa của . Theo mệnh đề 2.2, ta có K’ =K’\X (vì giả thiết X U0) là siêu khóa của , điều này mâu thuẫn với giả thiết K là siêu khóa của . Vậy K là khóa của .

b) Giả sử Kx là khóa của x= (Sx, Gx), Kx = {x(i), i B}, x id, khi đó, ta có K là khóa của , từ đó, dựa vào kết quả của a) ta có K là khóa của .

Mệnh đề 2.6 (điều kiện cần và đủ)[4]

Cho lƣợc đồ khối = (R, Fh), R = (id; A1, A2,…, An) và X, K

n (i) i 1

id

 ,

X = {x(i), x id, i A}, K = {x(i), x id, i B}; A, B {1, 2, .., n}, X U0, = (S, G), = \X. Khi đó,

a) K là khóa của khi và chỉ khi thì K là khóa của

b) K là khóa của khi và chỉ khi Kx là khóa của x = (Sx, Gx), Kx = {x(i), i B}, x id.

Chứng minh

a) K là khóa của K là khóa của

Thật vậy, từ giả thiết K là khóa của , X U0 và mệnh đề 2.4 ta suy ra K =K\X là khóa của

K là khóa của K là khóa của

Giả sử K là khóa của , vì X U0 theo mệnh đề 2.5 ta suy ra K là khóa của

b) Giả sử K là khóa của theo kết quả của câu a) ta suy ra K là khóa của ta có Kx là khóa của x = (Sx, Gx), Kx = {x(i), i B}, x id.

Ngƣợc lại, nếu Kx là khóa của x = (Sx, Gx), Kx = {x(i), i B}, x id. ta có K là khóa của

Từ đó, áp dụng kết quả của câu a) K là khóa của .

2.2.6. Ví dụ

Cho lƣợc đồ khối = (R, F), với R = (id; A1A2A3A4A5A6); id = {1, 2} F={ {1(1), 2(1), 1(5), 2(5) } {1(4) , 2(4)},

{1(5) , 2(5)} {1(2), 2(2), 1(3), 2(3) } } X1 = {1(1), 2(1), 1(5), 2(5), 1(6), 2(6)};

X2 = {1(6), 2(6)} Tính (X1)+Fh, (X2)+Fh

Bài giải

Theo hệ quả 2.3 về công thức tính bao đóng cho mọi tập thuộc tính (X1)+Fh = X1( )+Fh\X1 Ta tính 1 = (S1, G1) = \X1 G1 = F\X1={ {1(4) , 2(4)}, {1(2), 2(2), 1(3), 2(3) } (loại), { {1(2), 2(2), 1(3), 2(3) } } { {1(2), 2(2), 1(3), 2(3), 1(4) , 2(4) } Từ đây ta tính đƣợc ( )+Fh/X1= {1(2), 2(2), 1(3), 2(3), 1(4) , 2(4) } (X1)+Fh = X1( )+Fh\X1 = {1(1), 2(1), 1(5), 2(5), 1(6), 2(6), 1(2), 2(2), 1(3), 2(3), 1(4), 2(4) } = R (X2)+Fh = X2( )+Fh\X2 Ta tính 2 = (S2, G2) = \X2 G2={ {1(1), 2(1)} {1(4) , 2(4)}, {1(2), 2(2), 1(3), 2(3) } (loại), {1(2), 2(2), 1(3), 2(3) } } = { {1(1), 2(1)} {1(4) , 2(4)}, {1(2), 2(2), 1(3), 2(3) }} Từ đây ta tính đƣợc ( )+Fh/X2= {1(2), 2(2), 1(3), 2(3)} (X2)+Fh = X2( )+Fh\X2 = {1(2), 2(2), 1(3), 2(3), 1(6), 2(6)} Kết luận chƣơng 2

Trong chƣơng này, luận văn đã trình bày một số vấn đề về phép dịch chuyển trong LĐQH và lƣợc đồ khối và giới thiệu cácthuật toán dịch chuyển

lƣợc đồ khối trong mô hình dữ liệu dạng khối. Đƣa ra phƣơng pháp biểu diễn bao đóng và khóa của lƣợc đồ khối thông qua phép dịch chuyển.

CHƢƠNG 3. CHƢƠNG TRÌNH THỬ NGHIỆM

Luận văn tập trung nghiên cứu tìm hiểu mô hình cơ sở dữ liệu dạng khối và phép dịch chuyển lƣợc đồ khối. Việc cài đặt chƣơng trình thử nghiệm

Một phần của tài liệu (LUẬN văn THẠC sĩ) phép dịch chuyển lược đồ khối trong mô hình dữ liệu dạng khối (Trang 51)

Tải bản đầy đủ (PDF)

(77 trang)