1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu phụ thuộc hàm trên cơ sở siêu đồ thị và tập trù mật

60 580 4

Đ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 60
Dung lượng 1,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU Cơ sở dữ liệu CSDL là một trong những lĩnh vực được tập trung nghiên cứu và phát triển của công nghệ thông tin, nhằm giải quyết các bài toán quản lý, tìm kiếm thông tin trong nhữn

Trang 1

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Trang 2

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Trang 3

LỜI CAM ĐOAN

Học viên xin cam đoan đây là công trình tổng hợp và nghiên cứu của riêng học viên Các kết quả nêu trong luận văn là trung thực và rõ ràng được tìm hiểu trong cac tài liệu tham khảo

Xác nhận của giáo viên hướng dẫn

GS.TS Vũ Đức Thi

Học viên

Hà Mỹ Trinh

Trang 4

MỤC LỤC

CHƯƠNG 1: KHÁI NIỆM CHUNG 10

1.1 Một số ký hiệu và quy ước 10

1.2 Quan hệ và một số khái niệm cơ bản 13

1.2.1 Quan hệ 13

1.2.2 Cơ sở dữ liệu quan hệ 15

1.2.3 Đại số quan hệ 15

1.3 Phụ thuộc hàm 15

1.3.1 Định nghĩa 15

1.3.2 Hệ tiên đề Arsmtrong 16

1.3.3 Bao đóng của tập phụ thuộc hàm và tập thuộc tính 16

1.3.4 Khóa tối tiểu của sơ đồ quan hệ và quan hệ 19

1.3.5 Các dạng chuẩn 20

1.3.6 Hệ Sperner 22

1.3.7 Các dạng tương đương của họ phụ thuộc hàm 28

CHƯƠNG 2: MỘT SỐ THUẬT TOÁN SIÊU ĐỒ THỊ VÀ TẬP TRÙ MẬT 30

2.1 Siêu đồ thị 30

2.1.1 Định nghĩa 30

2.1.2 Siêu đồ thị transversal 33

2.2 Tập độc lập 37

2.3 Tập trù mật 39

Trang 5

2.3.1 Tập trù mật của quan hệ 39

2.3.2 Tập trù mật của sơ đồ quan hệ 42

2.4 Khóa tối tiểu đối với phụ thuộc hàm 46

CHƯƠNG 3: ỨNG DỤNG TÌM KHÓA TỐI THIỂU TRONG MỘT FILE DỮ LIỆU 53

3.1 Mô tả bài toán 53

3.2 Cài đặt 53

3.2.1 Yêu cầu hệ thống 53

3.2.2 Cấu trúc các lớp chương trình 54

3.3Thử nghiệm chương trình 54

KẾT LUẬN 57

TÀI LIỆU THAM KHẢO 58

Trang 6

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Trong suốt luận văn, học viên sử dụng các quy ƣớc về ký hiệu và chữ viết tắt sau:

- s = (U,F): Sơ đồ quan hệ, với U là tập các thuộc tính và F là tập các phụ thuộc hàm

- R: Quan hệ trên tập thuộc tính

- FR: Tập tất cả các phụ thuộc hàm đúng trên quan hệ R

- F+: Bao đóng của tập phụ thuộc hàm

- :Tập tất cả các khóa tối tiểu của sơ đồ quan hệ s

- Trs(H): Họ tất cả các transversal của siêu đồ thị H

- Tr(H): Siêu đồ thị transversal của siêu đồ thị H

- Is: Họ các tập độc lập tối thiểu của sơ đồ quan hệ s

- Ls: Họ tất cả các bao đóng của tập thuộc tính của sơ đồ quan hệ s

- CSDL: Cơ sở dữ liệu

- Relation scheme: Sơ đồ quan hệ

- Strong scheme: Sơ đồ mạnh

- Minimal key: Khóa tối tiểu

Trang 7

- Antikey: Phản khóa

- Minimum cover: Phủ tối tiểu

- Transversal hypergraph: Siêu đồ thị Transversal

- Dense families: Họ trù mật

- Simple hypergraph: Siêu đồ thị đơn

Trang 8

MỞ ĐẦU

Cơ sở dữ liệu (CSDL) là một trong những lĩnh vực được tập trung nghiên cứu

và phát triển của công nghệ thông tin, nhằm giải quyết các bài toán quản lý, tìm kiếm thông tin trong những hệ thống lớn đa dạng, phức tạp cho nhiều người sử dụng trên máy tính điện tử Có thể nói E F Codd là người đầu tiên đề xuất mô hình

dữ liệu quan hệ cho CSDL với công trình “A relational model for large shared data banks (1970)” và đã trở thành kinh điển Đây là mô hình được xây dựng trên cơ sở

lý thuyết toán học về các quan hệ, bao gồm các thực thể (đối tượng) và các mối quan hệ qua lại giữa chứng Chính điều này đã tạo cơ sở toán học với cấu trúc hoàn chỉnh làm nền tảng cho các vấn đề nghiên cứu lý thuyết về CSDL

Người ta xem CSDL quan hệ như là một tập hợp hữu hạn các quan hệ Trong đó 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 Mỗi hàng là một bản ghi (record) lưu trữ các dữ liệu Mỗi cột là một thuộc tính

Trong lý thuyết thiết kế CSDL quan hệ, ràng buộc dữ liệu hay còn gọi là phụ thuộc dữ liệu có một ý nghĩa quan trọng trong việc đảm bảo tính nhất quán của dữ liệu Nghiên cứu ràng buộc dữ liệu là một vấn đề cần thiết Ý nghĩa của việc nêu ra khái niệm ràng buộc dữ liệu là nhằm đảm bảo cho các dữ liệu trong CSDL không mâu thuẫn, phản ánh đúng thế giới hiện thực Các nhà nghiên cứu đã đưa ra nhiều loại ràng buộc dữ liệu khác nhau để đáp ứng phù hợp với thực tế phong phú và đa dạng Loại dữ liệu ràng buộc đầu tiên là phụ thuộc hàm được giới thiệu bởi E F Codd vào năm 1970 G Czédli [10], [11] (1980)đã xem xét đến ba loại ràng buộc

dữ liệu khác nhau là: phụ thuộc đối ngẫu , phụ thuộc mạnh và phụ thuộc yếu Tiếp sau đó các tác giả J Demetrovics và G Gyepesi (1983), [1], [17] cũng tiếp tục nghiên cứu các ràng buộc dữ liệu này Với ba loại ràng buộc dữ liệu này, người sử dụng đôi khi có thể lấy được các thông tin thực mong muốn, ngay cả khi không tồn tại một phụ thuộc hàm nào giữa các tập thuộc tính và chỉ cần biết ít nhất một giá trị của các thuộc tính, chứ không phải tập toàn bộ các giá trị của thuộc tính của vế trái

Trang 9

Hơn thế nữa, đôi khi việc xử lý và tìm kiếm thông tin được tiến hành nhanh chóng hơn vì chỉ cần phải tìm kiếm một phần của quan hệ mà thôi

Mục tiêu của luận văn là tiếp tục nghiên cứu về phụ thuộc hàm trên cơ sở siêu

đồ thị và tập trù mật Luận văn bao gồm 3 chương:

Chương 1: Khái niệm chung: Nhắc lại một số khái niệm cơ bản nhất của toán học Kế đến là một số khái niệm quan hệ và một số khái niệm cơ bản liên quan khác Tập trung giới thiệu về phụ thuộc hàm

Chương 2: Một số thuật toán siêu đồ thì và tập trù mật: Lý thuyết siêu đồ thị là một trong những lĩnh vực quan trọng của toán rời rạc có nhiều ứng dụng có ý nghĩa đối với nhiều lĩnh vực trong tin học Một siêu đồ thị Hchính là mở rộng của một đồ thị trên một tập hữu hạn các đỉnh U, với mỗi siêu cạnh Hi của H là một tập con khác rỗng của U Người ta đã chứng minh rằng lý thuyết siêu đồ thị được xem như

là một công cụ thích hợp để giải quyết các bài toán tổ hợp trong mô hình dữ liệu quan hệ Đặc biệt là khóa tối tiểu và phụ thuộc hàm

Luận văn nghiên cứu và tìm hiểu một số tính chất cũng như ứng dụng của họ trù mật Phát biểu và chứng minh một điều kiện cần và đủ để một họ bất kỳ trù mật trong quan hệ

Chương 3: Luận văn nghiên cứu một số thuật toán tìm khóa tối tiểu trong một quan hệ dựa trên cơ sở siêu đồ thị và tập trù mật Từ đó phát triển thành một chương trình tìm khóa tối tiểu trong một file dữ liệu

Trang 10

CHƯƠNG 1: KHÁI NIỆM CHUNG

Chương này, đầu tiên nhắc lại một số khái niện của toán học cần thiết cho luận văn Kế đến giới thiệu sơ lược khái niệm quan hệ, cơ sở dữ liệu quan hệ và đại số quan hệ Cuối cùng tập trung giới thiệu khái niệm phụ thuộc hàm

Giả sử chúng ta cũng đã quen thuộc với các ký hiệu sau: thuộc (ϵ ), xây dựng tập ({ - |- }), tập rỗng ( ), tập hợp con ( ), tập hợp con thật sự ( ), hợp ( ), giao ( ), hiệu (-), n – bộ xắp thứ tự ((x1, …, xn)), tích Descartes (X1 × … × Xn) lượng từ phổ dụng ( ) và lượng từ tồn tại ( )

Hợp của một họ các tập hợp S, ký hiệu S, được định nghĩa là

Giao của một họ các tập hợp S, ký hiệu được định nghĩa là

Đặc biệt người ta còn hay xét đến các tập hợp con của một tập hợp cố định U nào đó Khi đó nếu X U thì U – X được gọi là phần bù của X đối với U Trong trường hợp này thay cho ký hiệu U – X ta viết là X, và U được gọi là tập hợp vũ trụ Tập lũy thừa của U, ký hiệu P (U) được định nghĩa là tập hợp gồm tất cả các tập hợp con của U, tức là

Trang 11

P (U) = { X | X U}

Lực lượng của tập U ký hiệu là |U| Đặc biệt, tập hợp rỗng có lực lượng U Một quan hệ n ngôi R trên tập hợp U là một tập con tích Descretes Un Đặc biệt, nếu n= 2 thì R được gọi là quan hệ hai ngôi Khi đó thay vì viết (a, b) R người ta hay viết là a R b

Quan hệ hai ngôi R trên tập hợp U được gọi là

(1) Phản xạ nếu a R a với mọi a U

(2) Đối xứng nếu với mọi a, b U, a R b kéo theo b R a

(3) Phản đối xứng nếu với mọi a,b U, a R b và b R a kéo theo a = b (4) Bắc cầu nếu với mọi a, b, c U, a R b và b R c kéo theo a R c

Quan hệ hai ngôi R trên tập hợp U được gọi là quan hệ tương đương nếu quan

hệ R là phản xạ, đối xứng và bắc cầu Nếu R là quan hệ tương đương trên tập hợp U thì khi đó với mọi a U người ta gọi tập hợp

Trang 12

Hai phần tử x, y U gọi là so sánh được đối với quan hệ thứ tự ≤ nếu x ≤ y hoặc y ≤ x Trường hợp nếu không tồn tại x ≤ y và y ≤ x thì người ta nói x và y không so sánh theo quan hệ thứ tự ≤

Tập hợp U được gọi là sắp thứ tự toàn phần (hay sắp thứ tự tuyến tính) bởi quan

hệ thứ tự ≤ nếu với phần tử bất kỳ của U đều so sánh được với nhau Khi đó, quan

hệ thứ tự ≤ trên U là quan hệ thứ tự toàn phần Trường hợp nếu tồn tại hai phần tử U không so sánh được với nhau theo quan hệ thứ tự ≤ thì người ta nói tập hợp U được sắp thứ tự bộ phận Khi đó quan hệ thứ tự ≤ cũng được gọi là quan hệ thứ tự bộ phận

Cho U là tập hợp được sắp thứ tự bởi quan hệ thứ tự ≤ và X U Phần tử a U được gọi là phần tử tối đại của U nếu

Phần tử b U được gọi là phần tử tối thiêu của U nếu

Phần tử c U được gọi là phần tử lớn nhất của U nếu

Phần tử d U được gọi là phần tử nhỏ nhất của U nếu

