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)}xid 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à rs, 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ó:
rs = { t | t r hoặc t s }. Ví dụ:
r s rs
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 rs, 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ó : rs = { 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ừ: rs = 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 rs 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.