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

Nghiên cứu hệ thống truy vấn mờ ngôn ngữ trên cơ sở dữ liệu quan hệ

71 24 0

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

Nội dung

i BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH VÕ MINH HIẾU NGHIÊN CỨU HỆ THỐNG TRUY VẤN MỜ NGÔN NGỮ TRÊN CƠ SỞ DỮ LIỆU QUAN HỆ Chuyên ngành: Công nghệ thông tin Mã số: 60 48 02 01 LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN NGHỆ AN - 2017 ii BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH VÕ MINH HIẾU NGHIÊN CỨU HỆ THỐNG TRUY VẤN MỜ NGÔN NGỮ TRÊN CƠ SỞ DỮ LIỆU QUAN HỆ Chuyên ngành: Công nghệ thông tin Mã số: 60 48 02 01 LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN Người hướng dẫn: TS Phan Anh Phong NGHỆ AN - 2017 iii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng Các số liệu kết nghiên cứu luận văn trung thực chưa sử dụng để bảo vệ học vị Các thơng tin lược trích từ nguồn tài liệu thống rõ nguồn gốc rõ ràng Nếu sai tơi hồn tồn chịu trách nhiệm Học viên thực Võ Minh Hiếu iv LỜI CẢM ƠN Đầu tiên, xin gửi lời cảm ơn sâu sắc đến thầy giáo TS Phan Anh Phong, thầy tận tình bảo, giúp đỡ, định hướng tạo điều kiện cho tơi hồn thành luận văn Em xin chân thành cám ơn quý thầy cô khoa Công nghệ thơng tin, trường Đại học Vinh tận tình truyền đạt kiến thức quý báo cho em, giúp cho em tiếp cận nhiều kiến thức chuyên ngành Sau cùng, em xin kính chúc q thầy khoa Công nghệ thông tin dồi sức khỏe, niềm tin để tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức quý báo cho hệ mai sau Xin chân thành cảm ơn! Long An, ngày 25 tháng 03 năm 2017 Học viên thực Võ Minh Hiếu v MỤC LỤC LỜI CẢM ƠN iv MỤC LỤC v DANH MỤC CÁC TỪ VIẾT TẮT viii DANH MỤC HÌNH ix DANH MỤC BẢNG x MỞ ĐẦU 1 Sự cần thiết vấn đề nghiên cứu Lịch sử vấn đề nghiên cứu: Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu Nội dung nghiên cứu Đóng góp luận văn Chương TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU, NGÔN NGỮ SQL VÀ LÔ-GIC MỜ 1.1 Tổng quan sở liệu Mơ hình liệu Thao tác với sở liệu Hệ quản trị sở liệu 1.2 Ngôn ngữ SQL Giới thiệu SQL Logic 3–giá trị Hạn chế mệnh đề where câu lệnh SQL 1.3 Logic mờ vi Tập mờ hàm thuộc Các phép toán tập mờ 10 Biến ngôn ngữ [5] 13 Gia tử ngôn ngữ [5] 14 Các lượng từ ngôn ngữ [3] 14 T-norm S-norm [5] 18 1.4 Kết luận chương 20 Chương TRUY VẤN MỜ NGÔN NGỮ TRÊN CƠ SỞ DỮ LIỆU QUAN HỆ 21 2.1 Đặt vấn đề 21 2.2 Lược đồ câu truy vấn 21 Khối lệnh SELECT FROM WHERE cho truy vấn mờ 21 Ví dụ truy vấn mờ ngơn ngữ 22 2.3 Mơ hình truy vấn mờ ngơn ngữ từ sở liệu quan hệ 24 2.4 Truy vấn ngôn ngữ linh hoạt 25 Tập mờ cho nhãn ngôn ngữ 25 Tính tốn mức độ phù hợp 26 Lựa chọn kết theo mức- 29 Ví dụ 29 2.5 Truy vấn mờ ngôn ngữ với số kết hợp tương thích (QCI) 30 Chỉ số kết hợp tương thích 30 Phép And 34 Phép Or 36 Kết hợp phép And Or 37 2.6 Truy vấn với lượng từ mờ 38 2.7 Những thuận lợi khó khăn truy vấn mờ ngôn ngữ 40 2.8 Kết luận chương 41 vii Chương THỬ NGHIỆM VÀ BÀN LUẬN 42 3.1 Cơ sở liệu thử nghiệm 42 3.2 Sơ lược PostgreSQL 43 3.3 Định nghĩa tập mờ cho nhãn ngơn ngữ thuộc tính 44 3.4 Xây dựng lượng từ mờ 46 3.5 Lựa chọn kết nối logic 47 3.6 Xây dựng giao diện truy vấn mờ ngôn ngữ 50 3.7 Bàn luận 53 Những kết đạt 53 Hạn chế 53 KẾT LUẬN 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 57 viii DANH MỤC CÁC TỪ VIẾT TẮT Các chữ viết tắt: Giải nghĩa BD Bounded Difference BS Bounded Sum CSDL Cơ sở liệu DBMS DataBase Management System GLC Generalized logical condition QCI Query Compatibility Index SQL Standard query language ix DANH MỤC HÌNH Hình 1.1 Kết câu truy vấn cổ điển Hình 1.2 Kết câu truy vấn cổ điển chi tiết Hình 1.3 Hợp hai tập mờ A B 10 Hình 1.4 Giao hai tập mờ A B 11 Hình 1.5 Phần bù tập mờ A 11 Hình 1.6 Tập mờ Q Q* 15 Hình 1.7 Tập mờ tốt 17 Hình 2.1 Kiến trúc hệ thống truy vấn mờ 25 Hình 2.2 Kiến trúc hệ thống truy vấn mờ mức thiết kế ứng dụng 26 Hình 2.3 Các tập mờ câu truy vấn linh hoạt 28 Hình 2.4 Các giá trị ngơn ngữ phân bổ miền thuộc tính 29 Hình 2.5 Cấu trúc truy vấn với thành phần mờ 32 Hình 2.6 Các tập mờ 34 Hình 3.1: Câu lệnh thêm liệu vào bảng district 45 Hình 3.2 Giao diện định nghĩa biến, nhãn ngôn ngữ lượng từ mờ 52 Hình 3.3 Giao diện thiết kế thực thi câu truy vấn mờ ngôn ngữ 53 x DANH MỤC BẢNG Bảng 1.1 Toán tử logic 2-giá trị Bảng 1.2 Toán tử logic 3-giá trị Bảng 2.1 Lương nhân viên giới hạn ngôn ngữ 23 Bảng 2.2 Lương nhân viên (dữ liệu mờ) 24 Bảng 2.3 Kết truy vấn mờ 25 Bảng 2.4 Danh sách municipality 30 Bảng 2.5 Kết câu truy cấu mờ municipality có diện tích>8000 30 Bảng 2.6 Kết câu truy cấu mờ chọn municipality có diện tích cao 31 Bảng 3.1 Ý nghĩa bảng district 43 Bảng 3.2 Dữ liệu bảng district 45 Bảng 3.3 Miền giá trị “low”, “medium”, “high” unemployment 47 Bảng 3.4 Miền giá trị “low”, “medium”, “high” area 47 Bảng 3.5 Miền giá trị “low”, “medium”, “high” population 47 Bảng 3.6 Miền giá trị “low”, “medium”, “high” density 48 Bảng 3.7 Giá trị lượng từ mờ 48 Bảng 3.8 Các giá trị biên hàm thuộc “low” 49 Bảng 3.9 Các giá trị biên hàm thuộc “medium” 49 Bảng 3.10 Kết câu truy vấn mờ với phép kết nối “or” 50 Bảng 3.11 Kết câu truy vấn mờ với phép kết nối “and” 51 47 nữa”, “ít nhất” Bảng 3.7: Giá trị lượng từ mờ STT LƯỢNG TỪ MỜ GIÁ TRỊ Hầu hết >=70% Khoảng >=40% 0 3.5 Lựa chọn kết nối logic Trong chương trình sử dụng kiểu kết nối “and” “or” Sử dụng giao diện trực quan để chọn kiểu kết nối cho điều kiện Sử dụng hai tùy chọn, tùy chọn “and” thể phép kết nối và tùy chọn “or” thể phép kết nối Phép kết nối “and” tính hàm min(µ(xi)) i=1,…,n Phép kết nối logic “or” tính hàm max(µ(xi)) i=1,…,n Ví dụ: mệnh đề câu truy vấn mờ với logic “or” sau: Select * From district Where unemployment is low or Area is medium Trước hết, định nghĩa giá trị biên a, b, c, d hàm thuộc “low” thuộc tính unemployment xem bảng 3.8 giá trị biên a, b, c, d hàm thuộc “medium” thuộc tính Area xem bảng 3.9: Bảng 3.8: Các giá trị biên a, b, c, d hàm thuộc “low” unemployment a b c d 0% 5% 15 % 20 % Low 48 Bảng 3.9: Các giá trị biên a, b, c, d hàm thuộc “medium” Area a b c d 20000 25000 30000 35000 Medium Tiếp theo áp dụng công thức 3.1 để tính giá trị µ cơng thức 2.11 để kiểm tra kết quả, xem bảng 3.10 Bảng 3.10: Bảng kết truy vấn mờ với phép kết nối “or” ID Name Unemploy Area [%] [km2] µ µ (unemp (Area "low") "medium") µ Max BLU Ben Luc 51,79 28,836,00 0,00 1,00 1,00 CDU Can Duoc 40,79 21,810,34 0,00 0,36 0,36 CGI Can Giuoc 31,79 21,019,80 0,00 0,20 0,20 CTH Chau Thanh 20,43 15,534,14 0,00 0,00 0,00 DHO Duc Hoa 61,79 42,775,65 0,00 0,00 0,00 DHU Duc Hue 14,82 43,098,97 1,00 0,00 1,00 KTU Kien Tuong 15,86 20,428,20 0,83 0,09 0,83 MHO Moc Hoa 3,24 29,764,25 0,65 1,00 1,00 TAN Tan An 71,79 8,194,94 0,00 0,00 0,00 TTH Tan Thanh 12,57 42,555,27 1,00 0,00 1,00 49 ID Name Unemploy Area [%] [km2] µ µ (unemp (Area "low") "medium") µ Max TTR Tan Tru 18,35 10,672,20 0,33 0,00 0,33 THO Thanh Hoa 13,69 46,837,28 1,00 0,00 1,00 THT Thu Thua 25,25 29,879,70 0,00 1,00 1,00 THU Tan Hung 9,67 49,670,81 1,00 0,00 1,00 VHU Vinh Hung 6,69 38,472,90 1,00 0,00 1,00 Ví dụ: mệnh đề câu truy vấn mờ với logic “and” sau: Select * From district Where unemployment is low and Area is medium Tương tự, áp dụng cơng thức 3.1 để tính giá trị µ công thức 2.8 để kiểm tra kết quả, xem bảng 3.11: Bảng 3.11: Bảng kết truy vấn mờ với phép kết nối “and” ID Name Unemploy Area [%] [km2] µ µ (unemp (Area "low") "medium") µ Min BLU Ben Luc 51,79 28,836,00 0,00 1,00 0.00 CDU Can Duoc 40,79 21,810,34 0,00 0,36 0.00 CGI Can Giuoc 31,79 21,019,80 0,00 0,20 0.00 CTH Chau Thanh 20,43 15,534,14 0,00 0,00 0.00 DHO Duc Hoa 61,79 42,775,65 0,00 0,00 0.00 DHU Duc Hue 14,82 43,098,97 1,00 0,00 0.00 KTU Kien Tuong 15,86 20,428,20 0,83 0,09 0.09 MHO Moc Hoa 3,24 29,764,25 0,65 1,00 0.65 50 ID Name Unemploy Area [%] [km2] µ µ (unemp (Area "low") "medium") µ Min TAN Tan An 71,79 8,194,94 0,00 0,00 0.00 TTH Tan Thanh 12,57 42,555,27 1,00 0,00 0.00 TTR Tan Tru 18,35 10,672,20 0,33 0,00 0.00 THO Thanh Hoa 13,69 46,837,28 1,00 0,00 0.00 THT Thu Thua 25,25 29,879,70 0,00 1,00 0.00 THU Tan Hung 9,67 49,670,81 1,00 0,00 0.00 VHU Vinh Hung 6,69 38,472,90 1,00 0,00 0.00 3.6 Xây dựng giao diện truy vấn mờ ngơn ngữ Giao diện chương trình gồm hai phần: phần phần Phần giao diện để định nghĩa tập mờ cho nhãn ngơn ngữ thuộc tính (xem hình 3.2) Phần nầy thiết kế với mục đích cho phép người sử dụng định nghĩa nhãn ngôn ngữ “low”, “medium, “high” xác định giá trị biên a, b, c, d hàm thuộc Hình 3.2: Giao diện định nghĩa biến, nhãn ngôn ngữ lượng từ mờ 51 Trong phần tables, chứa bảng có CSDL unemployment Nếu người dùng chọn vào bảng district liệu kê trường khung fields (các cột có bảng disctrict) Các biến, nhãn ngôn ngữ “low”, “medium”, “high” người dùng định nghĩa cách chọn vào nút tương ứng Tương tự, lượng từ “Almost”, “About half” , “At least” người dùng chọn vào nút tương ứng Trong phần Ideal value, quét sở liệu để lấy giá trị nhỏ giá trị lớn tương ứng với thuộc tính chọn fields Người dùng kéo trượt để chọn giá trị b giá trị c Các giá trị khoảng (b,c) thỏa đầy đủ điều kiện câu truy vấn (µ =1) Trong phần Acceptable value, người dùng kéo trượt để chọn giá trị a giá trị d Các giá trị nhỏ a hay lớn d không thỏa điều kiện câu truy vấn (µ=0) Nút Set: chấp nhận thiết lập nhãn ngôn ngữ cho đối tượng gồm giá trị biên a, b, c, d hàm thuộc tương ứng Nút Fuzzy SQL chuyển qua giao diện thiết lập câu truy vấn mờ Nút Quit: khỏi chương trình, Phía datagridview hiển thị liệu bảng chọn Phần giao diện thiết kế thực thi truy vấn mờ ngơn ngữ (xem hình 3.3): 52 Hình 3.3: Giao diện thiết kế thực thi câu lệnh truy vấn mờ ngôn ngữ Thiết kế với mục đích giúp người dùng tiến hành thiết lập thực thi câu truy vấn mờ giao diện trực quan Trong phần Fields, liệt kê danh sách trường bảng district Trong phần Where, liệt kê trường định nghĩa phần Người dùng chọn trường chọn vào nhãn ngơn ngữ “low”, “medium”, “high” Sau chọn vào nút Set Where để thiết lập điều kiện mờ Sau điều kiện lập chọn phép kết nối để chọn tiếp điều kiện thứ hai Trong phần use quantifier, người dùng muốn sử dụng lượng từ chọn vào chọn lượng từ tương ứng, Giá trị Alpha xác định mức độ thỏa câu truy vấn (0.1 đến 1.0) Nút Finish SQL để hoàn chỉnh câu truy vấn mờ Toàn câu truy vấn mờ hiển thị textbox câu truy vấn mờ 53 Nút Run: thực thi câu truy vấn mờ ngôn ngữ giá trị thỏa điều kiện datagridview phía Nút Reset: thiết lập lại điều kiện câu truy vấn Nút Quit: khỏi chương trình 3.7 Bàn luận Những kết đạt Xây dựng câu truy vấn mờ ngôn ngữ hệ quản trị sở liệu PostgreSql Định nghĩa biến ngôn ngữ nhãn ngôn ngữ, lưa chọn kết nối lô-gic lượng từ mờ truy vấn mờ ngôn ngữ Thử nghiệm truy vấn mờ ngôn ngữ CSDL quan hệ vào toán Thất nghiệp Long An, xuất kết truy vấn với giao trực quan thân thiện với người dùng Hạn chế Mặt dù luận văn đạt số kết định, nhiên hạn chế cần cải thiện thời gian tới truy vấn với nhiều bảng sơ liệu quan hệ Xây dựng giao diện biến ngôn ngữ linh hoạt 54 KẾT LUẬN Đề tài “Nghiên cứu hệ thống truy vấn mờ ngôn ngữ CSDL quan hệ” đạt số kết sau: Hệ thống hóa kiến thức CSDL quan hệ, ngôn ngữ SQL, logic mờ lý thuyết tập mờ Khái quát cách tiến cập truy vấn mờ ngôn ngữ xây dựng câu truy vấn ngôn ngữ linh hoạt, câu truy vấn SQL với QCI, với lượng từ mờ Nghiên cứu hệ thống truy vấn mờ ngôn ngữ CSDL quan hệ Triển khai câu truy vấn mờ ngôn ngữ hệ quản trị CSDL PostgreSQL Mô hệ thống truy vấn mờ ngôn ngữ CSDL quan hệ vào tình hình Thất nghiệp Long An 55 TÀI LIỆU THAM KHẢO  Tiếng Việt [1] Trần Quang Duy (2007), Lý thuyết chuẩn hóa sở liệu mờ ngôn ngữ SQL mờ, luận văn thạc sĩ, Trường đại học công nghệ Đại học Quốc gia Hà Nội [2] Phạm Vũ Hoàng (2006), Cơ sở liệu mờ ứng dụng, luận văn thạc sĩ, Trường đại học công nghệ - Đại học Quốc gia Hà Nội [3] Nguyễn Cát Hồ Nguyễn Cơng Hào, Giáo trình logic mờ ứng dụng Khoa Công nghệ công tin, trường Đại học khoa học [4] Phạm Thị Linh (2010), Một số chiến lược cập nhật sở liệu mờ, luận văn thạc sĩ, Trường đại học Nông nghiệp Hà Nội [5] Phan Anh Phong, Giáo trình logic mờ lập luận xấp xỉ, Khoa CNTT, trường Đại học Vinh, 2016 [6] Phan Anh Phong, Giáo trình hệ sở liệu nâng cao, Khoa CNTT, trường Đại học Vinh, 2015  Tiếng Anh [7] Zhang Peng, A Study on Database Fuzzy Query Method in SQL – Department of Computer Foundation Studies, Shenyang Institute of Engineering, Shenyang, Liaoning, 110136 China [8] Miroslav Hudec and Miljan Vučetić, Some issue of Fuzzy Querying in ralational databases, Institute of Mathematics of the Czech Academy of Sciences [9] Miroslav Hudec, Fuzzy improment of the SQL, Institute of Informatics and Statistics, Bratislava, Slovakia [10] Olivier Pivert , Thomas Girault, Fuzzy Queries for Everyone Grégory Smits1, 1IRISA-University of Rennes, France Freelance Engineer 56 [11] Poonam Rathee, Fuzzy SQL for Linguistic Queries, Department of Computer Science Aim &Act, Banasthali Vidyapeeth Rajasthan India [12] R.G Sapre, Y.S Pawar, and Sayali R Sapre, On Effective Data Retrieval from SQL by use of Fuzzy Logic , Rukmai Technical Institute, Solapur, Maharashtra, India Department of Mathematics, Gogate Jogalekar College, Ratnagiri, Maharashtra, India Gogate Jogalekar College, Ratnagiri, Maharashtra, India [13] Tien-Chin Wang, Hsien-Da Lee, Chun-Ming Chen, Intelligent Queries based on Fuzzy Set Theory and SQL, Kaohsiung, Taiwan [14] Syed Saood Zia, Idris Mala, Pervez Akhtar, Shahid Hafeez Mirza (2011), “Application of Fuzzy Relation Databases in media informatics“ , 10.11.9/INMIC.2011.6151507 [15] PostgreSQL: https://www.postgresql.org 57 PHỤ LỤC ' Hàm cập nhật giá trị a,b,c,d hàm thuộc Sub MembershipFunctionValueUpdate(ByVal ValueUpdate As String, ByVal flag As Integer) Select Case ValueUpdate Case "unemployment" If flag = Then nameloai1(0).a = CSng(TxtAcceptableValue_a.Text) nameloai1(0).b = CSng(TxtIdealValue_b.Text) nameloai1(0).c = CSng(txtIdealValue_c.Text) nameloai1(0).d = CSng(TxtAcceptableValue_d.Text) Else If flag = Then nameloai1(1).a= CSng(TxtAcceptableValue_a.Text) nameloai1(1).b = CSng(TxtIdealValue_b.Text) nameloai1(1).c = CSng(txtIdealValue_c.Text)` nameloai1(1).d= CSng(TxtAcceptableValue_d.Text) Else nameloai1(2).a= CSng(TxtAcceptableValue_a.Text) nameloai1(2).b = CSng(TxtIdealValue_b.Text) nameloai1(2).c = CSng(txtIdealValue_c.Text) nameloai1(2).d= CSng(TxtAcceptableValue_d.Text) End If End If Case "Area" If flag = Then nameloai1(3).a = CInt(TxtAcceptableValue_a.Text) nameloai1(3).b = CInt(TxtIdealValue_b.Text) nameloai1(3).c = CInt(txtIdealValue_c.Text) nameloai1(3).d = CInt(TxtAcceptableValue_d.Text) Else If flag = Then nameloai1(4).a= CInt(TxtAcceptableValue_a.Text) nameloai1(4).b = CInt(TxtIdealValue_b.Text) nameloai1(4).c = CInt(txtIdealValue_c.Text) nameloai1(4).d= CInt(TxtAcceptableValue_d.Text) 58 Else nameloai1(5).a = CInt(TxtAcceptableValue_a.Text) nameloai1(5).b = CInt(TxtIdealValue_b.Text) nameloai1(5).c = CInt(txtIdealValue_c.Text) nameloai1(5).d= CInt(TxtAcceptableValue_d.Text) End If End If Case "Population" If flag = Then nameloai1(6).a = CInt(TxtAcceptableValue_a.Text) nameloai1(6).b = CInt(TxtIdealValue_b.Text) nameloai1(6).c = CInt(txtIdealValue_c.Text) nameloai1(6).d = CInt(TxtAcceptableValue_d.Text) Else If flag = Then nameloai1(7).a= CInt(TxtAcceptableValue_a.Text) nameloai1(7).b = CInt(TxtIdealValue_b.Text) nameloai1(7).c = CInt(txtIdealValue_c.Text) nameloai1(7).d= CInt(TxtAcceptableValue_d.Text) Else nameloai1(8).a= CInt(TxtAcceptableValue_a.Text) nameloai1(8).b = CInt(TxtIdealValue_b.Text) nameloai1(8).c = CInt(txtIdealValue_c.Text) nameloai1(8).d= CInt(TxtAcceptableValue_d.Text) End If End If Case "Density" If flag = Then nameloai1(9).a = CInt(TxtAcceptableValue_a.Text) nameloai1(9).b = CInt(TxtIdealValue_b.Text) nameloai1(9).c = CInt(txtIdealValue_c.Text) nameloai1(9).d = CInt(TxtAcceptableValue_d.Text) Else If flag = Then nameloai1(10).a= CInt(TxtAcceptableValue_a.Text) nameloai1(10).b = CInt(TxtIdealValue_b.Text) nameloai1(10).c = CInt(txtIdealValue_c.Text) nameloai1(10).d= 59 CInt(TxtAcceptableValue_d.Text) Else nameloai1(11).a= CInt(TxtAcceptableValue_a.Text) nameloai1(11).b = CInt(TxtIdealValue_b.Text) nameloai1(11).c = CInt(txtIdealValue_c.Text) nameloai1(11).d= CInt(TxtAcceptableValue_d.Text) End If End If End Select End Sub ' Hàm tính độ thuộc µ Function MiCalculatorFuction(ByVal x As Single, ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single) Dim Mi As Single If (x = d) Then Mi = Else If (x > a And x < b) Then Mi = (x - a) / (b - a) Else If (x >= b And x

Ngày đăng: 01/02/2021, 21:28

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w