1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng điện tử môn tin học: Mô hình dữ liệu quan hệ pot

50 704 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 502,5 KB

Nội dung

Các phép toán trên cơ sở dữ liệu quan hệ-Các phép toán cơ bản nhờ đó là CSDL được thay đổi là • Chèn insert • Loại bỏ delete • Thay đổi change - Trong mô hình quan hệ được nên trên th

Trang 1

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

CƠ SỞ DỮ LIỆU

Trang 2

I Các khái niệm cơ bản

II Các phép toán cơ bản

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 3

I Các khái niệm cơ bản

- Các thuộc tính của đối tượng sẽ nhận các giá trị trong miền.

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 4

1 Quan hệ

* Tích đề các của các miền

- Gọi D 1 , D 2 , D 3 , …, Dn là n miềm Tích đề các của n miền là D 1 x D 2 x

D 3 x …x D n là tập tất cả n bộ (n-tuples) (V 1 , V 2 ,…, V n ) sao cho V i thuộc D i với i = 1 n.

-Ví dụ, với n = 2, D1= {0,1}, D2 = {a,b,c}

 Tích đề các của D1 x D2 = {(0,a), (0,b), (0,c),(1,a), (1,b), (1,c)}

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 5

1 Quan hệ

* Quan hệ (Ralation)

- Quan hệ là một tập con của tích đề các của một hoặc nhiều miền.

Như vậy ta có thể xem quan hệ là bảng 2 chiều (bảng quan hệ) có

các dòng và các cột:

• Các cột ứng với các miền.

• Các dòng ứng với các bộ của tích đề các.

- Do tích chất của tích đề các, thứ tự các cột cũng như thứ tự các dòng trong bảng là không quan trọng.

* Thuộc tính (Atribute)

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 6

1 Quan hệ

* Định nghĩa quan hệ một cách hình thức

Định nghĩa 1: Gọi R = {A 1 ,…, A n } là tập hữu hạn các thuộc tính, mỗi thuộc tính A i với i = 1 n có miền giá trị tương ứng là dom(A i ) Khi đó r

là quan hệ xác định trên tập thuộc tính R ký hiệu là r(R) hoặc r(A 1 ,

…,A n ) nếu r là tập con của tích đề các.

r dom(A1 )xdom(A 2 )x…xdom(A n )

 Với định nghĩa quan hệ này thì chúng ta gọi R là sơ đồ (lược đồ)

quan hệ và nói quan hệ r xác định trên sơ đồ (lược đồ) quan hệ R.

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 7

1 Quan hệ

- Ví dụ: Hình 1 cho thấy quan hệ NHAN_VIEN bao gồm các thuộc tính HO_TEN, NAM_SINH, NOI_LAM_VIEC và LUONG

 Khi đó t1 = (Lê văn A, 1960, Viện KHNV, 425) là một bộ của quan

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 8

2 Khóa (key)

Định nghĩa 2.1: Khóa của một quan hệ r trên tập thuộc tính R={A 1 ,

…,A n } là một tập con K{A 1 ,…,A n } thỏa mãn tính chất sau:

-Với bất kỳ 2 bộ t1, t2 thuộc r đều tồn tại một thuộc tính A thuộc K sao

cho t1(A) ≠ t2(A)

-Nói cách khác, không tồn tại 2 bộ mà có giá trị bằng nhau trên mọi

thuộc tính của K Khi đó ta có thể viết t1(K)≠t2(K) Do vậy mỗi giá trị của K là xác định duy nhất.

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 9

2 Khóa (key)

- Để có thể định nghĩa khóa một cách tốt hơn, lưu ý rằng, nếu K’ là khóa của quan hệ r(A1,…,An) thì với mọi K sao cho K’ K, K cũng là khóa của

r, nghĩa là bất kỳ t1, t2 thuộc r từ t1(K’)≠t2(K’) luôn có t1(K)≠t2(K)

Định nghĩa 2.2: Khóa tối thiểu của quan hệ r xác định trên tập thuộc

tính R là tập con K R sao cho bất kỳ 2 bộ khác nhau t 1 , t 2 thuộc r luôn thỏa t 1 (K)≠t 2 (K) và bất kỳ tập con thực sự K’ của K đều không có tính chất đó

- Thông thường người ta lựa chọn một khóa tối thiểu tốt nhất làm khóa chính của quan hệ, các khóa tối thiểu khác được xem là khóa dự

phòng

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 10

2 Khóa (key)

Định nghĩa 2.3: Một tập con K R được gọi là khóa ngọai của quan hệ r

xác định trên tập thuộc tính R tham chiếu đến quan hệ r’ nếu K là khóa chính của quan hệ r’.

- Ví dụ, Ta có quan hệ HANG_HOA như sau:

Trong quan hệ này thì MSMH là khóa Mỗi giá trị MSMH đều xác

định duy nhất một loại mặt hàng trong quan hệ HANG_HOA

I Các khái niệm cơ bản

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 11

II Các phép toán trên cơ sở dữ liệu quan hệ

-Các phép toán cơ bản nhờ đó là CSDL được thay đổi là

• Chèn (insert)

• Loại bỏ (delete)

• Thay đổi (change)

- Trong mô hình quan hệ được nên trên thì các phép toán này đước áp

dụng cho từng bộ của các quan hệ lưu trữ trong máy.

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 12

1 Phép chèn (INSERT)

- Phép chèn là phép thêm một bộ vào quan hệ r(A1,…, An) có dạng r = r t.

- Nó có dạng: INSERT(r; A 1 =d 1 , A 2 =d 2 ,…,A n =d n ) Trong đó Ai với i=1 n

là tên của các thuộc tính và di thuộc vào dom(Ai) là các giá trị thuộc miền trị tương ứng của thuộc tính Ai.

- Ví dụ: Thêm một bộ t4 = (Vũ văn tần, 1960, Trường ĐHBK, 425) vào quan hệ NHAN_VIEN trong hình 1 như sau:

INSERT(NHAN_VIEN; HO_TEN = Vũ văn tần, NAM_SINH =

1960, NOI_LAM_VIEC = Trường ĐHBK, LUONG = 425).

- Nếu xem thứ tự các trường là cố định, khi đó ta có thể biểu diễn phép chèn như sau:

INSERT(r; d1,d2,…,dn).

II Các phép toán trên cơ sở dữ liệu quan hệ

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 13

1 Phép chèn (INSERT)

- Kết quả của phép chèn có thể gây ra một số sai sót với những

lý do sau:

II Các phép toán trên cơ sở dữ liệu quan hệ

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

•Bộ mới được thêm vào là không phù hợp với lược đồ quan hệ cho trước

•Một số giá trị của một số thuộc tính nằm nằm ngoài miền giá trị của thuộc tính đó

•Giá trị khóa của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ

Trang 14

2 Phép loại bỏ (DEL)

- Phép loại bỏ là phép xóa một bộ ra khỏi quan hệ cho trước, nó có dạng: r=r – t

DEL (r;A 1 =d 1 ,A 2 =d 2 ,…,A n =d n ) hoặc DEL (r; d 1 ,d 2 ,…,d n ).

- Ví dụ, cần loại bỏ t1 từ quan hệ NHAN_VIEN trong hình 1 như sau:

DEL (NHAN_VIEN; Lê văn A, 1960, Viện KHNV, 425)

II Các phép toán trên cơ sở dữ liệu quan hệ

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 15

2 Phép loại bỏ (DEL)

- Tuy nhiên không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin

về cả bộ Nếu có giá trị về bộ đó tại thuộc tính khóa K={B1,…,Bn}khi đó phép loại bỏ chỉ cần viết:

DEL (r; B 1 =e 1 , B 2 =e 2 ,…,B i =e i ).

- Ví dụ, cần loại bỏ sắt phi 6 ra khỏi quan hệ HANG_HOA (hình 2), khi

đó chỉ cần viết:

DEL (HANG_HOA; MSMH=10101)

II Các phép toán trên cơ sở dữ liệu quan hệ

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 16

II Các phép toán trên cơ sở dữ liệu quan hệ

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 17

III Tổ chức dữ liệu vật lý

1 Mô hình tổ chức bộ nhớ ngoài

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

4 Tổ chức dữ liệu dạng B-cây (Balanced trees) (cây cân bằng)

Trang 18

III Tổ chức dữ liệu vật lý

1 Mô hình tổ chức bộ nhớ ngoài

- Bộ nhớ ngoài được phân chia thành các khối vật lý có kích cỡ như

nhau Mỗi khối chiếm khoảng 512 bytes đến 4090 bytes và được đánh

địa chỉ khối Địa chỉ này là địa chỉ tuyệt đối trên đĩa.

- Mỗi tệp dữ liệu lưu trữ trên đĩa sẽ chiếm một hoặc nhiều khối, mỗi khối chứa một hoặc nhiều bản ghi Việc thao tác với các tệp dữ liệu sẽ thông qua tên của tệp mà thực chất là thông qua địa chỉ tuyệt đối của các khối.

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 19

1 Mô hình tổ chức bộ nhớ ngoài

- Các bản ghi đều có địa chỉ và thường được xem là địa chỉ tuyệt đối của byte đầu tiên của bản ghi hoặc là địa chỉ của khối chứa bản ghi đó.

- Địa chỉ của các bản ghi hoặc các khối thường được lưu ở một tệp hoặc một vị trí nào đó để khi cần, qua đó có thể truy nhập tới dữ liệu cần thiết Chỉ dẫn đó được gọi là con trỏ (pointer)

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 20

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.1 Tổ chức tệp dữ liệu

- Khái niệm hàm băm: Nếu mỗi bản ghi đều có một khóa là giá trị số

(ví dụ là x), hàm băm h(x) (đối số là x) nhận một giá trị trong khoảng [0,k] với k là một giá trị nguyên dương nào đó (thường lấy k là một số

nguyên tố) khi đó ta xác định hàm băm như sau: h(x) = x mod k.

- Tư tưởng cơ bản của tổ chức tệp băm là phân chia tập hợp các bản ghi của tệp dữ liệu thành các cụm Mỗi cụm bao gồm một hoặc nhiều khối Mỗi khối chứa một số lượng cố định các bản ghi.

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 21

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.1 Tổ chức tệp dữ liệu

- Mỗi cụm ứng với một địa chỉ băm Địa chỉ băm được đánh số từ 0 tới

k-1 Ở đầu mỗi khối đều chứa con trỏ tới khối tiếp theo trong cụm, khối cuối cùng trong cụm chứa con trỏ rỗng

- Có một bảng chỉ dẫn cụm chứa k con trỏ, mỗi con trỏ ứng với mỗi

cụm, đó là địa chỉ của khối đầu tiên trong cụm

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 22

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.1 Tổ chức tệp dữ liệu

- Ví dụ, hình 3 là mô hình tổ chức tệp băm với k cụm:

•Cụm 0 có 2 khối b1 và b2 Khối b2 có con trỏ rỗng “Null”.

Trang 23

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.1 Tổ chức tệp dữ liệu

- Nếu bảng chí dẫn có kích thước nhỏ thì có thể lưu ở bộ nhớ trong,

ngược lại phải lưu ở bộ nhớ ngoài

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 24

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.2 Các thao tác trên tổ chức tệp băm

2.2.1 Tìm kiếm một bản ghi

- Đê tìm bản ghi có khóa x trước hết ta phải tính hàm băm h(x).

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

- Giả sử h(x) = i, i sẽ là địa chỉ băm của cụm i

Tìm trong khối này xem liệu có bản ghi có khóa x hay không, theo con trỏ ở đầu khối tìm đến khối tiếp theo cho tới khi tìm được bản ghi

mong muốn hoặc tới khối cuối cùng của cụm i mà không có bản ghi đó

- Trong bảng chỉ dẫn cụm cho biết con trỏ tới khối đầu tiên (nếu có)

tương ứng với i

Trang 25

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.2 Các thao tác trên tổ chức tệp băm

2.2.2 Thêm một bản ghi

- Giả sử cần thêm bản ghi có khóa x vào tệp, thủ tục được thực hiện giống như việc tìm kiếm một bản ghi:

 Nếu trong tệp đã có một bản ghi có trùng khóa x chứng tỏ bản ghi mới là sai.

 Nếu không có bản ghi trùng khóa, bản ghi có khóa x được thêm vào khối đầu tiên trong cụm còn chỗ trống

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

 Nếu không còn chỗ trống nào trong mọi khối của cụm thì phải tạo thêm một khối mới, con trỏ null của khối cuối cùng được trỏ sang khối mới này Trong trường hợp này thì bản ghi mới sẽ là bản ghi đầu tiên của khối vừa được thiết lập và khối này trở

Trang 26

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.2 Các thao tác trên tổ chức tệp băm

2.2.3 Xóa một bản ghi

-Để xóa một bản ghi có khóa x, ta cũng sử dụng thủ tục tìm bản ghi

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

•Nếu bản ghi thuộc một khối nào đó có nhiều bản ghi khác, khi đó bản ghi có khóa x được loại bỏ

•Nếu bản ghi đó là duy nhất trong khối khi đó sẽ đồng thời việc giải phóng khối khỏi cụm chứa khối

Trang 27

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.2 Các thao tác trên tổ chức tệp băm

2.2.4 Sửa bản ghi

- Giả sử cần sửa một số trường của 1 bản ghi có khóa x

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

• Nếu trường cần sửa có tham gia trong khóa x, việc sửa sẽ loại bỏ bản ghi này và thêm vào bản ghi mới cho tệp

•Nếu trường cần sửa không thuộc khóa, sau khi sử dụng thủ tục tìm bản ghi cần thiết, tiến hành sửa giá trị trong các trường

Trang 28

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

