Các tính chất của phụ thuộc đa trị

Một phần của tài liệu Một số phụ thuộc dữ liệu trong cơ sở dữ liệu dạng khối (Trang 32 - 92)

Cho l−ợc đồ quan hệ R(U) với U= {A1, A2, …, An} là tập các thuộc tính và X, Y, Z, W U. ⊆

Tính chất 1:

X→→Y khi và chỉ khi X→→Z với X ∪Y ∪ Z = U.

Tính chất 2: Nếu X→→Y và V ⊆ W thì WX→→ VY. Tính chất 3: Nếu X→→Y và Y→→Z thì X→→Z \ Y. Tính chất 4 Nếu X → Y thì X→→Y. Tính chất 5 Nếu X→→Y và W → Z với Z Y và W⊆ ∩ Y = ∅ thì X → Z.

Các luật suy dẫn đ−ợc đối với phụ thuộc đa trị:

Tính chất 6:

Tính chất 7: Nếu X→→Y và WY→→Z thì WX→→Z \ WY. Tính chất 8: Nếu X→→Y và XY→Z thì X→Z \ Y. Tính chất 9: Nếu X→→Y và X→→Z thì X→→ Y∩Z, X→→ Y \ Z, X→→ Z \ Y. 1.10. Kết luận ch−ơng 1

Ch−ơng này đã trình bày một số các 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, phụ thuộc đa trị, khoá, bao đóng và phủ của tập phụ thuộc hàm 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, phủ tối thiểu của tập phụ thuộc hàm cũng đ−ợc trình bà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).

cHƯƠNG 2: MÔ HìNH CƠ Sở Dữ LIệU DạNG KHốI

Để mở rộng mô hình quan hệ, ch−ơng này đ−a ra một mô hình cơ sở dữ liệu khác gọi là mô hình cơ sở dữ liệu dạng khối đ−ợc xây dựng và mô tả trong [3], [4], [5], [6], [13]. Mô hình này phản ánh đ−ợc các dữ liệu ở dạng động, giúp biểu diễn thế giới thực trong quá trình vận động một cách tự nhiên hơn. ý nghĩa của các khái niệm phụ thuộc dữ liệu, khoá, các dạng chuẩn nh−

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

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.

Định nghĩa 2.1 [3], [4]

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 trên R, kí hiệu

r(R), là tập hữu hạn các 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 .

Kí hiệu khối là r(R) hoặc đơn giản là r.

Cho R = (id; A1, A2, ..., An) và r(R) là một khối trên R, khi đó R đ−ợc gọi là l−ợc đồ của khối r(R). Nh− vậy trên cùng một l−ợc đồ khối R có thể xây dựng đ−ợc nhiều khối khác nhau.

Ví dụ 2.1: 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 một cơ quan: 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 thì 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

Hình 2.1: Biểu diễn khối nhân viên NV(R). • 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

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 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 ti

x(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.

r(R2/2009): ma ten luong trinh_do

A01 A 350 ThS

A02 B 300 DH

A03 C 250 CD

Nhận xét 2.1

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

Mệnh đề 2.1 [3], [4]

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

2.3. Khóa của khối

Cho l−ợc đồ khối 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), kí hiệu t(x; Ai), (i = 1 .. n) là giá trị của phần tử t ở thuộc tính Ai tại chỉ số x.

Để đơn giản việc trình bày, đặt x(i) = (x; Ai) với x ∈ id và nh− vậy: t(x(i)) = t( x; Ai) = ti (x), (i = 1 .. n). Từ đó, 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ì kí hiệu: t(X(i)) = {t(y(i))| y(i)∈ X(i)}. Giả sử t1 , t2∈ r(R) với t1 = {ti1 : id → dom(Ai)} i =1.. n , t2 = {ti

2 : id → dom(Ai)} i =1.. n , khi đó định nghĩa khóa của khối r(R) nh− sau:

Định nghĩa 2.2 [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 mọi t1, t2 ∈ r và t1≠t2 đề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à siêu khóa của khối r.

Mệnh đề 2.2 [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 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.3 [5], [13]

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.4 [5], [13]

mà {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.5 [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 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}.

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 là 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).

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; Aì 1, 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.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 s, khối này có khung R S = {id

id

ì

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 = (t1 r , t2 r , ..., tn r), ts = (t1 s , t2 s , ..., tn s),

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 ìids = {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 dạng:

(ti1, ti2, ..., tih) , trong đó: tij ∈ {t1, t2, ..., tn} với 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 logic 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 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 đó:

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.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).

2.5. Phụ thuộc hàm

Sau đây, để cho đơn giản ta sử dụng lại các kí hiệu :

x(i) = (x ; Ai) ; id(i) = {x(i) ⎜x ∈ id}.Ta gọix(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.3 [13]

Cho R = (id; A1, A2, ...,An), r(R) là một khối trên R, , 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 t

n i i 1 ) ( id Y X, = ⊆ 1, t2∈ R và t1 ≠ t2 sao cho t1(X) = t2(X) thì t1(Y) = t2(Y).

Ví dụ 2.3: cho khối Canbo(id, A1, A2, A3) (hình 2.2):

A1 A2 A3 CB1 b1 c1 CB1 b1 c1 CB1 b1 c1 CB2 b2 c2 CB2 b2 c2 CB2 b2 c2 CB3 b3 c3 3 CB3 b3 c3 2 CB3 b3 c3 1 id = {1,2,3}, trong đó:

1: năm 2007 ; 2: năm 2008 ; 3: năm 2009

A1: Mã cán bộ ; A2: Bậc l−ơng ; A3: Mức bảo hiểm XH Với khối đã cho ở trên, ta thấy có 2 phụ thuộc hàm là :

X Y và Z Y với X = {1(1),2(1),3(1)}={(1,A1),(2,A1),(3,A1)}, Y={1(3),2(3),3(3)}={(1,A3),(2,A3),(3,A3)},

Z={1(2),2(2),3(2)}={(1,A2),(2,A2),(3,A2)}

i 1=

Hệ tiên đề cho các phụ thuộc hàm:

• X → Y nếu Y ⊆ X • X → Y ⇒ XZ → Y

• X → Y và YZ → W ⇒ XZ → W

Phụ thuộc hàm đ−ợc suy diễn logic 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 X,Y ⊆ . 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.

n i i 1 ) ( id =

Định nghĩa 2.4 (bao đóng của tập phụ thuộc hàm) [13]

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 và t1 ≠ t2 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

n (i)

X,Y ⊆ ∪id

Cho R = (id; A1, A2 ,.., An), r(R) là một khối trên R, , X → Y là kí hiệu 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). • Phụ thuộc hàm X → Y, ( ∪n ) trở thành phụ thuộc hàm i 1 i A Y X, = ⊆ 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.5 [13]

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 , ta định nghĩa bao đóng của X đối với F, kí hiệu là X ∪n i i 1 ) ( id X = ⊆

+ nh− sau: X+ = {x(i)| X → x(i) ∈ F+} với x ∈ id, i = 1.. n.

Một phần của tài liệu Một số phụ thuộc dữ liệu trong cơ sở dữ liệu dạng khối (Trang 32 - 92)

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

(92 trang)