Phần tử m U được gọi là phần tử chặn trên của U nếu

Phần tử n U được gọi là phần tử chặn dưới của U nếu

Phần tử nhỏ nhất của tập hợp tất cả các phần tử chặn trên của X được gọi là cận trên của X trong U, ký hiệu Phần tử lớn nhất của tập hợp tất cả các phần tử chặn dưới của X được gọi là cận dưới của X trong U, ký hiệu

Trang 13

Đối với một họ của các tập hợp bất kỳ S = {X1, , Xn}, chúng ta gọi

Ánh xạ được gọi là đơn ánh nếu với mọi x, x‟ X, x ≠ x‟ kéo theo f(x) ≠ f(x‟) Ánh xạ được gọi là toàn ánh nếu mọi y Y tồn tại ít nhất x

X sao cho f(x) = y.Ánh xạ được gọi là song ánh (hay một tương ứng 1 – 1) nếu f vừa là một đơn ánh vừa là toàn ánh

1.2 Quan hệ và một số khái niệm cơ bản

1.2.1 Quan hệ

Cho U = {a1, …, an} là một tập hữu hạn khác rỗng các thuộc tính Mỗi thuộc tính aicó một tập hợp khác rỗng dom(ai) Tập dom(ai) được gọi là miền giá trị của thuộc tính ai.Khi đó một tập con hữu hạn các tích Descretes dom(a1) × dom(a2) × …

× dom(an) được gọi là một quan hệ trên U, và ký hiệu R Rõ ràng quan hệ R trên U chính là một tập các bộ : R = {h1, …, hm} với

Trang 14

Nhƣ vậy, một quan hệ R trên U có thể đƣợc biểu diễn bởi một bảng 2 chiều trong đó mỗi cột ứng với một thuộc tính và mỗi hàng ứng với một bộ

Nhƣ vậy, chúng ta có quan hệ gồm 4 bộ xác định trên tập thuộc tính SINHVIEN

= {STT, HOTEN, GIOITINH, NAMSINH, NGHANH, KHOA}

Trang 15

1.2.2 Cơ sở dữ liệu quan hệ

Một CSDL bao gồm một tập hữu hạn các quan hệ được gọi là cơ sở dữ liệu quan hệ Tuy nhiên, theo cách nhìn của người sử dụng thì một CSDL quan hệ là một tập hợp các bảng biến đổi theo thời gian

Một số thao tác trên CSDL quan hệ là: tạo lập những quan hệ mới, cập nhập dữ liệu và cuối cùng là khai thác thông tin từ CSDL quan hệ

Chức năng quan trọng nhất của CSDL là khai thác dữ liệu đã được lữu trữ một cách có hiệu quả

1.3 Phụ thuộc hàm

Khái niệm phụ thuộc hàm được đề xuất bởi E F Codd nêu ra và sau đó lần đầu tiên được đề hóa bởi W W Armstrong Đây là một loại ràng buộc dữ liệu xảy ra tự nhiên nhất giữa các tập thuộc tính Về cơ bản các hệ quản trị cơ sở dữ liệu lơn đều

sử dụng ràng buộc này

1.3.1 Định nghĩa

Cho U là tập hữu hạn khác rỗng các thuộc tính Một phụ thuộc hàm là một mệnh

đề có dạng X → Y, trong đó X, Y U Ta nói phụ thuộc hàm X → Y đúng trong quan hệR = {h1, …, hm} trên U nếu

Ta cũng nói R thỏa mãn phụ thuộc hàm X → Y

Gọi FR là họ tất cả các phụ thuộc hàm đúng trên quan hệ R

Trang 16

Nhƣ vậy, ở ví dụ 1.2.1 ta có

{STT} → {HOTEN, GIOITINH, NAMSINH, NGHANH, KHOA}, nghĩa là thuộc tính STT xác định duy nhất các thuộc tính HOTEN, GIOITINH, NAMSINH, NGHANH, KHOA

họ phụ thuộc hàm không bị lệ thuộc vào các quan hệ (bảng) cụ thể Các công cụ của toán học đƣợc áp dụng để nghiên cứu làm sáng tỏ cấu trúc logic của mô hình dữ liệu quan hệ Đặc biệt, chúng ta sử dụng công cụ thuật toán để thiết kế các công đoạn xây dựng các hệ quản trị cơ sở dữ liệu

1.3.3 Bao đóng của tập phụ thuộc hàm và tập thuộc tính

Ta gọi sơ đồ quan hệ s là một cặp (U, F), trong đó U là tập hữu hạn khác rỗng các thuộc tính và F là tập các phụ thuộc hàm trên U

Trang 17

Như vậy, khi cho một sơ đồ quan hệ có nghĩa chúng ta cho một đầu biểu gồm nhiều cột, nhưng không có dữ liệu và áp đặt các rằng buộc giữa các tập cột (bằng việc cho phụ thuộc hàm), nhưng các ràng buộc này phải tuân theo nghĩa của các cột Khi đó, bao đóng của một tập phụ thuộc hàm F, ký hiệu F+, được định nghĩa là tập tất cả các phụ thuộc hàm được dẫn xuất từ F bằng cách áp dụng các quy tắc từ (F1)-(F4)

W W Armstrong [12] (1974), đã chứng minh rằng Nếu s = (U, F) là một sơ đồ quan hệ thì luôn tồn tại một quan hệ R trên U sao cho Fr = F+ Một quan hệ R như vậy được gọi là quan hệ Armstrong của s Trong trường hợp này hiển nhiên các phụ thuộc hàm của s đều đúng trên R Khái niệm quan hệ Armstrong của s đã được R Fagin [22] (1980) nêu ra

Gọi X là tập con thuộc tính củaU Ký pháp X+ = Khi

đó X+

được gọi là bao đóng của tập thuộc tính X trên s

Bài toán xác định bao đóng X+ có độ phúc tạp là đa thức theo kích thước của s

Do đó, bài toán thành viên đối với sơ đồ quan hệ (nghĩa là cho sơ đồ quan hệ s = (U, F) và phụ thuộc hàm X → Y, kiểm tra xem X → Ycó phụ thuộc F+ hay không)

có thể được giải quyết bằng một thuật toán thời gian đa thức (D Maier [26] (1983),

C Berri và cộng sự [7] (1984))