- Cho quan hệ CUNG_CAP(S#, SNAME, STATUS, CITY) Khi đó mỗi bản ghi gồm:

•S#: Có kiểu số nguyên và chiếm 4 bytes và là trường khóa

•SNAME: Có kiểu ký tự chiếm 30 bytes

•STATUS: Có kiểu số nguyên chiếm 4 bytes

•CITY: Có kiểu ký tự chiếm 40 bytes

- Giả sử bây giờ ta lưu trữ tệp CUNG_CAP với 16 bản ghi, mỗi bản ghi chiếm 78 bytes theo tổ chức tệp băm với số cụm là 5

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 29

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

- Chúng ta sử dụng hàm băm h tác động lên giá trị khóa là một số nguyên như sau: h(x)=x mod5 với x là giá trị khóa cùa bản ghi Tổ chức băm được chỉ ra trong hình 4.

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 30

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

- Giả sử bây giờ chúng ta muốn thêm một bản ghi có khóa 32

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

•Trước hết chúng ta thực hiện tìm kiếm bản ghi có giá trị khóa là 32 Để tìm kiếm bản ghi này, ta tính hàm băm h(32) = 32 mod 5 =2

•Tra cứu bản chỉ dẫn cụm chúng ta biết con trỏ tới khối đầu tiên của cụm

có địa chỉ băm là 2 Ta thực hiện tìm kiếm trong cụm này và không có Như vậy bản ghi này chưa tồn tại Chúng ta sẽ thêm nó vào khối đầu tiên trong cụm còn chỗ trống (hình 5)

Trang 31

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 32

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

-Giả sử bây giờ chúng ta muốn xóa bản ghi có khóa 64.

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

• Trước hết chúng ta thực hiện tìm kiếm bản ghi có giá trị khóa là 64

•Ta tính hàm băm h(64)= 64mod5=4

•Tra cứu bảng chỉ dẫn cụm ta thấy con trỏ trỏ tới khối đầu tiên của cụm

có địa chỉ băm là 4

•Thực hiện tìm kiếm ta thấy 64 có ngay trong khối đầu tiên của cụm và bản ghi này thuộc một khối có nhiều bản ghi khác nữa Do đó bản ghi này được loại bỏ (hình 6)

Trang 33

2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)

2.3 Ví dụ

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Trang 34

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

Là được áp dụng phổ biến nhất trong các hệ cơ sở dữ liệu.

Trang 35

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

- Tệp chỉ số bao gồm các cặp (k,d) trong đó k là giá trị của

khóa, d là địa chỉ của khối (hay con trỏ khối)

- Các cặp này được sắp xếp theo giá trị của khóa (hình 7)

Trang 36

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

3.1 Tổ chức tệp dữ liệu

Trang 37

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

3.1 Tổ chức tệp dữ liệu

- Mỗi khối trong tệp dữ liệu chính chứa một số lượng bản ghi

cố định và được đại diện bởi một cặp (k,d) trong tệp chỉ số, trong đó k là giá trị khóa của bản ghi đầu tiên trong khối và d

là địa chỉ khối.

- Trong hình 7 ta thấy một tệp chỉ số với một tệp dữ liệu chính được lưu trữ trên m khối Do vậy tệp chỉ số bao gồm m bản ghi tương ứng với m cặp (k,d) Trong đó k là khóa của bản ghi

Trang 38

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

III Tổ chức dữ liệu vật lý

BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ

3.2 Các phép toán trên tệp chỉ số

3.2.1 Tìm kiếm một bản ghi trên tệp chỉ số

- Giả sử cần tìm một bản ghi có khóa x, có thể sử dụng 2 cách sau để duyệt trong tệp chỉ số:

* Tìm tuần tự

* Tìm kiếm nhị phân

Trang 39

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

- Trong khối (k1,d1) sẽ tìm tuần tự theo tệp chỉ số cho tới khi gặp giá

trị k nào đó bằng x thì giá trị d tương ứng là địa chỉ của bộ cần tìm Nếu không có giá trị k nào trong khối (k1,d1) bằng x, thì xem như bản ghi

Trang 40

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

- Giả sử tệp chỉ số được sắp xếp trên m khối (b1, ,bm)

- Để tìm một bản ghi có khóa x, trước hết chọn khối b[m/2] So sánh giá trị k thuộc khối b[m/2] và x

 Nếu k > x thì bộ cần tìm nằm trong các khối từ (b1,…, b[m/2]), ngược lại trong khối từ b[m/2+1], ,bm ngược lại trong khối từ b[m/2+1], ,bm

- Quá trình lặp lại cho đến khi còn một khối chứa bản ghi có khóa x Trong khối này tiếp tục tìm tuần tự trong các cặp (k,d) như phương pháp tìm tuần tự

Trang 41

3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)

 Nếu bản ghi khóa x là bản ghi đầu tiên của khối thì phải sửa lại khóa

k thành x trong tệp chỉ số

Ngày đăng: 11/08/2014, 22:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w