đặc tả thuật toán môn thiết kế cơ sở dữ liệu

26 623 0
đặc tả thuật toán môn thiết kế cơ sở dữ liệu

Đ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

1 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA HỆ THỐNG THÔNG TIN ĐẶC TẢ THUẬT TOÁN MÔN THIẾT KẾ SỞ DỮ LIỆU Sinh viên thực hiện :  Trần Hưng Nghiệp – 07520245  Nguyễn Thành Phương – 07520285  Nguyễn Ngọc Linh – 07520194 GIÁO VIÊN HƯỚNG DẪN: Phan Nguyễn Thụy An Thành phố Hồ Chí Minh, tháng 1 năm 20 2 CHƯƠNG 1: TỔNG QUAN 1. Đặt vấn đề: Cơ sở dữ liệu quan hệ được xây dựng theo lý thuyết do E.F.Codd giới thiệu năm 1970. Mô hình quan hệ nhiều ưu điểm hơn hẳn các mô hình trước nó và từ năm 1980 đã trở thành mô hình được dùng rộng rãi để phát triển hệ quản trị CSDL. Cùng với sự phát triển của mô hình dữ liệu quan hệ, nhiều vấn đề lý thuyết và thực nghiệm nảy sinh và được giải quyết . Khi thiết kế CSDL quan hệ ta thường đứng trước vấn đề lựa chọn giữa các lược đồ quan hệ: lược đồ nào tốt hơn? Tại sao? … Có thể nói tổng quát một lược đồ quan hệ cấu trúc tốt là lược đồ không chứa đựng các vấn đề liệt sau đây: a. thừa dữ liệu Là sự trùng lặp thông tin trong CSDL. Ví dụ: Xét lược đồ quan hệ NHACC(Ten_NCC, Hang, DonGia, Diachi_NCC). Nếu một nhà cung cấp cung cấp nhiều mặt hàng thì địa chỉ nhà cung cấp phải lặp lại nhiều lần  kéo theo thừa dữ liệu. Ngoài việc gây lãng phí dung lượng lưu trữ, sự thừa dữ liệu thể gây ra những hậu quả nghiêm trọng đối với dữ liệu khi người dùng cập nhật dữ liệu làm cho dữ liệu không tương thích, thiếu nhất quán. Ví dụ: Xét lại lược đồ NHACC trên. Ta thể sửa địa chỉ một nhà cung cấp tại một bộ nào đó mà không sửa ở một bộ khác gây ra địa chỉ không nhất quán của cùng một nhà cung cấp. b. Dị thường do thêm dữ liệu Không thể chèn bộ mới vào quan hệ nếu không đầy đủ dữ liệu. Ví dụ: Ta không thể ghi nhận địa chỉ một nhà cung cấp nếu nhà cung cấp đó không cung cấp mặt hàng nào cả vì Ten_NCC, Hang tạo thành một khoá cho quan hệ. c. Dị thường do xóa dữ liệu 3 Ngược lại với vấn đề c, khi ta xoá hết các mặt hàng do một hãng cung cấp, ta không thể theo dõi được địa chỉ của hãng đó. Trong ví dụ trên, vấn đề này sẽ không còn nữa khi ta thay quan hệ NHACC bằng hai quan hệ: NCC_ĐC(TÊN_NCC, ĐC_NCC) NCC_HG(TÊN_NCC, TÊN_HG, GIA) Cách giải quyết các vấn đề trên khi thiết kế lược đồ quan hệ là xây dựng lược đồ đạt các dạng chuẩn. 2. sở kiến thức: a. Phụ thuộc hàm: Phụ thuộc hàm (functional dependancy) là một công cụ dùng để biểu diễn một cách hình thức các ràng buộc toàn vẹn. Phương pháp biểu diễn này rất nhiều ưu điểm, và đây là một công cực kỳ quan trọng, gắn chặt với lý thuyết thiết kế sở dữ liệu. Phụ thuộc hàm ứng dụng trong việc giải quyết các bài toán như: tìm khoá, tìm phủ tối thiểu, xác định dạng chuẩn… Định Nghĩa Phụ Thuộc Hàm: Cho R(A 1 ,…,A n ) là một đồ quan hệ với tập thuộc tính U={A 1 ,…,A n }. X và Y là tập con của U. Xét một quan hệ cụ thể r nao đó. Ta nói X  Y (đọc là: X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu với mỗi cặp bộ u, v của r thỏa: u[X] = v[X]  u[Y] = v[Y] Để chứng minh và suy ra các phụ thuộc hàm khác từ các phụ thuộc hàm đã ta dùng hệ tiên đề Armstrong: Gọi R(U) là lược đồ quan hệ với U = {A 1 ,…,A n } là tập các thuộc tính. X, Y, Z, W  U. Hệ tiên đề Armstrong bao gồm: F1) Tính phản xạ: Y  X  X  Y 4 F2) Tính tăng trưởng: X  Y  XZ  YZ F3) Tính bắc cầu: X  Y, Y  Z  X  Z b. Bao đóng: Bao đóng (closure) của tập phụ thuộc hàm F (ký hiệu là F + ) là tập hợp tất cả các phụ thuộc hàm thể suy ra từ F dựa vào các tiên đề Armstrong. Tức nó phải thoả hai tính chất sau: i) F +  F ii) Khi áp dụng các hệ tiên đề Armstrong cho F + ta không thu được phụ thuộc hàm nào nằm ngoài F + . Bao Đóng Của Tập Thuộc Tính : Cho tập phụ thuộc hàm F trên tập thuộc tính U và X  U. Bao đóng của tập thuộc tính X (đối với F), ký hiệu X + , là tập sau: X + = {A | X  A  F + } c. Bài toán thành viên: Qua phần trên ta nhận thấy X + được định nghĩa thông qua F + . Vấn đề nảy sinh khi nghiên cứu lý thuyết CSDL là: Cho trước tập các phụ thuộc hàm F và một phụ thuộc hàm f, bài toán kiểm tra hay không f ∈ F + gọi là bài toán thành viên. d. Siêu khóa, khóa: Cho quan hệ R(U, F), với U là tập thuộc tính, F là tập phụ thuộc hàm. Cho K ⊆ U. Định nghĩa Siêu Khoá Của Quan Hệ : K là một siêu khoá của R nếu thoả điều kiện sau: K xác định hàm mọi thuộc tính trong U. Tức là K + = U. Định nghĩa Khoá Của Quan Hệ : 5 K là một khoá của R nếu thỏa: K là siêu khóa và không siêu khóa nào nhỏ hơn K. Tức là K + = U và H⊂K ⇒ H + ≠ U. Một lược đồ quan hệ thể nhiều siêu khoá, nhiều khoá. e. Phủ tối thiểu: Tập phụ thuộc hàm tối thiểu là tập phụ thuộc hàm thoả mãn các điều kiện sau: 1) Vế phải của mỗi phụ thuộc hàm trong F chỉ 1 thuộc tính. 2) Mọi phụ thuộc hàm X  A  F đều không thừa, tức là tập phụ thuộc hàm có từ F bằng sự loại bỏ phụ thuộc hàm X  A: F \ {X  A} không tương đương với F. 3) Với mỗi phụ thuộc hàm X  A  F, mọi thuộc tính B  X đều không thừa, tức là tập phụ thuộc hàm từ F bằng việc thay phụ thuộc hàm X  A bởi phụ thuộc hàm (X \{B})  A : (F \ {X  A})  {X \ {B})  A} không tương đương với F. Tập phụ thuộc hàm tương đương của F: Tập phụ thuộc hàm G được gọi là tương đương với F nếu và chỉ nếu F + = G + Ký hiệu: F ≡ G Phủ tối thiểu của F: Là tập phụ thuộc hàm tối thiểu và tương đương với F Ký hiệu : PTT(F) f. Các dạng chuẩn: Như đã nói ở trên, một lược đồ quan hệ thể bị thừa dữ liệu, dị thường do thêm, dị thường do xóa. Những vấn đề trên đã được giải quyết qua việc xây dựng các dạng chuẩn. Xét lược đồ quan hệ R(U, F), với U là tập thuộc tính, F là tập phụ thuộc hàm. 6 i) Dạng chuẩn 1: R được xem là đạt dạng chuẩn 1 nếu mọi thuộc tính của R đều khác rỗng, phụ thuộc hàm vào khoá và miền trị nguyên tố (tức là không đa hợp và đa trị). ii) Dạng chuẩn 2: R được xem là đạt dạng chuẩn 2 nếu nó đạt dạng chuẩn 1 và mọi thuộc tính không khóa phải phụ thuộc đầy đủ vào khóa. iii) Dạng chuẩn 3: R được xem là đạt dạng chuẩn 3 nếu nó đạt dạng chuẩn 2 và mọi thuộc tính không khóa đều không phụ thuộc bắc cầu vào khóa. Một cách định nghĩa khác : R được xem là đạt dạng chuẩn 3 nếu mọi phụ thuộc hàm không hiển nhiên trong F đều vế trái chứa khóa hay vế phải nằm trong khóa iv) Dạng chuẩn B – C : R được xem là đạt dạng chuẩn B – C nếu mọi phụ thuộc hàm không hiển nhiên trong F đều vế trái chứa khóa. 3. Yêu cầu cho đề tài:  Đề tài phải trình bày rõ ràng các thuật toán sau và các thuật toán bổ trợ: o Thuật toán tìm Bao đóng o Thuật toán kiểm tra Phụ thuộc hàm thành viên o Thuật toán tìm Khóa o Thuật toán tìm Phủ tối thiểu o Thuật toán xác định Dạng chuẩn  Cài đặt thử nghiệm các thuật toán trên trong phần mềm giao diện đồ họa, nhập liệu trực tiếp hay từ file dữ liệu nhập. 7 CHƯƠNG 2: CHI TIẾT CÁC THUẬT TOÁN 1. Thuật toán tìm Bao đóng cho tập thuộc tính: Cho lược đồ quan hệ R(U, F), tập thuộc tính U, tập phụ thuộc hàm F. Tìm X + F ? a. Ý tưởng: - Bao đóng của X ít nhất X. - Duyệt qua tất cả các phụ thuộc hàm, nếu vế trái nằm trong Bao đóng thì thêm vế phải vào Bao đóng. - Lặp lại đến khi đi hết một lượt mà không thêm thuộc tính nào được thêm vào Bao đóng. b. Mô hình hóa:  Input: Tập thuộc tính cần tìm bao đóng X, Tập phụ thuộc hàm F.  Output: Bao đóng X + F . 8 TimBaoDong(X, F) { TapCu = null TapMoi = X While (TapCu <> TapMoi) TapCu = TapMoi for each (pth P->Q) in F If P  TapMoi Then TapMoi = TapMoi  Q End If Next (pth P->Q) End While Return TapMoi } c. Độ phức tạp, nhận xét, cải tiến: Thuật toán trên độ phức tạp tính toán O(n 2 ) với n là số thuộc tính của lược đồ quan hệ R. Thuật toán thể cải tiến bằng cách: Sau khi thêm Q vào TapMoi, ta loại bỏ pth P->Q ra khỏi F. Vì ta đã thêm Q rồi nên không cần xét thêm nữa. Ta thể xây dựng thuật toán với độ phức tạp tuyến tính, sử dụng LIST. 2. Thuật toán kiểm tra phụ thuộc hàm thành viên: Cho lược đồ quan hệ R(U, F), tập thuộc tính U, tập phụ thuộc hàm F. Cho phụ thuộc hàm f: X->Y. Kiểm tra xem f thuộc F + không? a. Ý tưởng: - X->Y  F +  X + F  Y b. Mô hình hóa:  Input: Phụ thuộc hàm cần kiểm tra f: X→Y, Tập phụ thuộc hàm F.  Output: true nếu f là thành viên của F + , false nếu ngược lại. KiemTraPTHThanhVien(X, Y, F) { X + F = TimBaoDong(X, F) 9 if Y  X + F then return true else return false } c. Độ phức tạp, nhận xét, cải tiến: Thuật toán trên độ phức tạp tính toán O(n 2 ) với n là số thuộc tính của lược đồ quan hệ R. Đó cũng là độ phức tạp của thuật toán tìm Bao đóng của tập thuộc tính, là cốt lõi của thuật toán này. 3. Thuật toán tìm khóa: Cho lược đồ quan hệ R(U, F), tập thuộc tính U, tập phụ thuộc hàm F. Tìm tất cả các khóa của R? a. Ý tưởng: (Tìm khóa Vét cạn) - Tìm tất cả các siêu khóa : o Liệt tất cả các tập con của U o Tìm bao đóng của các tập con đó o Nếu Bao đóng = U thì tập con đó là siêu khóa. - So sánh các siêu khóa, loại bỏ cái lớn hơn đi được các khóa. b. Mô hình hóa:  Input: Tập thuộc tính U, Tập phụ thuộc hàm F.  Output: Tập các khóa K. TimKhoaVetCan(U,F) { Dim CacTapCon, CacSieuKhoa CacTapCon = TimCacTapCon(U) for each TapCon in CacTapCon { if TimBaoDong(TapCon, F) = U then 10 CacSieuKhoa = CacSieuKhoa  {TapCon} end if } 'loại bỏ các siêu khóa không nhỏ hơn for each SieuKhoa1 in CacSieuKhoa for each SieuKhoa2 in CacSieuKhoa { if SieuKhoa2  SieuKhoa1 then CacSieuKhoa = CacSieuKhoa \ SieuKhoa1 break; end if } Return CacSieuKhoa ' Tập các khóa cuối cùng sau khi đã bỏ các siêu khóa không nhỏ hơn đi } c. Độ phức tạp, nhận xét, cải tiến: Thuật toán trên độ phức tạp tính toán O(2 n n 2 ) với n là số thuộc tính của lược đồ quan hệ R. Bảo đảm tìm được tất cả các Siêu khóa và các Khóa. Khi số thuộc tính trong U là lớn thì việc duyệt qua tất cả các tập con là không khả thi. Nên ta đưa ra thuật toán tìm khóa bằng đồ thị sau để giới hạn số tập con sẽ xét. Thuật toán này chỉ để tham khảo, chương trình của nhóm không sử dụng thuật toán này. d. Ý tưởng: (Tìm khóa bằng đồ thị) - Dựa trên biểu diễn đồ thị của R: Gốc là thuộc tính chỉ nằm bên vế trái, lập là thuộc tính không ở trong phụ thuộc hàm nào, Trung gian là thuộc tính nằm ở cả hai vế, Lá là thuộc tính chỉ nằm bên vế phải. - Các thuộc tính ở gốc và lập chắc chắn nằm trong khóa. - Các thuộc tính trung gian thể ở trong khóa hoặc không. - Các thuộc tính ở lá chắc chắn không ở trong khóa. e. Mô hình hóa: [...]... cầu TÀI LIỆU THAM KHẢO [1] Trịnh Minh Tuấn , “Giáo trình thiết kế sở dữ liệu NXB Đại học Quốc gia TP Hồ Chí Minh, 2009 [2] “Giáo trình sở dữ liệu , Trường Cao đẳng Công nghiệp 4 [3] Phạm Thị Xuân Lộc, “Bài giảng sở dữ liệu Khoa Công nghệ thông tin, Trường Đại học Cần Thơ [4] Đỗ Trung Tuân, sở dữ liệu NXB Đại học quốc gia Hà Nội [5] PGS.TSKH Trần Quốc Chiến, “Giáo trình sở dữ liệu ... Else Return 1 End If End Function CHƯƠNG 4: NHẬN XÉT, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 25 Ở trên chúng ta đã tìm hiểu các kiến thức bản về mô hình sở dữ liệu quan hệ, các thuật toán nền tảng thao tác trên các thành phần của một lược đồ sở dữ liệu quan hệ Các thuật toán trên chủ yếu tập trung vào phần thứ nhất của lý thuyết thiết kế sở dữ liệu quan hệ là xác định xem một lược đồ quan hệ tốt... càng giảm xuống nhưng công việc xử lý để lấy dữ liệu ra lại nhiều hơn Lược đồ đạt dạng chuẩn BC sẽ không dữ liệu thừa Nhưng khi đó dữ liệu sẽ bị phân tán ra nhiều quan hệ, việc lấy dữ liệu sẽ phải kết nhiều quan hệ và chọn rồi chiếu Nếu đạt dạng chuẩn thấp thì dữ liệu sẽ tập trung ở một chỗ và khi đó ta chỉ cần chọn và chiếu chứ không cần thực hiện phép kết Như vậy làm sao xác định phân rã đến dạng... vấn đề nảy sinh về thừa dữ liệu, bất thường khi thêm, xóa… Tuy nhiên còn một phần vô cùng quan trọng của lý thuyết thiết kế sở dữ liệu là xây dựng các dạng chuẩn cao bằng cách phân rã các lược đồ quan hệ đã khi chúng không đạt dạng chuẩn cao Chúng ta cũng nên lưu ý một nguyên tắc là được cái này thì sẽ mất cái khác Khi lược đồ đạt dạng chuẩn càng cao thì sự thừa dữ liệu sẽ càng giảm xuống... K for each TC in TapCon if (TC+F  KK) then return false end if } return true } c Độ phức tạp, nhận xét, cải tiến: Thuật toán trên phụ thuộc nhiều vào các thuật toán thành phần của nó Thông thường thì các lược đồ quan hệ ta xét đều miền trị nguyên tố và đạt dạng chuẩn 1 6 Các thuật toán hỗ trợ: Tìm các tập con a Ý tưởng: Xây dựng lần lượt các tập con số thuộc tính tăng dần để không phải sắp xếp... tin, Trường Đại học Cần Thơ [4] Đỗ Trung Tuân, Cơ sở dữ liệu NXB Đại học quốc gia Hà Nội [5] PGS.TSKH Trần Quốc Chiến, “Giáo trình sở dữ liệu Đà Nẵng [5] Lê Tiến Vương, “Nhập mônsở dữ liệu quan hệ” NXB Khoa học và Kỹ thuật, 1995 [6] Jeffrey D Ullman – Stanford University, “Principles of Database and Knowledge – Base systems” (Volume 1&2) Computer Science Press 26 ... trí của B trong U, last(AB)=1 , last(AC) =2) Debug mẫu a A B C D b AB AC AD BC BD CD c ABC ABD ACD BCD d ABCD CHƯƠNG 3: CÀI ĐẶT CÁC THUẬT TOÁN I Cấu trúc dữ liệu List được dùng làm cấu trúc lưu trữ chính vì đây là cấu trúc động, sử dụng tối ưu cho bộ nhớ, và các hàm cần thiết hỗ trợ như : Add, Addrange, index, RemoveAt … Tập thuộc tính U: Dim str_U As List(Of String) 18 Mục đích: Mỗi thuộc tính là... siêu khóa không nhỏ hơn đi } f Độ phức tạp, nhận xét, cải tiến: Thuật toán trên độ phức tạp tính toán tối đa O(2nn2) với n là số thuộc tính của lược đồ quan hệ R Nhưng thường đạt thấp hơn do giới hạn số tập con cần duyệt không phải 2 n nữa 12 Bảo đảm tìm được tất cả các Khóa Nhưng không bảo đảm tìm được tất cả các siêu khóa 4 Thuật toán tìm Phủ tối tiểu cho tập phụ thuộc hàm: Cho lược đồ quan hệ... TimBaoDong(P, (F \ f)) if P+(F\f)  Q then F = F \ f } } ' -f Độ phức tạp, nhận xét, cải tiến: Thuật toán trên chỉ cho ta 1 PTT(F), các phủ tối thiểu khác được khi ta thay đổi thứ tự của các tập con khi thay thế các phụ thuộc hàm không đầy đủ 5 Thuật toán xác định Dạng Chuẩn: Cho lược đồ quan hệ R(U, F), tập thuộc tính U, tập phụ thuộc hàm F Xác định dạng chuẩn? a Ý tưởng:... lst_TG As New List(Of String) ' Các thuộc tính trung gian (3) Dim lst_R As New List(Of String) ' Các thuộc tính lập ( rời) (4) Dim lst_key As New List(Of String) ' Kết quả Dim lst_kq As New List(Of List(Of String)) Dim int_kt As Integer 'Thiết lập tập gốc, trung gian, rời rạc For i As Integer = 0 To lst_U.Count - 1 int_kt = Kiem_Tra_TT(lst_U(i), lst_F) If int_kt = 1 Then lst_Goc.Add(lst_U(i)) ElseIf . các thuật toán sau và các thuật toán bổ trợ: o Thuật toán tìm Bao đóng o Thuật toán kiểm tra Phụ thuộc hàm thành viên o Thuật toán tìm Khóa o Thuật toán. HỌC CÔNG NGHỆ THÔNG TIN KHOA HỆ THỐNG THÔNG TIN ĐẶC TẢ THUẬT TOÁN MÔN THIẾT KẾ CƠ SỞ DỮ LIỆU Sinh viên thực hiện :  Trần Hưng Nghiệp – 07520245

Ngày đăng: 09/03/2014, 21:04

Hình ảnh liên quan

b. Mơ hình hóa: - đặc tả thuật toán môn thiết kế cơ sở dữ liệu

b..

Mơ hình hóa: Xem tại trang 8 của tài liệu.
e. Mơ hình hóa: - đặc tả thuật toán môn thiết kế cơ sở dữ liệu

e..

Mơ hình hóa: Xem tại trang 12 của tài liệu.
b. Mơ hình hóa: - đặc tả thuật toán môn thiết kế cơ sở dữ liệu

b..

Mơ hình hóa: Xem tại trang 13 của tài liệu.
b. Mơ hình hóa: - đặc tả thuật toán môn thiết kế cơ sở dữ liệu

b..

Mơ hình hóa: Xem tại trang 16 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan