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

(LUẬN VĂN THẠC SĨ) Nghiên cứu một số vấn đề về phụ thuộc dữ liệu và khai phá dữ liệu trong cơ sở dữ liệu quan hệ

74 3 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 74
Dung lượng 1,06 MB

Nội dung

đại học quốc gia hà nội Trờng đại học CÔNG NGHƯ  ­­­˜&™­­­ TrÇn Thμnh Trung NGHI£N CøU Mét sè vÊn đề phụ thuộc Dữ LIệU V KHAI PHá Dữ LIệU TRONG CƠ Sở Dữ LIệU QUAN Hệ LUậN VĂN THạC Sĩ HNi2009 TIEU LUAN MOI download : skknchat@gmail.com đại học quốc gia hà nội Trờng đại học CÔNG NGHệ ưưư&ưưư Trần Thnh Trung NGHIÊN CứU Một số vấn đề phụ thuộc Dữ LIệU V KHAI PHá Dữ LIệU TRONG CƠ Sở Dữ LIệU QUAN Hệ Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin M số: 60 48 05 LN V¡N TH¹C SÜ NG−êi h−íng dÉn khoa häc: pgs ts vò ngäc lo∙n  Hà Nội – 2009 TIEU LUAN MOI download : skknchat@gmail.com 1  LỜI CAM ĐOAN  Tơi xin cam đoan: Luận văn “Nghiên cứu một số vấn đề về Phụ thuộc  dữ liệu và Khai phá dữ liệu  trong Cơ sở dữ liệu quan hệ” là cơng trình  nghiên cứu riêng của tơi  Các kết quả nghiên cứu trong luận văn là trung thực. Nếu sai tơi xin hồn  tồn chịu trách nhiệm.  Hà Nội, ngày 15 tháng 11 năm 2009  Học viên  Trần Thành Trung TIEU LUAN MOI download : skknchat@gmail.com 2  LỜI CẢM ƠN  Tác giả xin bày tỏ lịng biết ơn sâu sắc tới PGS.TS Vũ Ngọc Lỗn, người  đã  hướng dẫn, truyền đạt  những kinh  nghiệm  q báu  và tận tình  giúp đỡ tác  giả hồn thành  luận văn này.  Tác giả xin cảm ơn sự quan tâm giúp đỡ của các thầy, cơ trong khoa Cơng  nghệ thơng tin đã tận tình giảng dạy cũng như giúp đỡ trong q trình học tập và  nghiên cứu tại Khoa; đồng thời xin cảm ơn sự ủng hộ của các anh chị học viên  lớp K13HTTT đã động viên và giúp đỡ tác giả trong q trình thực hiện đề tài  này.  Hà Nội, ngày 15 tháng 11 năm 2009  Học viên  Trần Thành Trung TIEU LUAN MOI download : skknchat@gmail.com 3  TĨM TẮT  Lớp phụ thuộc dữ liệu đóng vai trị rất quan trọng trong q trình thiết kế  cơ sở dữ liệu thì và một trong những lớp phụ thuộc dữ liệu đầu tiên là lớp phụ  thuộc hàm. Ngày nay, việc mở rộng lớp phụ thuộc hàm này (mờ hố) đang được  nghiên cứu và tiếp cận theo nhiều hướng khác nhau. Với mục tiêu nghiên cứu về  việc mở rộng này cũng như các khái niệm liên quan, trong đề tài nghiên cứu đã  tìm  hiểu sâu  về phụ thuộc dữ  liệu và trình bày các nội dung  liên quan đến lớp  phụ  thuộc  hàm  mờ  (fuzzy  functional  dependency),  bao  đóng  tập  thuộc  tính  và  thuật tốn tìm bao đóng tập thuộc tính mờ (fuzzy transitive closure),  khố mờ  (fuzzy key) và thuật tốn tìm khố mờ, các dạng chuẩn mờ trong CSDL quan hệ.  Bên cạnh đó đề tài cũng đã nghiên cứu về việc mở rộng một trong những định lý  quan trọng nhất của việc nghiên cứu CSDL đó là định lý tương đương TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 4  ABSTRACT  Data dependency plays a very important role in the process of designing  the  database  and  one  of  the  first  data  dependency  class  is  the  functional  dependency.  Today,  the  expansion  of  the  functional  dependency  (fuzzy  functional dependency) are being studied and approached in several ways. With  the  objective  of  researching  on  the  expansion  of  functional  dependency  and  related concepts,  my  thesis  focus on researching about data  dependency,  fuzzy  functional  dependency,  fuzzy  transitive  closure    and  the  algorithm  for  finding  fuzzy  transitive  closure  of  attributes  ,  fuzzy  key    and  the  algorithm  of  finding  fuzzy keys in relational database. Besides, my thesis also focuses on researching  about the expansion of one of the most important theorems of rational database  – the equivalence theorem (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 5  MỤC LỤC  LỜI CAM ĐOAN 1  LỜI CẢM ƠN 2  TÓM TẮT 3  ABSTRACT 4  DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 7  DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 8  DANH MỤC CÁC BẢNG BIỂU 9  MỞ ĐẦU 10  I.  Mục tiêu nghiên cứu của đề tài 10  II.  Một số kết quả đạt được .10  III.  Bố cục của Luận văn .11  CHƯƠNG 1. TỔNG QUAN .12  1.1 Cơ sở dữ liệu 12  1.1.1 Các khái niệm chung 12  1.1.2 Định nghĩa 12  1.2 Phụ thuộc hàm 13  1.2.1 Định nghĩa 13  1.2.2 Tính chất của Phụ thuộc hàm (Hệ tiên đề Amstrong) 14  1.2.3 Bao đóng tập thuộc tính 15  1.2.4 Định lý tương đương .18  1.3 Khoá 19  CHƯƠNG 2. LỚP PHỤ THUỘC HÀM MỜ TRONG CƠ SỞ DỮ LIỆU QUAN  HỆ 21  2.1 Dữ liệu mờ  21  2.1.1 Tập rõ .21  2.1.2 Tập mờ .21  2.1.3 Các phép toán cơ bản trên tập mờ .22  2.2 Phụ thuộc hàm mờ 23  2.2.1 Định nghĩa 23  2.2.2 Tính chất 27  2.3 Xây dựng hệ tiên đề cho lớp Phụ thuộc hàm mờ ( Hệ tiên đề Amstrong  mở rộng) 29  CHƯƠNG 3. KHOÁ MỜ TRONG CƠ SỞ DỮ LIỆU QUAN HỆ 31  3.1  Khoá mờ .31  3.2  Bao đóng tập thuộc tính 31  +  3.2.1. Tính chất của bao đóng tập thuộc tính (X ) .32  3.2.2  Bài toán thành viên 33  3.2.3 Thuật tốn tìm bao đóng 34  3.2.4 Tính đúng của thuật tốn tìm bao đóng .37  3.3  Định lý tương đương cho tập mờ 41  3.3.1 Định nghĩa 42 (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 6  3.3.2 Định nghĩa 42  3.3.3  Định lý 42  3.4  Thuật tốn tìm khố mờ 44  3.5  Các dạng chuẩn mờ 45  3.5.1 Dạng chuẩn mờ F1NF .45  3.5.2 Dạng chuẩn mờ F2NF .46  3.5.2.1 Xác định dạng chuẩn mờ F2NF .47  3.5.2.2 Đưa quan hệ về dạng chuẩn mờ F2NF 48  3.5.3 Dạng chuẩn mờ F3NF .50  3.5.4 Dạng chuẩn mờ Boyce Codd (FBCNF)  51  KẾT LUẬN .53  4.1  Ý nghĩa khoa học và thực tiễn của đề tài .53  4.2  Kết luận và kiến nghị 53  4.2.1  Kết luận 53  4.2.2  Hướng phát triển đề tài 54  TÀI LIỆU THAM KHẢO 55  PHỤ LỤC 57 (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 7  DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT  TT  1  2  3  4  5  6  Từ viết tắt  CNTT  CSDL  HTTT  HĐH  FTH  FFD  7  FK  Nghĩa đầy đủ  Công nghệ thông tin  Cơ sở dữ liệu  Hệ thống thông tin  Hệ điều hành  Phụ thuộc hàm  Fuzzy  Functional  Dependency  ­  Phụ  thuộc  hàm  mờ  Fuzzy Key – khoá mờ (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 8  DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ  Hình 1: Hệ thống thơng tin 12  Hình 2: Hệ thống Cơ sở dữ liệu 13  Hình 3: Tập mờ và tập rõ 22  Hình 4: Tập Input 71  Hình 5: Giao diện cài đặt thuật tốn 71  Hình 6: Giao diện chạy thuật tốn (Nhập tập thuộc tính cần tính bao đóng X + ) 72  Hình 7: Kết quả bao đóng của tập thuộc tính {A,B,C} 72 (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 58  c,Y: char;  f: TEXT;  s: String;  muc_thoa,chi_so:array [1 50] of real;  vt,thuoc_tinh:array[1 50]of char;  vp: array[1 50]of string;  code: integer;  Blist, X, last: contro;   {Blist la bao dong tam thoi}  MXD: mang;  {Mien xac dinh cua tap thuoc tinh}  {**********Thu tuc doc du lieu tu File *******}  Procedure Doc_du_lieu;  Begin  Assign(f, 'Input.txt');  Reset(f);  readln(f);  readln(f,n);  readln(f,m);  for i:=4 to (3+n) do  begin  while not EOLN(f) do  begin (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 59  read(f,thuoc_tinh[i]);  read(f,c);  read(f,s);  val(s,chi_so[i],Code);  end;  readln(f);  end;  readln(f);  readln(f);  i:=14;  While not EOF(F) do  begin While not EOLN(f) do  begin  read(f,vt[i]);  read(f,c); read(f,c);  read(f,c);  s:='';  while c' ' do  begin  s:=s+c;  read(f,c); (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 60  end;  vp[i]:=s;  read(f,c);  read(f,s);  val(s,muc_thoa[i], Code);  end;  readln(f);  i:=i+1;  end;  End;  {Ham kiem tra xem thuoc tinh Y da nam trong MXD hay chua?}  Function Kiemtra(Y:char;MXD: mang):Boolean;  var i:byte;  kt:Boolean;  Begin  kt:= false;  for i:=1 to 50 do  begin  if (Y=MXD[i]) then  begin  kt:=true;  end; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 61  end;  Kiemtra:=kt;  End;  {***********Ham kiem tra xem phan tu co thuoc danh sach hay  khong*************}  function kiem_tra_thuoc(c: char; p: contro): boolean;  var q: contro;  kt: boolean;  begin  q:= p;  kt:= false;  if p= nil then kt:= false  else  begin  while q nil do begin  if (q^.thuoc_tinh = c) then  begin  kt:= true;  break;  end;  q:=q^.next;  end; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 62  end;  kiem_tra_thuoc:= kt;  end;  {******************************************************}  function min(a,b: real): real;  begin  if a>b then min:= b  else min:= a;  end;  {******************************************************}  function max(a,b: real):real;  begin  if a>b then max:=a  else max:= b;  end;  {************Ham so sanh 2 bao dong tam thoi*********}  Function Sosanh(var X:contro; var Y:contro): Boolean;  var tg:contro;  kt: boolean;  Begin  tg:=X;  While tgnil do (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 63  begin  if not(kiem_tra_thuoc(tg^.thuoc_tinh, Y)) then  begin  sosanh:= true;  exit;  end;  tg:= tg^.next;  end;  tg:=Y;  While tgnil do  begin  if not(kiem_tra_thuoc(tg^.thuoc_tinh, X)) then  begin  sosanh:= true;  exit;  end;  tg:= tg^.next;  end;  sosanh:= false;  End;  {****Thu tuc them phan tu vao tap bao dong tam thoi***}  procedure Them(c: char; r: real;var p: contro); (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 64  var phan_tu_moi: contro;  begin  if p= nil then  begin  new(phan_tu_moi);  phan_tu_moi^.thuoc_tinh:= c;  phan_tu_moi^.muc_thoa:= r;  phan_tu_moi^.next:=nil;  p:= phan_tu_moi;  end  else  begin  new(phan_tu_moi);  phan_tu_moi^.thuoc_tinh:= c;  phan_tu_moi^.muc_thoa:= r;  phan_tu_moi^.next:=p;  p:= phan_tu_moi;  end;  end;  {***Ham tim vi tri cua mot thuoc tinh trong bao dong***}  Function vi_tri(c: char; p: contro): contro; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 65  var q: contro;  begin  q:= p;  while q^.thuoc_tinh c do q:= q^.next;  vi_tri:= q;  end;  {*******Ham hop mo 2 bao dong tam thoi******}  Function hop(X,Blist: contro): contro;  var p,q,tg: contro;  Begin  tg:=nil;  p:= X;  while pnil do  begin  if not(kiem_tra_thuoc(p^.thuoc_tinh,tg)) then  Them(p^.thuoc_tinh,p^.muc_thoa, tg)  else  begin q:= vi_tri(p^.thuoc_tinh,tg);  q^.muc_thoa:=max(q^.muc_thoa,p^.muc_thoa);  end; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 66  p:= p^.next;  end;  p:= Blist;  while pnil do  begin  if not(kiem_tra_thuoc(p^.thuoc_tinh, tg)) then  Them(p^.thuoc_tinh,p^.muc_thoa, tg)  else  begin  q:= vi_tri(p^.thuoc_tinh,tg);  q^.muc_thoa:= max(q^.muc_thoa,p^.muc_thoa);  end;  p:= p^.next;  end;  hop:= tg;  End;  {******************************************************}  Procedure Inbaodong( X:contro);  var p: contro;  Begin  p:=X; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 67  writeln;  writeln('Bao dong cua tap thuoc tinh ', p^.thuoc_tinh ,' la:');  While pNil do  begin  write('(',p^.thuoc_tinh,',',p^.muc_thoa:2:2,')');  write(' ');  p:=p^.next;  end;  End;  {**********Thu tuc tim bao dong cua thuoc tinh ********}  Procedure thuchien(B: char);  var i,j:byte;  p,q,tg:contro;  r: real;  Begin  {Khoi tri bao dong cua thuoc tinh B}  new(X);  X^.thuoc_tinh:=B;  X^.muc_thoa:=1;  X^.next:=nil;  {Khoi tri mien xac dinh} (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 68  for i:= 1 to 50 do  MXD[i]:='@';  {***************************************************}  MXD[2]:= B;  n:= 1;{n la so thuoc tinh trong MDX}  while (1>0) do  begin  for i:=14 to (13+m) do  begin  if Kiemtra(vt[i],MXD) then  begin  for j:= 1 to length(vp[i]) do  begin  if not(Kiemtra(vp[i][j],MXD)) then  begin  MXD[n+1]:=vp[i][j];  n:= n+1;  end;  end;  Them(vp[i][2],muc_thoa[i],Blist);  for j:= 2 to length(vp[i]) do  begin (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 69  if kiem_tra_thuoc(vp[i][j],Blist) then  begin  p:= vi_tri(vp[i][j],Blist);  P^.muc_thoa:= min(p^.muc_thoa,muc_thoa[i]);  end  else  Them(vp[i][j],muc_thoa[i], Blist);  end;  end;  end;  tg:= hop(X,Blist);  if sosanh(X,tg) then X:=tg  else exit;  end;  End;  BEGIN  clrscr;  Doc_du_lieu;  writeln('Tap thuoc tinh');  writeln('********************************************'); (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 70  for i:= 4 to (3+n) do  begin  writeln(thuoc_tinh[i], '  ', chi_so[i]:2:2);  end;  writeln;  writeln('Tap cac PTH');  writeln('********************************************');  for i:= 14 to (13+m) do  begin  writeln(vt[i], '­>',vp[i],'   ', muc_thoa[i]:2:2);  end;  Repeat  clrscr;  write('Nhap thuoc tinh de tinh bao dong: '); readln(Y);  thuchien(Y);  Inbaodong(X);  writeln;  writeln('Ban co muon tiep tuc chuong trinh khong? (C/K)');  write('Cau tra loi la: '); readln(c);  until (c='k') or (c='K');  clrscr;  readln; (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he 71  END.  Một số giao diện của việc cài đặt Thuật tốn tìm bao đóng tập thuộc tính X +  Hình 4: Tập Input  Hình 5: Giao diện cài đặt thuật tốn (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he TIEU LUAN MOI download : skknchat@gmail.com (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he (LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he(LUAN.VAN.THAC.SI).Nghien.cuu.mot.so.van.de.ve.phu.thuoc.du.lieu.va.khai.pha.du.lieu.trong.co.so.du.lieu.quan.he

Ngày đăng: 17/12/2023, 01:50

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

TÀI LIỆU LIÊN QUAN

w