Đối với quan hệ R trên tập thuộc tính U, ta đặt X+

Khi đó, X+

Rđược gọi là bao đóng của tập thuộc tính X trên R

Bài toán xác định bao đóng X+

R cũng có độ phúc tạp là đa thức theo kích thước của R (Vũ Đức Thi [29] (1986))

Lưu ý rằng, khi bàn về phụ thuộc hàm thì quan hệ R được xét là quan hệ của một sơ đồ quan hệ s = (U, F) nào đó, nghĩa là tập thuộc tính của R là U và R thỏa mãn mọi phụ thuộc của hàm F

Trang 18

Dưới đây là một số tính chất cơ bản của bao đóng của tập thuộc tính trên sơ đồ quan hệ (trên quan hệ vẫn còn đúng) Ta có

Định lý 1.3.1 Giả sử s = (U, F) là một sơ đồ quan hệ X, Y U Khi đó

F được gọi tối thiểu nếu |F| ≤ |F‟| với mọi phủ F‟

* Thuật toán tìm bao đóng của tập thuộc tính

Trang 19

• X (i+1)

=X (i) ∪Z ,∃(Y → Z ∈)F Y ⊆X (i)

, loại Y → Z )ra khỏi F

• Dừng khi X (i+1)

=X (i) hoặc khi X (i) =Q+Bước2: Kếtluận X F+

=X (i) :

1.3.4 Khóa tối tiểu của sơ đồ quan hệ và quan hệ

Cho s = (U, F) là một sơ đồ quan hệ, R là một quan hệ và K là một tập con thuộc tính của U Khi đó K được gọi là một khóa tối thiểu của s (tương ứng của R) nếu K thỏa các điều kiện sau:

(1) K → U F+ (tương ứng K → U FR),

