Khối, lược đồ khối

Một phần của tài liệu Một số tính chất mở rộng của khóa trong mô hình dữ liệu dạng khối (Trang 32)

7. Cấu trúc luận văn

2.1.Khối, lược đồ khối

Khái niệm toán học làm nền tảng cho mô hình cơ sở dữ liệu dạng khối (gọi tắt là mô hình khối) là các khối hiểu theo nghĩa của lý thuyết tập hợp. Khối được định nghĩa như sau:

Đị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ụ 2.1.

Một Công ty bán đồ điện tử có các cử hàng bán Tivi Sony tại các địa điểm khác nhau trên toàn quốc. Các cửa hàng này bán các loại Tivi Sony theo các loại sau: Tivi Sony 21inch, Tivi Sony 32inch,Tivi Sony 37inch. 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 Tivi Sony tại từng cửa hàng ( trên cơ sở 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 cửa hàng này mà công ty điều chỉnh số lượng hàng phân cho mỗi cửa hàng phù hợp hơn. Để đáp ứng yêu cầu trên công ty đã 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, A5), trong đó:

id = 1 / 1 / 2014, 2 / 1 / 2014,....,31 / 5 / 2014, và các thuộc tính là A1 = mach (mã cửa hàng), A2 = 21 inch ( Tivi Sony 21 inch), A2 = 32 inch ( Tivi Sony 32 inch), A3 = 42 inch ( Tivi Sony 42 inch).

Với khối BANHANG ở trên ta thấy:

t1(1/1/2014, 21 inch) = 120, t1(2/1/2014, 21 inch) = 100 t2(1/1/2014, 21 inch) = 80, t2(2/1/2014, 21 inch) = 110 t3(1/1/2014, 21 inch) = 95, t3(2/1/2014, 21 inch) = 105 t1(1/1/2014, 32 inch) = 200, t1(2/1/2014, 32 inch) = 350 t2(1/1/2014, 32 inch) = 250, t2(2/1/2014, 32 inch) = 300 t3(1/1/2014, 32 inch) = 200, t3(2/1/2014, 32 inch) = 250 t1(1/1/2014, 37 inch) = 140, t1(2/1/2014, 37 inch) = 160 t2(1/1/2014, 37 inch) = 200, t2(2/1/2014, 37 inch) = 190 t3(1/1/2014, 37 inch) = 180, t3(2/1/2014, 37 inch) = 210 t1(1/1/2014, 42 inch) = 170, t1(2/1/2014, 42 inch) = 255 t2(1/1/2014, 42 inch) = 260, t2(2/1/2014, 42 inch) = 180 t3(1/1/2014, 42 inch) = 245, t3(2/1/2014, 42 inch) = 310

Trên cơ sở số liệu thu được có thể rút ra nhận xét rằng trong 2 ngày 1 và 2/1/2014 thì CH1 bán được lượng Tivi Sony 21inch nhiều hơn so với cửa CH2 và CH3. Tương tự ta thấy CH3 bán được nhiều Tivi Sony 42 inch hơn cả.

Hình 2.1: Một phần mô hình của khối BANHANG Ví dụ 2.2.

Ta xây dựng khối nhân viên (ký hiệu NV(R)) (hình 2.1) để quản lý nhân viên trong một cơ quan như sau:

Cho lược đồ khối R = ( id; A1, A2, A3, A4 ), trong đó: id = {1/2009, 2/2009, 3/2009, ..., 12/2009, và các thuộc tính là A1 = ma (mã), A2 = ten (tên), A3 = luong (lương), A4 = trinh_do (trình độ).

Với khối NV(R) ở hình 2.1, ta thấy nó gồm 3 phần tử: t1 , t2 , t3 ma ten luong trinh_do

A01 A 500 TS A01 A 350 ThS t1 A01 A 200 DH B02 B 350 DH A02 B 300 DH t2 A02 B 250 DH C01 C 300 DH 3/2009 A03 C 250 CD 2/2009 t3 A03 C 200 CD 1/2009

Khi đó ta có :

- Lương của nhân viên t1 ở thời điểm tháng 1/2009 là : t1(1/2009,luong) = 200.

- Tên của cán bộ t2 vào tháng 2/2009 là : t2(2/2009,ten) = ‘B’. - Trình độ của cán bộ t3 vào tháng 2/2009 là :

t3(2/2009,trinh_do) = ‘CD’.

- Mã s c a cán b t3 vào tháng 3/2009 là : t3(3/2009,ma) = 'C01'. 2.2 Lát cắt [5]

Định nghĩa 2.2

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ụ 2.2: Với khối NV(R) đã cho ở trên , R = (id; A1, A2, A3, A4) trong đó : id = {1/2009, 2/2009, 3/2009, ... , 12/2009}

A1 = ma, A2 = ten, A3 = luong, A4 = trinh_do . Nếu x = 2/2009  id thì lát cắt r(R2/ 2009) có dạng như sau :

r(R2/2009) : ma ten luong trinh_do A01 A 350 ThS (adsbygoogle = window.adsbygoogle || []).push({});

A02 B 300 DH

A03 C 250 CD

Mệnh đề 2.1 [4]

Cho 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) với R = ({x}; A1, A2, .... , An).

Mệnh đề 2.2 [4]

Cho 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ệ duy nhất biểu diễn họ {r(Rx)}xid các 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 .

Chứng minh:

- Với khối r(R) cho trước thì họ quan hệ phải tìm chính là họ {r(Rx)}xid các lát cắt của khối r(R).

- Điều ngược lại không đúng, để khẳng định ta xét trường hợp sau : Giả sử ta có một họ gồm 2 quan hệ {r1(A,B,C), r2(A,B,C)} :

r1 : A B C r2 : A B C

a1 b1 c1 a’1 b’1 c’1

a3 b3 c3 a’2 b’2 c’2

a’3 b’3 c’3

Khi đó ta có chẳng hạn các khối sau đây nhận họ hai quan hệ {r1, r2} nói trên là họ các lát cắt của nó :

r(R) s(R) a’1 b’1 c’1 a’1 b’1 c’1 a1 b1 c1 a1 b1 c1 a’2 b’2 c’2 a’2 b’2 c’2 a1 b1 c1 a3 b3 c3 a’3 b’3 c’3 a’3 b’3 c’3 a3 b3 c3 a3 b3 c3 t(R) a’1 b’1 c’1 a1 b1 c1 a1 b1 c1 a’2 b’2 c’2 a1 b1 c1 a1 b1 c1 a’3 b’3 c’3 a3 b3 c3 a3 b3 c3 Hình 2.3: Biểu diễn lát cắt

Như vậy sự tồn tại của khối có họ các lát cắt là họ các quan hệ {r1 , r2} nói trên là không duy nhất.

2.3. Khóa của khối [5].

Cho R = ( id ; A1, A2, ... , An ), r là một khối trên R. Với mỗi x  id, t  r(R), t = ( t1, t2, ..., tn), ta kí hiệu t(x;Ai), ( i =1..n), là giá trị của phần tử ở thuộc tính Ai tại chỉ số x.

Để thuận lợi cho việc trình bày, ta đặt xi = (x; Ai), x  id và như vậy: t(x(i) ) = t( x; Ai ) = ti (x), ( i = 1..n ) . Từ đó, ta kí hiệu :

id(i) = { x(i) │ x  id } , như vậy id(i) = {(x; Ai )│x  id}. Với X(i) id(i) thì ta kí hiệu : t(X(i)) = {t(yi)| y(i)  X(i) }. Giả sử t1 , t2  r(R) với t1 = { ti1 : id  dom(Ai) } i =1.. n,

t2 = { ti2 : id  dom(Ai) } i =1.. n,

khi đó ta định nghĩa khóa của khối r(R) như sau : Định nghĩa 2.3. [5], [13]

Khóa của khối r trên lược đồ khối R = ( id; A1, A2, ... , An ) là một tập K = { X(i1), X(i2), ..., X(ih) }, trong đó X(ik)  , X(ik)  id(ik) , (k = 1.. h), thỏa mãn hai tính chất :

a-Với bất kì 2 phần tử t1, t2  r đều tồn tại một X(ik) K sao cho : - t1ik (X(ik) )  t2ik(X(ik) )

Nói một cách khác, không tồn tại 2 phần tử mà : - t1ik (X(ik) ) = t2ik(X(ik) ) ,  k = 1..h .

b-Với bất kì tập K’ nào, K’ = { X(i1’), X(i2’), ..., X(ih’)}, với X(ik’) X(ik), (k =1..h) và tồn tại X(im’) X(im), với m  {1,2, ..., h} đều không có tính chất a) nói trên .

Nếu tập K là khóa của khối r(R) thì mọi tập

K” = { X(i1’’), X(i2’’), ..., X(ih’’)}, trong đó X(ik)  X(ik’’) , ( k = 1..h), được gọi là một siêu khóa của khối r.

Mệnh đề 2.3. [5], [13] (adsbygoogle = window.adsbygoogle || []).push({});

Cho lược đồ khối R = (id; A1, A2, ... ,An), r(R) là một khối trên R. Khi đó với x  id mà ta có { x(i1), x(i2), ... ,x(ik) } là khóa của lát cắt r(Rx ) thì ta cũng có với mọi y  id , { y(i1), y(i2), ... ,y(ik) } là khóa của lát cắt r(Ry ) hay nói một cách khác { Ai1, Ai2, ... ,Aik } là khóa của quan hệ r(A1, A2, ... , An).

Mệnh đề 2.4

Cho lược đồ khối R = (id; A1, A2, ...,An), r(R) là một khối trên R, id = {x}. Khi đó r(R) trở thành quan hệ r(A1, A2, ... , An) và mỗi khóa K = { X(i1),

X(i2), ..., X(ih) }, trong đó X(ik)  id(ik), (k = 1, 2, ..., h ) của khối r(R) lại trở thành khóa của quan hệ r(A1, A2, ... , An ).

Mệnh đề 2.5 [5], [13]

Cho lược đồ khối R = (id; A1, A2, ... ,An), r(R) là một khối trên R. Khi đó với x  id mà ta có { x(i1), x(i2), ... ,x(ik) } là khóa của khối r(R) thì ta cũng có với mọi y  id , { y(i1), y(i2), ... ,y(ik) } là khóa của lát cắt r(Ry) hay nói một cách khác { Ai1, Ai2, ... ,Aik } là khóa của quan hệ r(A1, A2, ...,An) .

Mệnh đề 2.6 [5], [13]

Cho lược đồ khối R = (id; A1, A2, ...,An), r(R) là một khối trên R. Khi đó nếu với x  id nào đó mà ta có { x(i1), x(i2), ... ,x(ik) } là khóa của lát cắt r(Rx ) thì { id(i1), id(i2), ... , id(ik) } là khóa của khối r(R).

2.4. Đại số quan hệ trên khối

Cho r là một khối trên lược đồ khối R = (id; A1, A2, ..., An), ở đây ta giả thiết rằng r là một khối gồm một tập hữu hạn các phần tử. Cũng tương tự như đại số quan hệ trong mô hình cơ sở dữ liệu quan hệ, ở đây các phép toán của đại số quan hệ lại được áp dụng cho các khối; bên cạnh đó còn có thêm phép toán mới được xây dựng đó là : tích Đề- các theo tập chỉ số[6]. Đối với các phép hợp, giao và trừ thì hai khối tham gia phải là khả hợp (nghĩa là chúng có cùng một lược đồ khối).

2.4.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 r 

s là một khối gồm các phần tử thuộc một trong hai khối r và s đã cho. Ta có:

2.4.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 } . 2.4.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 }.

Ta có mối quan hệ giữa phép giao và phép trừ : r  s = r - ( r - s ).r v 2.4.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 x 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.4.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

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 , i = 1..n ,

mỗi ánh xạ này được cảm sinh từ 2 á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ì (adsbygoogle = window.adsbygoogle || []).push({});

ta được : trsj1  r và trsj2  s , và r xid s = { t | tj1  r và tj2  s } . 2.4.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 , Aij  { A1, A2, ...., An }, j = 1..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 có dạng :

(ti1, ti2, ..., tih ) , trong đó : tij  { t1, t2, ..., tn }, j = 1..h , id’ và ( t1, t2, ..., tn )  r .

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

P(r) = { ( ti1, ti2, ..., tih ) | tij  {t1,t2,...,tn }, j = 1..h, (t1,t2, ..., tn )r } id’

2.4.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 lôgic trong F là : , , . .

Biểu diễn hình thức của phép chọn có dạng : F(r) = { t  r | F(t) } trong đó F(t) là giá trị của biểu thức Boole F tại phần tử t  r. 2.4.8. Phép kết nối

Cho 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 đó :

{ 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ệ [6].

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.4.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..h . 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 = ( t1, t2, ..., tn-h , u1, u2, ..., uh ).

Biểu diễn hình thức của phép chia có dạng : r  s = { t |  u  s, tu  r } . 2.5. Phụ thuộc hàm

Sau đây, để cho đơn giản ta sử dụng các kí hiệu: x(i) = (x; Ai ) ; id(i) = {x(i) | x  id}.

Ta gọi x(i) (x  id, i = 1..n) là các thuộc tính chỉ số của lược đồ khối R = (id; A1,A2,...,An ).

Định nghĩa 2.4 [5] (adsbygoogle = window.adsbygoogle || []).push({});

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

n i i 1 ) ( id Y X, 

 , X  Y là kí hiệu một phụ thuộc hàm. Một khối r thoả X  Y

nếu với mọi t1, t2  R sao cho t1(X) = t2(X) thì t1(Y) = t2(Y). Phụ thuộc hàm được suy diễn từ tập phụ thuộc hàm F

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à X  Y là một phụ thuộc hàm với n i i 1 ) ( id Y X,   . Nói rằng X  Y được

suy diễn logic từ F nếu với mỗi khối r xác định trên R thỏa các phụ thuộc hàm trong F thì cũng thỏa X  Y. Kí hiệu là:

F│= X  Y

Định nghĩa 2.5 (Bao đóng của tập phụ thuộc hàm)

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 thoả 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 ). Nhận xét 2.2

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

i i 1 ) ( id Y X,   ,

X  Y là kí hiệu một phụ thuộc hàm. Giả sử r(R) thoả 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, ( n i 1 i A Y X,   ) trở thành phụ thuộc hàm trong

mô hình dữ liệu quan hệ.

2.6. Bao đóng của tập thuộc tính chỉ số Định nghĩa 2.6.[7] Định nghĩa 2.6.[7]

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 n

i i 1 ) ( id X 

 , ta định nghĩa bao đóng của X đối với F kí

Cho lược đồ khối R=(id; A1, A2,..., An ), ta xác định tập các phụ thuộc hàm Fh  Fhx trên R như sau:

Một phần của tài liệu Một số tính chất mở rộng của khóa trong mô hình dữ liệu dạng khối (Trang 32)