Thuật toán dịch chuyển lược đồ quan hệ

Một phần của tài liệu Nghiên cứu bao đóng trong mô hình dữ liệu dạng khối (Trang 34)

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: - LDQH 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);

24 Return (V,G);

End Translation.

Thủ tục Natural_Reduced(G) đưa tập PTH 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 có vế trái và vế phải rời nhau và gộp các PTH có cùng vế trái.

1.7.3. Biểu diễn bao đóng của phép dịch chuyển LĐQH

Định lý : Cho LDQH a = (U,F) và hai tập con không giao nhau X và Y trong

U, khi đó

(XY)+F = XY+ F\X

Hệ quả : (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

Ví dụ : Cho LĐQH a = (U,F), U = ABCDEH, F= {AB → D, BC → E, E → BC}. Tính (AHE)+ và E+ ?

Theo hệ quả về công thức tính bao đóng cho một tập thuộc tính • (AEH)+F = AEH()+F\AEH

G = F\AEH = { → D, BC →  (loại), → BC} ≡ {→BCD}. Từ đây ta tính được ()+G = BCD. Do đó (AEH)+ = AHEBCD = U. • 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+ = BCE.

25

KẾT LUẬN CHƯƠNG I

Chương này đã trình bày một số khái niệm cơ bản nhất trong mô hình dữ liệu quan hệ. Trình bày các phép toán cơ bản, các khái niệm về phụ thuộc hàm, bao đóng, khóa cùng với các tính chất của chúng. Ngoài ra các thuật toán tìm khoá, bao đóng và phép dịch chuyển lược đồ trong mô hình dữ liệu quan hệ cũng được trình bày trong chương này.

Mô hình dữ liệu quan hệ có tính độc lập dữ liệu cao, dễ dàng sử dụng và còn cho phép dễ dàng mô phỏng các hệ thống thông tin đa dạng trong thực tiễn.

Trong mô hình này, cơ sở dữ liệu được xem như là một tập hợp các quan hệ, mỗi quan hệ có thể được hình dung một cách trực quan như là một bảng chữ nhật gồm có các hàng và các cột. Ở bảng này mỗi cột ứng với một thuộc tính, mỗi hàng được gọi là một bộ. Do các quan hệ có cấu trúc phẳng (tuyến tính) nên mô hình này sẽ rất khó khăn khi biểu diễn các dữ liệu có tính chất động (phi tuyến).

26

CHƯƠNG II : MÔ HÌNH DỮ LIỆU DẠNG KHỐI 2.1.Khối, Lược đồ khối, Lát cắt [1,5,8]:

2.1.1.Khối, Lược đồ khối :

Định nghĩa 2.1: Gọi R = (id; A1, A2, .... , An) là một bộ hữu hạn các phần tử, trong đó id là tập chỉ số hữu hạn khác rỗng, Ai (i= 1,n ) là các thuộc tính. Mỗi thuộc tính Ai ( i=1,n) có miền giá trị tương ứng là dom(Ai). Một khối r trên tập R, kí hiệu r(R) gồm một số hữu hạn phần tử mà mỗi phần tử là một họ các ánh xạ từ tập chỉ số id đến các miền trị của các thuộc tính Ai (i=1,n). Nói một cách khác:

t  r(R)  t = {ti : id dom(Ai)} i =1,n

Ta kí hiệu khối đó là r(R) hoặc r(id; A1, A2,…, An), hoặc kí hiệu đơn giản là r. Khi đó khối r(R) được gọi là có lược đồ khối R. Như vậy trên cùng một lược đồ khối R ta có thể xây dựng được nhiều khối khác nhau

Ví dụ : Công ty HONDA có các đại lý bán xe máy tại các tỉnh thành trong toàn quốc. Các đại lý này cùng bán các loại xe theo mẫu của nhà sản xuất là: Dream II( kí hiệu DII), Wawe S(kí hiệu WS), Lead (kí hiệu Lead), SH mode125 (kí hiệu SH). Mỗi quý công ty lập biểu đồ theo dõi số lượng hàng được bán theo từng chủng loại xe tại mỗi đại lý(trên cơ sở số lượng bán hàng ra hàng ngày). Căn cứ vào các biểu đồ theo dõi của mỗi loại mặt hàng tại các đại lý này mà công ty điều chỉnh số lượng sản phẩm phân cho các đại lý phù hợp hơn. Để đáp ứng yêu cầu trên công ty HONDA đã tiến hành xây dựng khối dữ liệu với tên gọi BANHANG, cụ thể như sau:

Chọn R = (id; A1, A2, A3, A4), trong đó:

id = {1/2013, 2/2013, 3/2013, ..., 12/2013, và các thuộc tính là A1 = madl (mã đại lý), A2 = DII (Dream II), A3 = WS (Ware S), A4 = Lead (Lead),

27

Hình 2.1: Biểu diễn khối BANHANG(R).

Với khối BANHANG(R) ở hình 2.1, ta thấy nó gồm 3 phần tử: t1 , t2 , t3. Khi đó ta có:

 Số lượng xe bán của Đại lý 1 trong tháng 1 là :

Xe DreamII = 80 chiếc, Xe WereS = 40 chiếc, Xe Lead = 20 chiếc. Tháng 2:

Xe DreamII = 140 chiếc, Xe WereS = 70 chiếc, Xe Lead = 30 chiếc. Tháng 3:

Xe DreamII = 120 chiếc, Xe WereS = 60 chiếc, Xe Lead = 25 chiếc.

 Số lượng xe bán của Đại lý 2 trong tháng 1 là :

Xe DreamII = 40 chiếc, Xe WereS = 20 chiếc, Xe Lead = 40 chiếc Tháng 2:

Xe DreamII = 70 chiếc, Xe WereS = 60 chiếc, Xe Lead = 50 chiếc Tháng 3:

Xe DreamII = 50 chiếc, Xe WereS = 30 chiếc, Xe Lead = 40 chiếc

 Số lượng xe bán của Đại lý 3 trong tháng 1 là:

28 Tháng 2:

Xe DreamII = 60 chiếc, Xe WereS = 70 chiếc, Xe Lead = 30 chiếc Tháng 3:

Xe DreamII = 53 chiếc, Xe WereS = 30 chiếc, Xe Lead = 20 chiếc. 2.1.2. Lát cắt

Cho R = (id; A1, A2,...., An), r(R) là một khối trên R. Với mỗi x id ta kí hiệu r(Rx) là một khối với Rx = ({x}; A1, A2, .... , An) sao cho:

tx r(Rx )  tx = { tix = ti }i = 1,n với t  r(R),

x và t = { ti : id  dom(Ai) } i =1,n Ở đây tix(x) = ti(x) với i=1,n.

Khi đó r(Rx ) được gọi là một lát cắt trên khối r(R) tại điểm x. Ví dụ : Với khối BANHANG(R) trên, R = (id, A1,A2,A3,A4)

Trong đó : id = 1/2013, 2/2013, 3/2013,…,12/2013 và các thuộc tính A1= madl; A2= DII; A3= WS, A4 = Lead.

Nếu x = 2/2013  id thì lát cắt r(R2/2013) có dạng như sau: r(R2/2013)

Nhận xét : Cho lược đồ khối R = (id, A1, A2,…,An), r(R) là một khối trên R, với mỗi x id thì lát cắt r(RX) là một quan hệ. Trong trường hợp tập chỉ số id chỉ gồm một phần tử thì r(R) trở thành một quan hệ.

Như vậy mỗi quan hệ r(A1, A2,…,An) là một trường hợp đặc biệt của khối, đó chính là khối r(R) = (x, A1, A2,…,An).

Mệnh đề 2.2 [11]

Madl DII WS Lead

DL1 140 70 30

DL2 70 60 50

29 madl DII t3 t2 t1 2/2013 DL2 DL2 DL3 DL3 50 70 60 53 madl DII t1 t2 1/2013 DL1 DL1 DL2 DL2 120 140 70 50 DII t1 t2 1/2013 2/2013 1/2013 2/2013 DL1 DL1 120 140 DL2 DL2 50 70 DL3 DL3 60 53

Cho lược đồ khối R = (id; A1, A2,…, An), r(R) là một khối trên R, khi đó tồn tại một họ quan hệ ( hiểu theo nghĩa tập hợp) duy nhất biểu diễn họ {r(Rx)}xid là lát cắt của khối r(R). Ngược lại không đúng, nghĩa là với một họ quan hệ cho trước biểu diễn họ các lát cắt của một khối nào đó thì khối tìm được không duy nhất.

2.2. Các phép toán Đại số quan hệ trên khối.[8,10]

Cho r là một khối trên R = (id; A1, A2,…, An ). Cũng tương tự như đại số quan hệ trong mô hình dữ liệu quan hệ, ở đây các phép toán của đại số quan hệ lặp lại được áp dụng cho các khối như: phép hợp, phép giao, phép trừ, phép chiếu, phép chọn, phép kết nối, phép chia, phép nối dài.

Hai khối r và s được gọi là khả hợp nếu chúng có cùng một lược đồ khối. 2.2.1 .Phép hợp

Cho hai khối r và s khả hợp, khi đó hợp của r và s, kí hiệu là rs, là một khối gồm các phần tử thuộc khối r hoặc thuộc khối s đã cho. Ta có:

rs = { t | t r hoặc t s }. Ví dụ:

r s rs

Hình 2. 2.Phép hợp trong khối

30 DL2 DL2 DL3 DL3 50 70 60 53 t3 1/2013 2/2013 DII 2/2013 1/2013 2/2013 1/2013 DL1 DL1 120 140 DL2 DL2 50 70 53 60 DL3 DL3 DL1 DL1 120 140 50 70 DL2 DL2 t2 t1 t3 t2 t1 madl t2 madl DII madl DII Hình 2. 4.Phép trừ trong khối 2.2.2 .Phép giao

Cho hai khối r và s khả hợp, khi đó giao của r và s là một khối, kí hiệu rs, là một khối mà các phần tử của nó thuộc đồng thời cả hai khối r và s đã cho. Ta có : rs = { t | t r và t s }.

Ví dụ :

Hình 2. 3.Phép giao trong khối 2.2.3. Phép trừ

Cho hai khối r và s khả hợp, khi đó hiệu của r và s là một khối, kí hiệu là r - s, là một khối mà các phần tử của nó thuộc r nhưng không thuộc s.

Ta có : r - s = { t | t r và t s }. Ví dụ :

31

Ta có mối quan hệ giữa phép giao và phép trừ: rs = r - ( r - s ). 2.2.4 .Tích đề các

Cho lược đồ khối R = (id; A1, A2,…, An ), S = (id; B1, B2,…, Bm), ở đây { A1, A2,…, An } { B1, B2,…, Bm } = 

Khi đó tích Đề - Các của hai khối r(R) và s(S) là một khối, kí hiệu

r  s, khối này có khung R  S = (id; A1, A2,…, An,B1, B2,…, Bm), mỗi phần tử thuộc khối này là một bộ gồm n + m ánh xạ, trong đó n ánh xạ đầu có dạng một phần tử thuộc r, còn m ánh xạ sau có dạng một phần tử thuộc s

Biểu diễn hình thước của tích Đề - Các có dạng: r  s = {t | t(R) r và t(S) s }. trong đó t = ( t1, t2,…,tn, tn+1,…, tn+m ),t(R) = ( t1, t2,…,tn) và t(S) = ( tn+1,…, tn+m ).

2.2.5. Tích Đề - Các theo tập chỉ số

Cho R = (id; A1, A2,…, An ), S = (id' ; A1, A2,…, An ). Khi đó tích Đề - Các của hai khối r(R) và s(S) theo tập chỉ số là một khối, kí hiệu

r id s, khối này có khung R id S = { id  id' ; A1, A2,…, An }, với id

 id' là kí hiệu tích rời rạc của hai tập chỉ số id và id'. Mỗi phần tử thuộc khối này là một bộ gồm n ánh xạ ( t1, t2,…,tn)

với ti : id  id' Ai với i = 1..n, mỗi ánh xạ này được cảm sinh từ hai ánh xạ thứ I tương ứng của r và s.

Cụ thể hơn, giả sử có 2 phần tử là tr r và ts s: tr = ( t1r, t2r,… tnr,), ts = (t1s, t2s,… tns,),

khi đó ta có ánh xạ cảm sinh của tr và ts, phần tử cảm sinh của tr và ts, kí hiệu là trs.

Gọi j1 : id id  id' ; j2 : id' id  id' là các phép nhúng thì ta được trsj1 r và trsj2 s và r id s = { t | tj1 r và | tj2 s }.

32

2.2.6. Phép chiếu

Cho lược đồ khối R = ( id; A1, A2,…, An ), r là một khối trên R.

Khi đó ta gọi P = ( id; Ai1, Ai2,…, Aih ) là lược đồ con của lược đồ R nếu id' id, Aịj { A1, A2,…, An }, j = l..h.

Một phép chiếu của khối r trên lược đồ con P, kí hiệu p(r)là một khối có lược đồ P và mỗi phần tử thuộc khối này dạng:

Biểu diễn hình thức của phép chiếu có dạng:

p(r)=

2.2.7. Phép chọn

Cho lược đồ khối R = ( id; A1, A2,…, An ) và khối r(R).

Cho một phép chọn nghĩa là ta xây dựng một tập con các phần tử của khối đã cho thỏa mãn biểu thức F cho trước. Biểu thức F được diễn tả bằng một tổ hợp Boole của các toán hạng, mỗi toán hạng là một phép so sánh đơn giản giữa hai biến là hai giá trị điểm của hai ánh xạ thành phần nào đó, hoặc giữa một biến là giá trị điểm của một ánh xạ thành phần và một hằng. Các phép so sánh trong F là <, =, >, , , , còn các phép toán logic trong F là: ,,. Biểu diễn hình thức của phép chọn có dạng:

)} ( | { ) (r t r F t F   

trong đó F(t) là giá trị của biểu thức Boole F tại phần tử t r. 2.2.8. Phép kết nối

Cho lược đồ khối R = ( id; A1, A2,…, An ) và S = ( id; B1, B2,…, Bm )cùng với hai khối r(R) và s(S) tương ứng.Gọi T = ( id; C1, C2,…, Cp ) trong đó:

( ti1, ti2,…, tih ) , trong đó: tij { t1, t2,…,tn}vớij = l..h id' và ( t1, t2,…,tn) r.

{ti1, ti2,…, tih) | tij { t1, t2,…,tn},j= l..h,( t1, t2,…,tn) r}. id'

33

{ C1, C2,…, Cp } = {A1, A2,…, An} {B1, B2,…, Bm }.

Phép kết nối của 2 khối r và s, kí hiệu r s là khối t(T) định nghĩa như sau: t(T) = {t | tr r và ts s sao cho t(R) = tr , t(S) = ts }.

Phép kết nối này cũng gọi là phép kết nối tự nhiên của hai khối r(R) và s(S), đôi khi sử dụng kí hiệu r * s.

Đặc biệt khi các khối r(R) và s(S) có tập chỉ số id trong lược đồ khối của chúng chỉ gồm một phần tử thì các khối này trở thành các quan hệ và phép kết nối tự nhiên của hai khối lại trở thành phép kết nối tự nhiên của hai quan hệ trong mô hình cơ sở dữ liệu quan hệ

Nếu hai tập { A1, A2,…, An } và { B1, B2,…, Bm } không giao nhau thì r * s trở thành tích Đề-Các của hai khối đã cho.

Ta có thể mở rộng khái niệm kết nối như sau:

Giả sử Aik { A1, A2,…, An }, Bik { B1, B2,…, Bm } và

dom(Aik) = dom(Bik), 1 k h ( ở đây Aik và Bik không nhất thiết phân biệt). Khi đó kết nối của r và s theo Ai1, Ai2, …, Aih và Bi1, Bi2, …, Bih là khối t(T), khối này được định nghĩa là:

t(T) = { t | tr r và ts s sao cho t(R) = tr, t(S) = ts, trik = tsik,1 k h } trong đó tr = ( tr1, tr2, …, trn,), ts = ( ts1, ts2, …, tsm,).

Thay cho kí hiệu r s ở đây ta kí hiệu rõ hơn: t(T) = r [ trik = tsik , 1 k h ] s.

2.2.9. Phép chia

Cho hai khối r(id; A1, A2,…, An) và s(id; Ai1, Ai2, …, Aih), trong đó

Aik {A1, A2,…, An} k = 1..n. Khi đó phép chia của khối r cho khối s, kí hiệu rs là một khối gồm các phần tử t = (t1, t2, …, tn-h) sao cho:

u = (u1, u2, …, uh), u s thì phần tử tu r, ở đây phần tử tu có dạng: tu = (11, t2, …, tn-h, u1, u2, …, uh).

34

Biểu diễn hình thức của phép chia r  s = {t | u s, tu r}. 2.2.10. Phép nối dài

Cho 2 khối r(id; A1, A2,…, An) và s(id'; A1, A2,…, An), ở đó nếu id id' mà ta có với t r và k s:

t = (t1, t2, …, tn), k = (k1, k2, …, kn)

thì khi đó ta xây dựng được một phần tử mới có dạng: u = (u1, u2, …, un) với uh: id id' dom(Ah) sao cho:

và kí hiệu: uh = th * id kh, h = 1..n.

Những phần tử u = (u1, u2,…, un) này tạo ra một khối mới, được kí hiệu r * id s gọi là khối nối dài của hai khối r và s.

Phép toán được xây dựng ở trên gọi là phép nối dài của hai khối r và s đã cho. Biểu diễn hình thức của phép nối dài có dạng:

t1 = k1 id id' id id' t2 = k2 id id' id id' ………. tn = kn id id' id id' uh = th, uh = kh, h = l..n, id id' r * id s = {u = ( uj)j = l,n | (uj )j= l,n r và (ujn )j= l,n s} id id'

35

2.3. Phụ thuộc hàm

Định nghĩa 2.8 [8,10]Cho R = (id; A1, A2,…, An ), r(R) là một khối trên R, X, Y n i i id 1 ) ( 

, X Y là kí hiệu một phụ thuộc hàm. Một khối r thỏa X Y nếu với mọi t1, t2 R sao cho t1(X) = t2(X) thì t1(Y) = t2(Y)

2.4. Bao đóng trong mô hình dữ liệu dạng khối : 2.41. Bao đóng của tập phụ thuộc hàm 2.41. Bao đóng của tập phụ thuộc hàm

Định nghĩa 2.9[8,10]

Cho lược đồ khối R = (id; A1, A2,…, An ), F là tập các phụ thuộc hàm trên R Khi đó bao đóng của F kí hiệu F+ được xác định như sau:

F+ = { X Y | F => X Y}.

Nếu X = { x(m)} id(m), Y = { y(k)} id(k) thì ta kí hiệu phụ thuộc hàm X Y đơn giản là x(m) y(k).

Khối r thỏa x(m) y(k) nếu với mọi t1,t2 r sao cho t1(x(m)) = t2(x(m)) thì t1(y(k)) = t2(y(k)).

Trong đó: t1(x(m)) = t1(x; Am), t2(x(m)) = t2(x; Am), t1(y(k)) = t1(y; Ak), t2(y(k)) = t2(y; Ak).

Mệnh đề 2.101[8]

Cho R = (id; A1, A2,…, An ), r(R) là một khối trên R. X, Y n

i i id 1 ) (  , X Y là kí hiệu một phụ thuộc hàm. Giả sử r(R) thỏa phụ thuộc hàm X Y. Khi đó nếu id = {x} thì: r(R) trở thành quan hệ r(A1, A2,…, An) và phụ thuộc hàm X Y,( X,Y n i i A 1 

) trở thành phụ thuộc hàm trong mô hình dữ liệu quan hệ

36

Cho R = (id; A1, A2,…, An ), r(R) là một khối trên R, x(m) id(m), x(k) id(k). Khi đó nếu r thỏa phụ thuộc hàm x(m) x(k) thì đối với mọi y id, r thỏa mãn y(m) y(k).

Mệnh đề 2.12[8]

Cho R = (id; A1, A2,…, An ), r(R) là một khối trên R, x(m), y(m) id(m), x(k), y(k) id(k). Khi đó nếu r thỏa các phụ thuộc hàm x(m) y(m) và x(m) x(k) thì r thỏa x(m) y(k).

2.4.2. Bao đóng của tập thuộc tính chỉ số

Định nghĩa 2.13[8,10]

Cho lược đồ khối R = (id; A1, A2,…, An), F là tập các phụ thuộc hàm trên R. Với mỗi X, Y n i i id 1 ) ( 

, ta định nghĩa bao đóng của X đối với F kí hiệu X+ như sau:

X+ = {x(i), x id, i = 1..n | X x(i) F+}.

Cho lược đồ khối R = (id; A1, A2,…, An), ta kí hiệu tập các phụ thuộc hàm trên R: Fh = {X Y | X =  1 ) (  i i x , Y =  B j j x  ) ( , A, B {1, 2, …, n}, x id}, Fhx=Fn n i i x 1 ) (  = {X Y Fh | X, Y h i i x 1 ) (  }. Thuật toán tìm bao đóng của tập thuộc tính chỉ số

Thuật toán 1:

Vào: Tập thuộc tính X, tập phụ thuộc hàm F và lược đồ khối R. Ra: X+, bao đóng của X đối với F trên R.

Một phần của tài liệu Nghiên cứu bao đóng trong mô hình dữ liệu dạng khối (Trang 34)