(2) X K sao cho X → U F+ ( tương ứng X → U FR

Nếu K thỏa điều kiện (1) thì K được gọi là khóa của s (tương ứng của R)

Ký pháp KS (tương ứng KR) là tập tất cả khóa tối tiểu của s(tương ứng R)

Khóa tối tiểu của sơ đồ quan hệ và quan hệ đã được nhiều tác giả nghiên cứu như: [7], [12], [16], [19], [25], [27]

Đối với việc tìm một khóa tối tiểu của sơ đồ quan hệ và quan hệ, các thuật toán tương ứng của nó đều có độ phức tạp thời gian đa thức Biết rằng, theo [27] để tìm một khóa tối tiểu của sơ đồ quan hệ s = (U, F) chúng ta dịch chuyển sơ đồ quan hệ s

về sơ đồ quan hệ là sơ đồ quan hệ có số thuộc tính ít hơn và số phụ thuộc

+

và Khi đó, chúng ta chứng minh được một mối quan hệ tương đương khóa như sau:

Định lý 1.3.2 K là một khóa tối tiểu của nếu và chỉ nếu K (U – R) là một

khóa tối tiểu của s

Trang 20

Rõ ràng, việc tìm một khóa tối tiểu trên sơ đồ quan hệ tốt hơn (bài toán này có

độ phức tạp là đa thức theo kích thước của ) trên sơ đồ quan hệ s ban đầu Những kết quả nghiên cứu về phép dịch chuyển sơ đồ quan hệ, có thể tìm thấy trong [14]

C T Yu và D T Johnson đã chứng tỏ rằng số các khóa tối thiểu của sơ đồ quan

hệ s = (U, F) được biểu diễn bằng hàm mũ theo |U|

Thuật toán xác định tập tất cả khóa tối tiểu của sơ đồ quan hệ cũng đã được nghiên cứu nhiều Trong đó, thuật toán của C L Lucchesivà cộng sự [25] (1978) là khá hiệu quả, dù rằng độ phức tạp của nó cũng là hàm mũ Thuật toán này được xem là thuật toán cơ bản để tìm tất cả khóa tối tiểu của một sơ đồ quan hệ

Đối với quan hệ R, bài toán tìm tập tất cả khóa tối tiểu cũng có độ phức tạp là làm mũ theo kích thước của R (J Demetrovics và Vũ Đức Thi [16] (1987), G Gottlob và L Libkin [24] (1990))

Thuộc tính a được gọi là thuộc tính cơ bản của sơ đồ quan hệ s (tương ứng của quan hệ R) nếu tồn tại một khóa tối tiểu (tương ứng ) để a là một thuộc tính của K Trong trường hợp ngược lại, a được gọi là thuộc tính không cơ bản Ký pháp Fn là tập hợp tất cả các thuộc tính không cơ bản

Thuộc tính cơ bản và thuộc tính không cơ bản đóng một vai trò quan trọng trong việc chuẩn hóa các sơ đồ quan hệ cũng như quan hệ

Bài toán xác định a là thuộc tính cơ bản hay không của một sơ đồ quan hệ là bài toán NP-đầy đủ (C L Lucchesivà S L Osborn [25] (1983)) Có nghĩa là, cho đến nay chưa có một thuật toán có độ phức tạp thời gian đa thức để giải quyết bài toán này Tuy nhiên, J Demetrovics và Vũ Đức Thi [16] (1987), đối với quan hệ thì bài toán này được giải quyết bằng một thuật toán thời gian đa thức

1.3.5 Các dạng chuẩn

Do việc cập nhật dữ liệu thông qua các thao tác thêm, xóa và sửa đổi gây nên những dị thường, mà nguyên nhân chính là do lặp lại một số dữ liệu trong quan hệ nên các quan hệ cần thiết phải được phân tách thành các quan hệ nhỏ hơn hay biến

Trang 21

đổi về dạng chuẩn thích hợp Quá trình đó được gọi là quá trình chuẩn hóa Như vậy, việc chuẩn hóa các quan hệ như sơ đồ quan hệ đóng một vai trò cực kỳ quan trọng trong thiết kế cac hệ quản trị CSDL trên mô hình dữ liệu quan hệ của E F Codd Nhờ có chuẩn hóa chúng ta tránh được dư thừa dữ liệu, dị thường trong cập nhật và tăng tốc độ của các phép toán xử lý quan hệ

Cho F là một tập phụ thuộc trên hàm U và X → Y là một phụ thuộc hàm trong

F Tập Y được gọi là phụ thuộc hàm đầy đủvào X nếu X → Y là rút gọn trái, nghĩa

là không tồn tại một tập con thật sự Z của X sao cho Z → Y F+ Ngược lại, Y được gọi là phụ thuộc bộ phận vào X

Cho F là một tập phụ thuộc trên hàm U và X, Y U Tập Y được gọi là phụ thuộc bắc cầu vào X nếu tồn tại Z U sao cho X → Z F+, Z → Y F+, Z→ X F+

và Y Z, Ngược lại, Y được gọi là phụ thuộc trực tiếp vào X

Cho s = (U, F) là một sơ đồ quan hệ Khi đó s được gọi là:

(1) Ở dạng chuẩn một (1NF) ứng với tập phụ thuộc hàm F nếu toàn bộ miền giá trị của các thuộc tính trong quan hệ chỉ chứa giá trị nguyên tố

(2) Ở dạng chuẩn hai (2NF) ứng với tập phụ thuộc hàm F nếu s ở dạng chuẩn một và mọi thuộc tính không cơ bản của s điều phụ thuộc đầy đủ vào mọi khóa tối tiểu của s

(3) Ở dạng chuẩn ba (3NF) ứng với tập phụ thuộc hàm F nếu s ở dạng chuẩn một và không có thuộc tính nào của s phụ thuộc bắc cầu vào bất kỳ một khóa tối tiểu của s

(4) Ở dạng chuẩn Boyce – Codd (BCNF) ứng với tập phụ thuộc hàm F nếu s ở dạng chuẩn ba và không có thuộc tính nào của khóa tối tiểu s phục thuộc bắc cầu vào bất kỳ thuộc tính không khóas

Trang 22

Đối với quan hệ R trên tập thuộc tính U, thì R được gọi là dạng chuẩn một (tương ứng dạng chuẩn hai, dạng chuẩn ba, dạng chuẩn Boyce – Codd) nếu R xác định trên sơ đồ quan hệ ở dạng chuẩn một (tương ứng dạng chuẩn hai, dạng chuẩn

ba, dạng chuẩn Boyce – Codd)

Từ các định nghĩa trên, chúng ta có nhận xét sau: Nếu sơ đồ quan hệ s (tương ứng quan hệ R) là BCNF thì s (tương ứng R) là 3NF, nếu s (tương ứng R) là 2NF

và nếu s (tương ứng R) là 2NF thì s (tương ứng R) là 1NF Tuy nhiên, điều ngược lại của nhận xét này là không đúng

Cho trước một sơ đồ quan hệ hay một quan hệ, kiểm tra xem sơ đồ quan hệ hay quan hệ đó đã là ở BCNF, hay 3NF hay chưa là rất quan trọng Những kết quả nghiên cứu về vấn đề này đã có nhiều tác giả nêu ra [13], [15], [17], [18], [20], [24], [29] Đối với một quan hệ R (tương ứng sơ đồ quan hệ s) trên U cho trước, bài toán xác định R(s) có phải là dạng chuẩn Boyce – Codd, được tính bằng thời gian đa thức theo kích thước của R(s) Đối với quan hệ R trên U cho trước, bài toán xác định R có phải là dạng chuẩn 3 hay không cũng là đa thức theo kích thước của R Tuy nhiên, đối với sơ đồ quan hệ s trên U cho trước, khi đó bài toán xác đính có phải dạng chuẩn 3 hay không là NP-đầy đủ Có nghĩa là cho đến nay, độ phức tạp thời gian của bài toán này không là đa thức

Đối với dạng chuẩn 2, các câu hỏi tương tự cho R lẫn s vẫn còn là bài toán mở Chúng ta phỏng đoán có độ phức tạp thời gian là hàm mũ trở lên

1.3.6 Hệ Sperner

Cho U là một tập hữu hạn, P(U) là tập lũy thừa của U và K là một con của P(U) Ta nói K là một hệ Sperner trên U nếu với mọi A,B K kéo theo A B Từ định nghĩa này, rõ ràng chúng ta thấy KS và KR (tập tất cả khóa tối tiểu của sơ đồ quan hệ s và quan hệ R) là hệ Sperner

Trang 23

Lực lượng của một hệ Sperner K bất kỳ trên U không vượt quá , tức là

|K| ≤ , với |U| = n

J Demetrvics [12] (1980) đã chứng minh rằng: “Nếu s = (U, F) là một sơ đồ quan hệ thì KSlà một hệ SpernertrênU Ngược lại, nếu K là một hệ Sperner bất kỳ trên U thì luôn tồn tại một sơ đồ quan hệ sao cho KS = K”

Ví dụ 1.3.3 Cho K = {K1, …, Km} là một hệ SpernertrênU Khi đó s = (U, F),

ở đây F = {K1 → U, …, Km → U}, là sơ đồ quan hệ mà Ks = K

Tập phản khóa của hệ Sperner K, ký hiệu K-1, được định nghĩa như sau:

là tập tất cả các tập không phải là khóa lớn nhất

Trong luận văn này luôn quy ước rằng nếu hệ Sperner đóng vai trò là tập các khóa tối tiểu (tương ứng tập các phản khóa) thì hệ này không rỗng và không chứa tập (tương ứng không chứa tập U và ) Chúng ta coi mỗi phép so sánh hai thuộc tính là một phép cơ bản của thuật toán Vì vậy, nếu chúng ta giả sử rằng các tập con của U được biểu diễn như là các danh sách được sắp xếp các thuộc tính, thì phép toán Boolean trên hai tập con của U đòi hỏi khoảng |U| phép cơ bản

Biết rằng, nếu K là một hệ Sperner khác rỗng tùy ý thì luôn tồn tại một quan hệ

R để KR = K (J Demetrovics [12] (1979)) Từ kết quả này định nghĩa sau được đưa ra: “Cho R là một quan hệ và K là một hệ Sperner khác rỗng trênU Khi đó, Ta nói R biểu diễn K nếu KR = K”

Theo Demetrovics j., Vu Duc Thi [16] (1987), định lý sau cho chúng ta một điều kiện cần và đủ để một quan hệ biểu diễn một Sperner cho trước

Trang 24

Định lý 1.3.4 Giả sử K là một hệ Sperner không rỗng và R là một quan hệ trên

U Khi đó R biểu diễn K nếu và chỉ nếu K-1

= max ( r), ở đây max ( r) là hệ bằng nhau cực đại của quan hệ R

Hệ bằng nhau cực đại của quan hệ được định nghĩa như sau: Cho R = {h1, …,

Hệ quả 1.3.5 Giả sử s = (U, F) là một sơ đồ quan hệ và R là một quan hệ trên

U Quan hệ được gọi là biểu diễn s nếu KR = KS Khi đó R biểu diễn s nếu và chỉ nếu Ks-1 = max( R)

Kết quả sau cũng được chỉ ra bởi J Demetrovics và Vũ Đức Thi [16] (1987)

Định lý 1.3.6 Giả sử K là một hệ Sperner trên U Khi đó

Từ hệ quả 1.3.5 và định lý 1.2.6, rõ ràng đối với quan hệ R vấn đề thuộc tính cơ bản được giải quyết bằng một thuật toán thời gian đa thức theo kích thước của R Tác giả Vũ Đức Thi đã đưa ra thuật toán tìm một tập phản khóa từ một hệ Sperner cho trước Thuật toán đó được mô tả như sau:

Thuật toán 1 3.7.(Tìm tập phản khóa)

Vào: Hệ Sperner K = {B1, …, Bm} trên U

Trang 25

Ra: K-1

Phương pháp:

Bước 1: Đặt K1 = {U – (a) | a B1} Rõ rang K1 = {B1}-1

Bước q + 1 (q < m) Giả sử Kq = Fq {X1, …, Xtq} với X1, …, Xtq chứa Bq+1

và Fq = {A Kq | Bq+1 A} Với mọi i (i = 1, 2, …, tq), xây dựng phản khóa của {Bq+1} trên Xi tương tự như K1 Ký hiệu chúng là A1i, …, Arii (i = 1, 2, …, tq) Đặt

Kq+1 = Fq {APi | A Fq } Cuối cùng đặt K-1

là thời gian đa thức theo |U|, |K|, |K-1

| Rõ ràng, nếu số

Trang 26

các phần tử của K là nhỏ thì thuật toán 1.3.7 rất hiệu quả Nó chỉ đòi hỏi thời gian

đa thức theo |U|

Chúng ta cùng tìm hiểu một số hệ Sperner đặc biệt, bao gồm hệ Sperner bão hòa, hệ Sperner được nhúng và hệ Sperner bao hàm Các hệ Sperner này có vai trò quan trọng trong việc nghiên cứu độ phức tạp của một số bài toán trong CSDL quan

hệ

Cho U là một tập hữu hạn Hệ Sperner K trên U được gọi là bão hòa nếu với mỗi X U thì K {X} Không phải là một hệ Sperner Hệ Sperner K trên U gọi là được nhúng nếu với mỗi X K có một Y H để X Y, trong đó H-1

= K Hệ Sperner K được gọi là bao hàm nếu với mỗi X K tồn tại một Y K-1

sao cho X

Y

G Gottlob và L Libkin [24] (1990) đã giới thiệu bồn bài toán, những bài toán này đóng vai trò quan trọng trong quá trình nghiên cứu cấu trúc và logic của mô hình dữ liệu quan hệ:

Bài toán 1.3.10 (Xây dựng quan hệ Amrstrong) Cho trước sơ đồ quan hệ s = (U, F), xây dựng quan hệ R sao cho FR = F+

Bài toán 1.3.11 (Bài toán suy diễn phụ thuộc) Cho trước quan hệ R trên U, xây

dựng sơ đồ quan hệ s = (U, F) sao cho F+ = FR

Bài toán 1.3.12 (Bài toán kéo theo phụ thuộc hàm-quan hệ) Cho trước sơ đồ

quan hệ s = (U, F) và quan hệ R trên U, xác định xem FR F+

Bài toán 1.3.13 (Bài toán tương đương phụ thuộc hàm-quan hệ) Cho trước sơ

đồ quan hệ s = (U, F) và quan hệ R trên U, xác định xem FR = F+

Bài toán 1.3.10 và 1.3.11 có tầm quan trọng trong thực tế C Beeri, M Dowd,

R Fagin, R Staman [7] (1984) chứng tỏ rằng độ phức tạp của hai bài toán này là hàm mũ, do đó không có thuật toán thời gian đa thức để giải hai bài toán này Bài toán 1.3.12 được xem là quan trọng trong lý thuyết thiết kế G Gottlob và L Libkin

Trang 27

[24] (1990) chứng minh rằng độ phức tạp của bài toán này là co-NP-đầy đủ Bài toán 1.3.13 cho đến nay vẫn không xác định được độ phức tạp là đa thức hay không Tuy nhiên, bài toán này có thể tách thành hai bài toán con như sau:

Bài toán 1.3.13a Xác định xem tất cả các phụ thuộc hàm đúng trên quan hệ R

có thể được suy diễn từ F hay không, nghĩa là FR F+ Rõ ràng bài toán này là bài toán 1.3.12 ở trên

Bài toán 1.3.13b Xác định xem tất cả các phụ thuộc hàm đúng trên quan hệ R

có thể được suy diễn từ F hay không, nghĩa là FR F+ Rõ ràng bài toán này được giải quyết bằng một thuật toán thời gian đa thức

Do đo, bài toán 1.3.13 là kết hợp của bài toán con co-NP-đầy đủ và bài toán con

đa thức Độ phức tạp của bài toán này có lẽ là một bài toán mở

Tuy nhiên, độ phức tạp của các bài toán 1.3.10 – bài toán 1.3.13 sẽ là đa thức nếu lớp các quan hệ và sơ đồ quan hệ thỏa một số điều kiện nào đó Trước khi mô tả các điều kiện đó, chúng ta tìm hiểu với định nghĩa sau: Cho s = (U, F) là một sơ đồ quan hệ Ta nói rằng s là k-sơ đồ quan hệ nếu F = {K1 → U, …, Km → U}, trong đó {K1, …, Km} là một hệ SpernertrênU

Điều kiện 1.3.14 Sơ đồ quan hệ s = (U, F) là sơ đồ k-sơ đồ quan hệ, ở đây F =

{K1 → U, …, Km → U} và K = {K1, …, Km} là một hệ Sperner bão hòa

Điều kiện 1.3.15 Quan hệ R là ở BCNF và tập phản khóa là một hệ Sperner bão hòa

Điều kiện 1.3.16 Sơ đồ quan hệ s = (U, F) có dạng k-sơ đồ quan hệ và quan hệ

R là ở BCNF HọK = {K1, …, Km} và tập phản khóa là một hệ Sperner bão hòa

Các kết quả sau được chỉ ra bởi Nguyễn Kim Anh [1] (1993):

Định lý 1.3.17.Bài toán 1.3.10 được giải quyết trong thời gian đa thức nếu điều

kiện 1.3.14 được thỏa

Trang 28

Định lý 1.3.18.Bài toán 1.3.11 được giải quyết bằng một thuật toán có độ phức

tạp thời gian đa thức nếu điều kiện 1.3.15 được thỏa

Định lý 1.3.19.Bài toán 1.3.12 - Bài toán 1.3.13 được giải quyết trong thời gian

đa thức nếu điều kiện 1.3.16 được thỏa

1.3.7 Các dạng tương đương của họ phụ thuộc hàm

Các dạng tương đương của họ phụ thuộc hàm chính là các công cụ để chúng ta

có thể nghiên cứu phong phú hơn nữa cấu trúc logic của họ phụ thuộc hàm Các dạng tương đương được giới thiệu sau đây là hàm đóng, nửa dàn giao và tập không giao

Ánh xạ L : P(U) P(U) được gọi là một hàm đóng trên U nếu với mọi X,

họ phụ thuộc hàm chúng ta có thể dùng công cụ hàm đóng

Cho I là một tập con của P(U) Khi đó I được gọi là nửa dàn giao trên U nếu

U I và X, Y I X ∩ Y I

Trang 29

W W Amrstrong [6] (1974) chỉ ra rằng có tương ứng 1-1 giữa lớp các hàm đóng và lớp các nửa dàn giao trên U

Định lý 1.3.21.Giả sử L là một hàm đóng trênU Đặt Z(L) = {X | X U và L(X) = X} Khi đó Z(L) là nửa dàn giao trên U Ngược lại, nếu I là nửa dàn giao trên U thì tồn tại duy nhất một hàm đóng L sao cho Z(L) = I, ở đây L(X) = ∩ {X‟

Định lý 1.3.22.Nếu I là nửa dang giao thì NIlà tập không giao Ngược lại, nếu

N là tập không giao thì tồn tại duy nhất một nửa dàn giao I sao cho NI = N, ở đây

NI = {X I | X # ∩{X I | X X‟}}

Từ định lý 1.3.20, định lý 1.3.21 và định lý 1.3.22, rõ ràng là một tương ứng 1-1 giữa lớp các tập không giao và lớp các f-họ trên U

Ngoài các dạng tương đương được đề cập ở trên, chúng ta còn có một số dạng tương đương khác, chẳng hạn như hàm chọn, Các tính chất của hàm đóng, hàm chọn và mối liên hệ giữa chúngđã được các tác giả nêu ra [2],[4],[15]

Trang 30

CHƯƠNG 2: MỘT SỐ THUẬT TOÁN SIÊU ĐỒ THỊ VÀ TẬP TRÙ MẬT

Mục đích chính của chương này là giới thiệu các công cụ dùng để nghiên cứu về tập phụ thuộc hàm, đó là siêu đồ thị và họ trù mật Những công cụ này được xem rất thích hợp để mô tả khóa, phụ thuộc hàm, các dạng chuẩn đối với phụ thuộc hàm, , trong lý thuyết CSDL quan hệ

2.1 Siêu đồ thị

2.1.1 Định nghĩa

Cho U là một tập hợp hữu hạn khác rỗng và P(U) là tập lũy thừa của U Họ H

= {Ei | Ei P(U), i = 1, 2, …, m} được gọi là một siêu đồ thị trên U nếu Ei ≠ với mọi i

Các phần tử của U được gọi là các đỉnh và tập E1, …, Em là các siêu cạnh (để đơn giản gọi là cạnh) của siêu đồ thị H

Như vậy, đồ thị chính là một siêu đồ thị với mỗi cạnh có lực lượng là hai

Định nghĩa siêu đồ thị như trên có khác với một số định nghĩa về siêu đồ thị của một số tác giả khác Tuy nhiên, chúng lại thích hợp cho một số ứng dụng trong lý thuyết CSDL Đặc biệt là bài toán liên quan đến khóa tối tiểu, các dạng chuẩn với phụ thuộc hàm, … C Berge [8] (1984) yêu cầu rằng hợp của các Ei của H bằng U, tuy nhiên ở đây chúng ta không yêu cầu điều này T Eiter và G Gottlob [21] (1991) định nghĩa siêu đồ thị H là một con của tập P(U), tức là các cạnh Ei của H là một tập con của U và có thể là tập rỗng Trong định nghĩa siêu đồ thị H các cạnh Ei của

H phải là một tập khác rỗng Định nghĩa siêu đồ thị như trên có thể tìm thất trong

R Fagin [23] (1983)và D Maier [26] (1983)

Siêu đồ thị H được gọi là đơn nếu nó thoả mãn

Ei, Ej H : Ei Ej Ei = Ej

Ngày đăng: 16/11/2014, 13:39

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Nguyễn Xuân Huy (1986), “Đẳng cấu giữa dàn các cấu trúc phụ thuộc hàm và dàn các hàm đóng”, Tạp chí toán học, 14(1), tr. 23 – 28 Sách, tạp chí
Tiêu đề: Đẳng cấu giữa dàn các cấu trúc phụ thuộc hàm và dàn các hàm đóng
Tác giả: Nguyễn Xuân Huy
Năm: 1986
[5] Vũ Đức Thi (1999), “Thuật toán trong tin học”, Nhà xuất bản khoa học và kỹ thuật, Hà Nội.Tiếng Anh Sách, tạp chí
Tiêu đề: Thuật toán trong tin học
Tác giả: Vũ Đức Thi
Nhà XB: Nhà xuất bản khoa học và kỹ thuật
Năm: 1999
[6] Armstrong W. W. (1994), “Dependency structure of database relationship”,Information Processing 74, North-Holland Pub. Co., pp. 580 – 583 Sách, tạp chí
Tiêu đề: Dependency structure of database relationship”,"Information Processing 74, North-Holland Pub. Co
Tác giả: Armstrong W. W
Năm: 1994
[7] Beeri C., Dowd M., Fagin R., Staman R. (1984). “On the tructure of Armstrong relations for funtional dependencies”.J. ACM, 31(1), pp. 30 – 46 Sách, tạp chí
Tiêu đề: On the tructure of Armstrong relations for funtional dependencies”."J. ACM
Tác giả: Beeri C., Dowd M., Fagin R., Staman R
Năm: 1984
[8] Berge C. (1989), Hypergraphs: combinatorics of finite sets , North – Holland, Amsterdam Sách, tạp chí
Tiêu đề: combinatorics of finite sets
Tác giả: Berge C
Năm: 1989
[9] Codd E. F. (1970), “A relational model for large shared data banks”, Communication ACM 13, pp. 377 – 387 Sách, tạp chí
Tiêu đề: A relational model for large shared data banks”, "Communication ACM 13
Tác giả: Codd E. F
Năm: 1970
[10] Czédli G. (1980), “Dependencies in the relational model of data”, Alkalmaz Mat.Lapok 6, pp. 131 – 143 Sách, tạp chí
Tiêu đề: Dependencies in the relational model of data”, "Alkalmaz Mat.Lapok
Tác giả: Czédli G
Năm: 1980
[11] Czédli G. (1981), “On dependencies in the relational model of data” Sách, tạp chí
Tiêu đề: On dependencies in the relational model of data
Tác giả: Czédli G
Năm: 1981
[12] Demetrovics J. (1979), “On the equivalence candidate keys with Spernersystems”, Acta Cybernetica Hungary, pp. 247 - 252 Sách, tạp chí
Tiêu đề: On the equivalence candidate keys with Spernersystems”, "Acta Cybernetica Hungary
Tác giả: Demetrovics J
Năm: 1979
[13] Demetrovics J. (1980), Logical and structural investigation of relation datamodel, Ph. D. dissertation, MTA SZTAKI Tanulm – asnyok 114, in Hunggarian Sách, tạp chí
Tiêu đề: Logical and structural investigation of relation datamodel
Tác giả: Demetrovics J
Năm: 1980
[14] Demetrovics J., Nguyễn Xuân Huy (1991), “Close sets and translations of relation schemes”, Computers Math. Applic. 21(1), pp. 13 - 23 Sách, tạp chí
Tiêu đề: Close sets and translations of relation schemes”, "Computers Math. Applic
Tác giả: Demetrovics J., Nguyễn Xuân Huy
Năm: 1991
[15] Demetrovics J., Libkin L. (1992), “Functional dependencies in relational databases: A lattice point of view”, Discrete Applied Mathematics 40, pp. 13 – 23 Sách, tạp chí
Tiêu đề: Functional dependencies in relational databases: A lattice point of view
Tác giả: Demetrovics J., Libkin L
Năm: 1992
[16] Demetrovices J., Vu Duc Thi (1987), “Keys, antikeys and prime attributes”, Annales Univ. Sci. Budapest Sect. Comp. 8, pp. 25 – 52 Sách, tạp chí
Tiêu đề: Keys, antikeys and prime attributes”, "Annales Univ. Sci. Budapest Sect. Comp
Tác giả: Demetrovices J., Vu Duc Thi
Năm: 1987
[17] Demetrovices J., Vu Duc Thi (1995), “Armstrong relations, functional dependencies and strong dependencies”, Computers and Artifical Intelligence 14, pp. 279 – 198 Sách, tạp chí
Tiêu đề: Armstrong relations, functional dependencies and strong dependencies”, "Computers and Artifical Intelligence
Tác giả: Demetrovices J., Vu Duc Thi
Năm: 1995
[18] Demetrovices J., Vu Duc Thi (1996), “Some results about normal forms for functional dependency in the relational datamodel”, Discrete Applied Mathematics 69, pp. 61 – 74 Sách, tạp chí
Tiêu đề: Some results about normal forms for functional dependency in the relational datamodel”, "Discrete Applied Mathematics
Tác giả: Demetrovices J., Vu Duc Thi
Năm: 1996
[19] Demetrovices J., Vu Duc Thi (1999), “Describing candidate keys by hypergraphs”, Computers and Artificial Intelligence, 18(2), pp. 191 – 207 Sách, tạp chí
Tiêu đề: Describing candidate keys by hypergraphs”, "Computers and Artificial Intelligence
Tác giả: Demetrovices J., Vu Duc Thi
Năm: 1999
[20] Demetrovices J., Vu Duc Thi (2000), “Some computational propblems ralated to Boyce-Codd normal form”, Annales Univ. Sci. Budapest. Sect. Comp.19, pp. 119 -132 Sách, tạp chí
Tiêu đề: Some computational propblems ralated to Boyce-Codd normal form”, "Annales Univ. Sci. Budapest. Sect. Comp
Tác giả: Demetrovices J., Vu Duc Thi
Năm: 2000
[22] Fagin R. (1980), “Horn clauses and database dependencies”, Proc. 12th. Ann. ACM Symp. On Theory of Computing (Los Angeles, Calif.), ACM, New York, pp. 123 – 134 Sách, tạp chí
Tiêu đề: Horn clauses and database dependencies”, "Proc. "12th. Ann. ACM Symp. On Theory of Computing (Los Angeles, Calif.)
Tác giả: Fagin R
Năm: 1980
[23] Fagin R. (1983), “Degrees of Acyclicity for Hypergraphs and Relational Database Schemes”, J. ACM, 30(3), pp. 514 – 550 Sách, tạp chí
Tiêu đề: Degrees of Acyclicity for Hypergraphs and Relational Database Schemes”, "J. ACM
Tác giả: Fagin R
Năm: 1983
[24] Gottlob G., Libkin L. (1990), “Investigation on Armstrong ralations, dependency inference, and excludes functional dependencies”, Acta Cybernetica Hungary , 9(4), pp. 385 – 402 Sách, tạp chí
Tiêu đề: Investigation on Armstrong ralations, dependency inference, and excludes functional dependencies”, "Acta Cybernetica Hungary
Tác giả: Gottlob G., Libkin L
Năm: 1990

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w