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

Bài tập nhóm thiết kế cơ sở dữ liêu

17 2 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

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THIẾT KẾ CƠ SỞ DỮ LIỆU Nhóm 21: +Đồn Đình Phúc 07520278 +Nguyễn Quốc Huy 05720546 Hồ Chí Minh – 1/2010 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com I Giới thiệu thông tin chung: I.1 Thông tin nhóm thực hiện:  Nhóm 21  Thành viên: o Đồn Đình Phúc MSSV: 07520278 o Nguyễn Quốc Huy MSSV: 07520546 I.2 Mục tiêu đồ án: Nhằm nghiên cứu, tìm hiểu nắm rõ yêu cầu thuật toán để thiết kế sở liệu hoạt động hiệu I.3 Kết đạt nhóm: Thiết lập chương trình với chức đáp ứng nhu cầu hỗ trợ việc học tập sử dụng thiết kế sở liệu LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com II Các thuật tốn sử dụng: II.1 Thuật toán danh sách tập tập thuộc tính  Ý tưởng:  Ý tưởng 1: Gọi {U n-1} danh sách tập tập n-1 thuộc tính, {Un + n } danh sách tập hợp tạo cách thêm thuộc tính thứ n vào tất tập hợp {U n} {n} tập hợp chứa thuộc tính thứ n o {Un+1} = {Un} + {Un + n} + {n}  Ý tưởng 2: Số tập khác rỗng tập có n thuộc tính 2^n - Sử dụng mảng chiều có n phần tử để biểu diễn số nhị nhân có giá trị thập phân tương ứng từ đến 2^n -1 Với số nhị phân thu được, ánh xạ thành tập thuộc tính với quy ước có, khơng có thuộc tinh  Lựa chọn: Dựa việc test thử nghiệm theo câu trúc chương trình, nhóm đinh chọn ý tưởng thứ hai tốc độ xử lí nhanh 60 – 70%  Thuật tốn: o B1: Bắt đầu  Nhận tập thuộc tính đầu vào có n thuộc tính  Tạo mảng chiều Bin có n phần tử kiểu liệu logic (boolean) mặc định false o B2:Lặp lại B3, B4 2^n -1 lần o B3: Tăng giá trị số nhị phân mảng biểu diễn lên đơn vị o B4: Ánh xa theo mảng nhị phân để nhận tập thuộc tính tương ứng Thêm vào danh sách kết LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com o B5: Sắp xếp lại danh sách kết o B6: Trả danh sách kết o B7: Kết thúc  Đoạn chương trình: ''' ''' Return an AttSetList contains all not-null subsets of X ''' Public Shared Function SubSets(ByVal X As AttSet) As AttSetList 'DS KQ Dim result As New AttSetList 'So lan lap se thuc hien Dim Times As Integer = ^ X.Count - 'Mang nhi phan Dim Bin(X.numAtt) As Boolean 'Vong lap chay 2^n - lan For index As Integer = To Times 'Tap thuoc tinh de luu tap Dim tmpAttSet As New AttSet 'Tang gia tri mang nhi phan len tinh tu vi tri dau ChangeNext(Bin, 0) 'Bat dau ânh xa mang tap thuoc tinh tuong ung For index1 As Integer = To X.Count - 'Neu la tru thi them thuoc tinh o vi tri tuong ung vao tap hien tai If Bin(index1) = True Then tmpAttSet.AddAtt(X.Items(index1)) End If Next 'Them tap vua tim dc vao kq result.AddNewSet(tmpAttSet) Next 'KQ Return result End Function 'Ham tang gia tri mang nhi phan len Private Shared Sub ChangeNext(ByRef Bin As Boolean(), ByVal index As Integer) Bin(index) = Not Bin(index) If Bin(index) = False Then ChangeNext(Bin, index + 1) End If LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com End Sub  Hoạt động: o Chạy tốt với tập thc tính 12 phần tử, trương hợp 12 thuộc tính khoảng 15s (theo tốc độ máy nhóm) Nguyên nhân phần ảnh hưởng cấu trúc liệu lưu trữ o Kết trả không xếp, nên số trường hợp phải xếp lại hàm khác II.2 Thuật tốn tìm bao đóng tập thuộc tính lược đồ quan hệ  Ý tưởng: Duyệt tất phụ thuộc hàm tập phụ thuộc hàm tập thuộc tính kết khơng phát triển thêm thuộc tính ngừng lại  Thuật tốn: o B1: Bắt đầu  Nhận tập thuộc tính cần tìm bao đóng X  Xác định tập phụ thuộc hàm F = {fi} ; i = 1…n fi = pi -> qi  (X)+ = X o B2:  (X)+tạm= (X)+ o B3:  Với fi : pi -> qi thuộc F  Nếu (X)+ chứa pi (X)+ = (X)+ U {qi} LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com o B4: Nếu (X)+ (X)+tạm lặp lại B2 o B5: Kết = (X)+ o B6: kết thúc  Đoạn chương trình: ''' ''' Return Closure of AttSet X in Schema R ''' Public Shared Function Closure(ByVal R As Schema, ByVal X As AttSet) As AttSet Dim Result As New AttSet 'Neu X chi bao gom cac TT cua R.U 'If AttSet.Contains(R.U, X) Then Result.CopyFrom(X) Dim numAtt As Integer 'Bat dau vong lap Do 'Giu lai KQ truoc numAtt = Result.numAtt 'Voi moi PTH cua R For index As Integer = To R.F.numFD - 'Ve trai Dim Left As AttSet = R.F(index).getLeft 'Ve phai Dim Right As AttSet = R.F(index).getRight 'Neu Neu KQ hien tai co chua ve trai cua PTH dang xet thi tham cac TT ve phai vao KQ If AttSet.Contains(Result, Left) Then Result.AddFrom(Right) End If Next 'Lap lai den nao KQ ko thay di nua Loop While numAtt Result.numAtt ' End If 'KQ Return Result End Function  Hoạt động: Đoạn chương trình chạy tốt cấu trúc liệu nhóm liệu test II.3 Thuật toán kiểm tra phụ thuộc hàm thành viên: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com  Ý tưởng: Nếu phụ thuộc hàm f : p -> q thành viên tập phụ thuộc hàm F lược đồ quan hệ R bao đóng p lược đồ R chứa q  Thuật toán: o B1: Bắt đầu  Xác đinh tập thuộc tính vế trái (p) vế phải (q) f  Nhận lược đồ quan hệ R để xác định tập phụ thuộc hàm F o B2: Tìm báo đóng vế trái  (p)+ = Baodong(R,p) o B3:  Với thuộc tính qi thuộc {q}  Nếu qi khơng thuộc (p)+ chuyển xuống B5 o B4: Kết = f thành viên F R Chuyển xuống B6 o B5: Kết = f không thành viên F R o B6: Kết thúc  Đoạn chương trình: ''' ''' Return a value indicating that if FD f is a member of the specified Schema ''' Public Shared Function IsMember(ByVal R As Schema, ByVal f As FD) As Boolean Dim ClosureLeft As AttSet = Schema.Closure(R, f.getLeft) 'Neu bao dong cua ve trai cua f co chua ve phai thi tra ve dung If ClosureLeft.Contains(f.getRight) Then Return True End If 'Neu khong tra ve sai Return False End Function LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com  Hoạt động: Đoạn chương trình chạy tốt cấu trúc liệu nhóm liệu test thư nghiệm II.4 Thuật tốn tìm danh sách khóa lược đồ quan hệ:  Ý tưởng: Sử dụng thuật tốn tìm khóa học chương trình  Thuật toán: o B1: Bắt đầu  Xác nhận lược đồ quan hệ R cần tìm danh sách khóa, tập thuộc tính U tập phụ thuộc hàm F o B2: Xác đinh tập thuộc tính cho yêu cầu tìm khóa  Trái = tập hợp tất thuộc tính vế trái tất phụ thuộc hàm tập F  Phải = tập hợp tất thuộc tính vế phải tất phụ thuộc hàm tập F  Gốc = Trái / Phải  Trung gian = Trái ∩ Phải  Treo = R.U / (Trái + Phải)  Nguồn = Gốc + Treo o B3: Kiểm tra bao đóng Nguồn  (Nguồn)+ = BaoDong(R, Nguồn)  Nếu (Nguồn)+ = R.U thêm tập Nguồn vào danh sách kết Chuyển xuống B5 o B4:  Với tập Xi tập Trung gian LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com  Nếu Xi thuộc danh sách bỏ qua chuyển qua tập  Tạm = Nguồn + Xi  Nếu (Tạm)+ = R.U o Thêm tập Tạm vào danh sách kết o Thêm tập Xi vào danh sách bỏ qua o B5: Kết = danh sách kết o B6: Kết thúc  Đoạn chương trình: ''' ''' Return a AttSetList Contains all keys of the specified Schema ''' ''' Schema R ''' ''' Public Shared Function KeysList(ByVal R As Schema) As AttSetList Dim Result As New AttSetList 'Tat ca TT ve trai cua R Dim Left As AttSet = R.F.LeftAttributes 'Tat ca TT ve phai cua R Dim Right As AttSet = R.F.RightAttributes 'Goc = Left/Right Dim Roots As AttSet = AttSet.Diff(Left, Right) 'La = Right/Left Dim Leaves As AttSet = AttSet.Diff(Right, Left) 'Trung gian = Giao(Left,Right) Dim Intermedia As AttSet = AttSet.Intersection(Left, Right) 'Treo = R.U/Hop(Left, Right) Dim HangOver As AttSet = AttSet.Diff(R.U, AttSet.Union(Left, Right)) 'Nguon = Goc + Treo Dim Source As AttSet = AttSet.Union(Roots, HangOver) 'Neu bao dong cua nguon bang R.U thi them nguon vao ds khoa If Schema.Closure(R, Source).Equals(R.U) Then Result.AddNewSet(Source) Else 'Neu nguon khong la khoa 'Ds cac tap cua trung gian Dim SubSetsList As AttSetList = AttSet.SubSets(Intermedia) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10 'Ds cac tap da ket hop voi nguon khoa Dim ExcludeSets As New AttSetList 'Voi moi tap con, tru tap cuoi cung For index As Integer = To SubSetsList.NumSet - Dim tmpAttSet As AttSet = SubSetsList.AttSet(index) Dim InExcludeSets As Boolean = False 'Voi moi tap da thuoc khoa For index1 As Integer = To ExcludeSets.NumSet - 'Neu tap chua tap da la khoa If tmpAttSet.Contains(ExcludeSets.AttSet(index1)) Then 'dieu chinh gia tri bien InExcludeSets = True Exit For End If Next 'Neu khong thuoc khoa thi If Not InExcludeSets Then 'Khoa tam la hop cua nguon va tap hien tai Dim tmpKey As AttSet = AttSet.Union(Source, tmpAttSet) 'Neu bao dong cua khoa tam bang R.U thi them vao KQ If Schema.Closure(R, tmpKey).Equals(R.U) Then Result.AddNewSet(tmpKey) 'Them Tap thuoc khoa vao DS ExcludeSets.AddNewSet(tmpAttSet) End If End If 'Tap tiep theo cua trung gian Next End If 'KQ Return Result End Function  Hoạt động: Đoạn chương trình chay tốt cho kết tương đối chinh xác liệu thử Tuy nhiên bị ảnh hưởng thuất tốn tìm tập nên lược đồ quan hệ có 12 thuộc tính thuộc tập trung gian ảnh hưởng đến thời gian tính tốn kết II.5 Thuật tốn tìm phủ tối thiểu: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11  Ý tưởng: Sử dụng thuật tốn tìm phủ tối thiểu học chương trình o B1: Biến đổi tập phụ thuộc hàm để phụ thuộc hàm tập có vế phải thuộc tính o B2: Loại bỏ phụ thuộc dư thừa o B3: Sửa phụ thuộc hàm không đầy đủ (dư thừa thuộc tính vế trái)  Vấn đề mắc phải: o Với liệu test:  R=(U,F) ; U = {A,B,C,D} F = {A,C,D -> B; D->C; C->A; B->C}  Hiện tại, PTH D->C chưa phải phụ thuộc hàm dư thừa F’ = F – (D->C) = {A,C,D->B; C->A; B->C}  F’ F không tương đương (D->C) khơng thành viên F’, cho dù loại đươc PTH kết thu khơng  Xét tính đầy đủ PTH, ta sửa PTH A,C,D->B không đầy đủ thành D->B  Vào lúc này, PTH D-> C trở thành dư thừa  F’’ = F – (D->C) = {D->B; C->A; B->C}  F’’ F tương đương (D)+ F’’ = {D,B} o Hướng giải quyết:  Cách 1: Lặp lại từ B2 B3 có thay đổi PTH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12  Cách 2: Theo suy luận nhóm, ta làm đầy đủ hồn tồn (khơng dư thừa thuộc tính vế trái) tất PTH trước loại bỏ PTH dư thừa bảo đảm  Khi loại bỏ PTH dư thừa không làm thay đổi bao đóng tập PTH Nếu xét làm đầy đủ PTH trước loại bỏ PTH dư thừa kết thu không thay đổi, phụ thuộc hàm dư thừa bị biến đổi dư thừa  Xét PTH không đày đủ trước làm xuất PTH không đầy đủ cịn ẩn ví dụ test Sau ta loại bỏ dư thừa  Thuật tốn: Trên sơ đó, nhóm định sử dụng thuật tốn tìm phủ tối tiểu sau o B1: Bắt đầu  Xác định lược đồ quan hệ R nhập vào, phân tích tập thuộc tính U tập phụ thuocj hàm F o B2: Biến đổi tập PTH F thành tập phụ thuộc hàm có vế phải đơn  Với f : p -> q thuộc F  Với tập thuộc tính qi có thuộc tính q o Tạo phụ thuộc hàm p -> qi o Thêm PTH vào F  Xóa f khỏi F o B3: Sửa PTH không đầy đủ  Với PTH f: p -> q thuộc F LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13  Nếu p có thuộc tính f PTH đầy đủ, chuyển sang PTH  Với tập pi tập p (được xếp theo chiều tăng dần số thuộc tinh tập con) o Nếu (pi)+ R có chứa q PTH không đầy đủ  Lập PTH đầy đủ f’:pi -> q  F = F - {f} + {f’}  Chuyển sang PTH F (*Giải thích thuật tốn: f: p -> khơng đầy đủ tồn tập pi p mà F ≡ F – {f} + {pi -> q} Về thay đổi hai PTH F bao đóng F khơng thay đổi nên nói cách khác, f khơng đầy đủ pi -> q PTH thành viên F R, với pi tập p) o B4: Loại PTH dư thừa  Với f: p -> q thuộc F  Tạo tập PTH tạm F’ = F – f  Nếu (p)+ F’ có chứa q f phụ thuộc hàm dư thừa o Loại F = F – {f}  Chuyển sang PTH F o B5: Kết Tập PTH F o B6: kết thúc  Đoạn chương trình ''' LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 14 ''' Return the Minimum Cover FDSet of the specified Schema ''' Public Shared Function MinimalCover(ByVal R As Schema) As FDSet Dim tmpR As New Schema tmpR.CopySchema(R) 'B1: Tach cac PTH ve phai TT tmpR.FDSet = tmpR.F.ToMonoFDSet 'B2: Sua cac PTH khong day du tmpR = tmpR.Complete 'B3: Loai cac PTH du thua tmpR = tmpR.RemoveRedundant() 'KQ Return tmpR.F End Function (*Các thuật toán xin vui lịng theo dõi source code chương trình)  Hoạt động : Đoạn chương trình hoạt động tốt liệu thử nhóm Tuy nhiên cac thuật tốn có sử dụng đên tim tập nên với trường hợp số thuộc tính vế lớn kết chậm II.6 Các thuật toán xác định dạng chuẩn:  Ý tưởng: o Dạng chuẩn 2: Kiểm tra tất PTH có dạng Khóa -> thuộc tính khơng Khóa có phải PTH đầy đủ hay không o Dạng chuẩn 3: Một lược đồ quan hệ đạt dạng chuẩn tất phụ thuộc hàm không hiển nhiên X -> Y tập phụ thuộc hàm thỏa mãn điều kiện:  X siêu khóa (chứa khóa)  Y thuộc tính khóa o Dạng chuẩn BC: Một lược đồ quan hệ đạt dạng chuẩn tất phụ thuộc hàm không hiển nhiên X -> Y tập phụ thuộc hàm có vế trái siêu khóa LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15  Thuật toán o Dạng chuẩn 2:  B1: Bắt đầu  Xác nhận lược đồ quan hệ R, phân tích tập thuộc tính U tập PTH F  K = {Ki} tập khóa R  N = {ni} với ni thuộc tính khơng khóa R  B2:  Với Ki thuộc K o Với ni thuộc N  Xét pth f: Ki -> ni có PTH đầy đủ hay khơng (*)  Nếu có chuyển sang thuộc tính N  Nếu khơng chuyển xuống B4  B3: R đạt dạng chuẩn 2, chuyển xuông B5  B4: R không đạt dạng chuẩn  B5: Kết thúc (*): Xem lại thuật toán B3 thuật tốn tìm Phủ tối thiểu o Dạng chuẩn 3:  B1: Bắt đầu  Xác nhận lược đồ quan hệ R, phân tích tập thuộc tính U tập PTH F  K = {Ki} tập hợp khóa Ki R LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 16  A = {ai} tập cuhứa thuộc tính khóa R  B2:  Với f: p -> q thuộc F o Nếu f PTH hiển nhiên chuyển sang PTH tiêp theo o Với Ki thuộc K, Ki chứa p chuyển sang PTH o Nếu A chứa q chuyển sang PTH o Chuyển xuống B4 (Khi f khơng thỏa điều kiện trên)  B3: Lược đồ quan hệ đạt dạng chuẩn 3, chuyển xuống B5  B4: Lược đồ quan hệ không đạt dạng chuẩn  B5: Kết thúc o Dạng chuẩn BC  B1: Bắt đầu  Xác nhận lược đồ quan hệ R, phân tích tập thuộc tính U tập PTH F  K = {Ki} tập hợp khóa Ki R  B2:  Với f: p -> q thuộc F o Nếu f PTH hiển nhiên chuyển sang PTH tiêp theo o Với Ki thuộc K, Ki chứa p chuyển sang PTH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 17 o Chuyển xuống B4 (Khi f khơng thỏa điều kiện trên)  B3: Lược đồ quan hệ đạt dạng chuẩn BC, chuyển xuống B5  B4: Lược đồ quan hệ không đạt dạng chuẩn BC  B5: Kết thúc  Đoạn chương trình: Xin theo dõi source code chương trình III Các thuật tốn ngồi u cầu:  Thuật tốn kiểm tra phụ thuộc bắc cầu  Thuật tốn Tìm hình chiếu tập phụ thuộc hàm tập thuộc tình R  Thuật toán phân rã lược đồ đát DC Boyce-Codd bảo tồn thơng tin *Các thuật tốn nhóm test kết hoạt động tốt IV Các thuật tốn có khả phát triển:  Phân rã đạt dạng chuẩn bảo toàn phụ thuộc hàm  Kiểm tra tập lược đồ sau phân rã bảo tồn thơng tin  Kiểm tra tập lược đồ sau phân rã bảo toàn phụ thuộc hàm V Kết thúc hướng phát triển: - Nhìn chung chương trình nhóm hoạt động tốt, hạn chế cịn thuật tốn tìm danh sách tập Một phần khác cấu trúc biểu diễn nhóm chưa hiệu Những vấn đề khắc phục để xây dựng chương trình hiệu LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... thuật toán để thiết kế sở liệu hoạt động hiệu I.3 Kết đạt nhóm: Thiết lập chương trình với chức đáp ứng nhu cầu hỗ trợ việc học tập sử dụng thiết kế sở liệu LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com... danh sách tập tập thuộc tính  Ý tưởng:  Ý tưởng 1: Gọi {U n-1} danh sách tập tập n-1 thuộc tính, {Un + n } danh sách tập hợp tạo cách thêm thuộc tính thứ n vào tất tập hợp {U n} {n} tập hợp chứa... danh sách khóa, tập thuộc tính U tập phụ thuộc hàm F o B2: Xác đinh tập thuộc tính cho yêu cầu tìm khóa  Trái = tập hợp tất thuộc tính vế trái tất phụ thuộc hàm tập F  Phải = tập hợp tất thuộc

Ngày đăng: 01/11/2022, 15:00

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w