Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
1,11 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Ü Hà Nội – 2009 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.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 LUËN 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 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 CHAT LUONG download : add luanvanchat@agmail.com 72 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 + ) Hình 7: Kết quả bao đóng của tập thuộc tính {A,B,C} LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... 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 ... hết sức tự nhiên của q trình phát triển? ?Cơ? ?sở? ?dữ? ?liệu. Với mong muốn được đóng góp? ?một? ?phần cơng sức nhỏ bé của mình vào việc? ?nghiên? ?cứu? ?về? ?lớp? ?phụ? ?thuộc? ?dữ? ?liệu? ?và? ?khai? ?phá? ?dữ? ?liệu? ?trong? ?CSDL? ?quan? ? hệ? ?mục tiêu? ?nghiên? ?cứu? ?của? ?đề? ?tài này chủ yếu chú trọng vào việc? ?nghiên? ?cứu? ?về? ?... 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. Khi nghiên? ? cứu? ? về? ? lớp phụ? ? thuộc? ? hàm trong? ? CSDL quan? ? hệ? ? Amstrong đã đưa ra? ?một? ?số? ?tính chất như sau: