CÀI ĐẶT PHẦN MỀM TÍNH BAO ĐÓNG (A+) VÀ KIỂM TRA TÍNH BCNF CỦA SƠ ĐỒ QUAN HỆ
Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu MỞ ĐẦU Cơ sở dữ liệu (CSDL) là một trong những lĩnh vực được tập trung nghiên cứu của tin học nhằm giải quyết các vấn đề về quản lý, tìm kiếm và xử lý thông tin trên các hệ thống thông tin lớn, đa dạng và phức tạp. Cùng với sự phát triển mạnh mẽ của tin học và máy tính trong đời sống kinh tế, văn hoá, xã hội, .việc nghiên cứu CSDL ngày một phát triển rộng rãi và hoàn thiện hơn. Hiện nay có rất nhiều loại mô hình cho các hệ CSDL như: Mô hình mạng (Network model) Mô hình phân cấp (Hierachical model) Mô hình quan hệ (Relational model) Từ những năm 1970, mô hình dữ liệu quan hệ do E.F Codd đưa ra đã tạo ra cơ sở toán học chặt chẽ với cấu trúc hoàn chỉnh làm nền tảng cho các vấn đề nghiên cứu lý thuyết về CSDL. Với ưu điểm về tính cấu trúc và khả năng hình thức phong phú, CSDL quan hệ dễ dàng mô phỏng các hệ thông tin đa dạng trong thực tiễn tạo điều kiện lưu trữ thông tin tiết kiệm, có tính độc lập và nhất quán cao, dễ sửa đổi, bổ sung cũng như khai thác dữ liệu, mô hình quan hệ có sự phát triển mạnh mẽ về lý thuyết và ngày càng được sử dụng rộng rãi trong việc thiết kế các CSDL lớn và phức tạp. Ngôn ngữ quản trị dữ liệu cho mô hình quan hệ khá trong sáng và tự nhiên, do đó dễ học, dễ sử dụng, điều này lý giải cho sự phát triển mạnh mẽ không ngừng của các hệ quản trị CSDL trên máy tính IBM-PC như: Dbase, Foxbase, Foxpro, Access, SQL Forwin, Oracle, . Mô hình dữ liệu quan hệ đặt trọng tâm hàng đầu không phải tính hiệu quả của máy tính, mà sự mô phỏng trực quan dữ liệu theo quan điểm người dùng, cung cấp mô hình dữ liệu đơn giản, dễ hiểu, chặt chẽ và có khả năng tự Hoàng Văn Thủy 1 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu động hoá thiết kế. Trong bản luận văn này em đã trình bầy một số kiến thức cơ bản về cơ sở dữ liệu và áp dụng kiến thức này xây dựng chương trình: + Tính bao đóng (A + ). + Kiểm tra một sơ đồ quan hệ có phải là BCNF hay không ? Em xin chân thành cảm ơn thầy giáo Vũ Đức Thi đã tận tình hướng dẫn em trong quá trình làm luận văn, và em cũng xin chân thành cảm ơn Khoa Công Nghệ Thông Tin - Trường Đại Học Đông Đô đã tạo điều kiện thuận lợi cho em hoàn thành luận văn này. Do luận văn này được xây dựng trong thời gian eo hẹp với vốn kiến thức hạn chế, cho nên luận văn này không tránh khỏi những thiếu sót. Em mong nhận được những ý kiến đóng góp để kiến thức cũng như chương trình được hoàn thiện hơn. Hà Nội, Ngày 28 tháng 5 năm 2000 Người viết Hoàng Văn Thủy MỤC LỤC Hoàng Văn Thủy 2 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CHƯƠNG I: NHỮNG KHÁI NIỆM CƠ BẢN VỀ MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ . . . . . . . . . . . . . . . . . 5 1.1 Quan hệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Phụ thuộc hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Hệ tiên đề Armstrong. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 Hàm đóng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5 Sơ đồ quan hệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6 Bao đóng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7 Khoá của quan hệ, lược đồ quan hệ, họ f . . . . . . . . . . . . . . . . . . . . . . . . 13 1.8 Tập các phản khóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.9 Nửa dàn giao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.10 Hệ bằng nhau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.11 Thể hiện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.12 Sơ đồ quan hệ tương đương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.13 Thuộc tính cơ bản, thuộc tính thứ cấp . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.14 Một số thuật toán liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 CHƯƠNG II: DẠNG CHUẨN ĐỐI VỚI QUAN HỆ VÀ SƠ ĐỒ QUAN HỆ . . . . . . . . . . . . . . . . . . . . 37 Hoàng Văn Thủy 3 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu 2.1 Các khái niệm cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.2 Dạng chuẩn 2NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 2.3 Dạng chuẩn 3NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 2.4 Dạng chuẩn BCNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.5 Các thuật toán liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 CHƯƠNG III: CHUẨN HÓA DỮ LIỆU TRONG THỰC TẾ . . . 52 3.1 Dạng chuẩn thứ nhất (1NF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 3.2 Dạng chuẩn 2 (2NF ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 3.3 Dạng chuẩn 3 (3NF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 3.4 Dạng chuẩn Boyce Codd (BCNF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 CHƯƠNG IV: CÀI ĐẶT PHẦN MỀM TÍNH BAO ĐÓNG (A + ) VÀ KIỂM TRA TÍNH BCNF CỦA SƠ ĐỒ QUAN HỆ . . . . . . 63 4.1 Các Thuật toán được sử dụng trong chương trình. . . . . . . . . . . . . . . . . . 63 4.1.1 Thuật toán tính bao đóng (A + ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 4.1.2 Thuật toán kiểm tra một sơ đồ quan hệ có là BCNF hay không . . . . . . 63 4.2 Phân tích thông tin đầu vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.3 Phân tích thông tin đầu ra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 4.4 Thiết kế chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Hoàng Văn Thủy 4 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu KẾT LUẬN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 TÀI LIỆU THAM KHẢO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 CHƯƠNG I NHỮNG KHÁI NIỆM CƠ BẢN VỀ MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ Trong mục này trình bầy những khái niệm cơ bản nhất về mô hình dữ liệu quan hệ của E.F.Codd. Những khái niệm cơ bản này gồm các khái niệm về quan hệ, phụ thuộc hàm, hệ tiên đề Armstrong, khoá, Những khái niệm này đóng vai trò rất quan trọng trong mô hình dữ liệu quan hệ. Chúng được dùng nhiều trong việc thiết kế hệ quản trị cơ sở dữ liệu (CSDL) như: Dbase, Foxbase, Foxpro, Oracle, Mega, 1.1 Quan hệ . Định nghĩa 1. Cho R={a 1 ,a 2 , ,a n } là một tập hữu hạn không rỗng các tập thuộc tính. Mỗi thuộc tính a i có một miền giá trị là D ai . Khi đó r là một tập các bộ {h 1 ,h 2 , ,h m } được gọi là một quan hệ trên R với h j (j =1, 2, ,m) là một hàm: h j : R → ∪ Da i Hoàng Văn Thủy 5 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu a i ∈ R Sao cho: h j ( a i ) ∈ D ai Với định nghĩa này chúng ta sẽ lập được bảng tương đương và một bảng tương đương cũng sẽ chuyển được về định nghĩa này: a 1 a 2 . a n h 1 (a 1 ) h 1 (a 2 ) . h 1 (a n ) h 2 (a 1 ) h 2 (a 2 ) . h 2 (a n ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h m (a 1 ) h m (a 2 ) . h m (a n ) Nhận xét: - Định nghĩa này là quan trọng, toàn bộ cơ sở dữ liệu dựa trên định nghĩa này, nó là hạt nhân của cơ sở dữ liệu quan hệ. - Vì h 1 , h 2 , , h m là các thành phần trong tập hợp quan hệ trong r, cho nên các file đó là khác nhau, vì vậy không chấp nhận có hai bản ghi trùng nhau trong một file dữ liệu. Ví dụ: Để lưu dữ thông tin về các mặt hàng, người ta sử dụng bảng sau: MẶTHÀNG Hoàng Văn Thủy 6 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Mã hàng Tên hàng Màu sắc Trọng lượng Tỉnh P1 Gạch men Trắng 120 Hà Nội P2 Sơn Xanh 450 Ninh Bình P3 Kính Nâu 800 Bình Định P4 Bồn tắm Trắng 1000 Phú Thọ Chúng ta có thể quy định kích thước cho các thuộc tính (các trường) như sau: Tên thuộc tính Kiểu Kích thước Mã hàng Ký tự 5 Tên hàng Ký tự 30 Màu sắc Ký tự 15 Trọng lượng Số 10 Tỉnh Ký tự 20 Có nghĩa là chúng ta quy định: Thuộc tính Mă hàng là một xâu ký tự có độ dài không quá 5 Thuộc tính Tên hàng là một xâu ký tự có độ dài không quá 30 Thuộc tính Mầu sắc là một xâu ký tự có độ dài không qúa 15 Trọng lượng là một số nguyên không quá 10 Tỉnh là một xâu ký tự không quá 20 Như vậy ta có tập thuộc tính MẶTHÀNG = { Mã hàng, Tên hàng, Màu sắc, Trọng lượng, Tỉnh} Ở đây D Mã hàng là tập các xâu ký tự độ dài không quá 5 D Tên hàng là tập các xâu ký tự độ dài không quá 30 D Màu sắc là tập các xâu ký tự độ dài không quá 15 D Trọng lượng là tập các xâu ký tự độ dài không quá 10 D Tỉnh là tập các xâu ký tự độ dài không quá 20 Hoàng Văn Thủy 7 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Khi đó chúng ta có các quan hệ r = {h 1 , h 2 , h 3 , h 4 }, ở đây đối với bản ghi thứ nhất (dòng thứ nhất) chúng ta có h 1 (Mã hàng) = p 1 h 1 (Tên hàng) = Gạch men h 1 (Màu sắc) = Trắng h 1 (Trọng lượng) = 120 h 1 (Tỉnh) = Hà nội. 1.2 Phụ thuộc hàm Khái niệm về phụ thuộc hàm trong một quan hệ là rất quan trọng trong việc thiết kế mô hình dữ liệu. Năm 1970 E.F Codd đã đề cập phụ thuộc hàm trong mô hình dữ liệu quan hệ, nhằm giải quyết việc phân rã không tổn thất thông tin. Định nghĩa về khái niệm này được phát biểu như sau: Định nghĩa 2. (phụ thuộc hàm) Cho R = { a 1 , a 2 , , a n } là tập các thuộc tính, r = { h 1 , h 2 , , h m } là một quan hệ trên R, và A, B ⊆ R ( A, B là tập cột hay tập thuộc tính ). Khi đó ta nói A xác định hàm cho B hay B phụ thuộc hàm vào A trong r f ( ký pháp A → B ) nếu: r ( ∀ h i , h j ∈ r) (( ∀a ∈ A ) ( h i (a) = h j (a)) ⇒ ( ∀b ∈ B ) ( h i (b) = h j (b) )) Ta sẽ viết (A, B) hay A → B thay cho A B Đặt F r ={(A, B): A, B ⊆ R, A → B } Lúc đó F r được gọi là họ đầy đủ các phụ thuộc hàm của r . Nhận xét: Hoàng Văn Thủy 8 r f Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu - Ta có thể thấy rằng B mà phụ thuộc hàm vào A, nếu hai dòng bất kỳ mà các giá trị của tập thuộc tính A mà bằng nhau từng cặp một, thì kéo theo các giá trị trên tập thuộc tính B cũng phải bằng nhau từng cặp một. - Với định nghĩa này dễ thấy rằng trong các file dữ liệu cột, mã số hoặc số thứ tự không thể bằng nhau. Ví dụ: Xét quan hệ THISINH SBD HOTEN DIACHI TINH KHUVỰC BKA0001 Nguyễn Văn An 12 Kỳ lừa Lạng Sơn 0 BKA0002 Nguyễn Hải Anh 16 Hàng đào Hà Nội 3 BKA0003 Trần Thúy Anh 33 Hàng bồ Hà Nội 3 BKA0004 Vũ Thúy Anh 89 Văn lãng Lạng Sơn 0 BKA0005 Vũ Vân Anh 40 Trần hưng đạo Hải Dương 2 Trong quan hệ THISINH, dựa vào định nghĩa phụ thuộc hàm của quan hệ ta có: { TINH } → { KHUVUC } { SBD } → { HOTEN, DIACHI, TINH, KHUVUC } Khái niệm phụ thuộc hàm miêu tả một loại ràng buộc ( phụ thuộc dữ liệu) xẩy ra tự nhiên nhất giữa các tập thuộc tính. Phụ thuộc hàm trên tập các thuộc tính R là một dãy các ký tự có dạng A → B, ở đây A, B ⊆ R. Ta nói phụ thuộc hàm A → B đúng trong r nếu A B . Ta nói rằng r thoã mãn A → B. Hoàng Văn Thủy 9 r f Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Dễ thấy F r là tập tất cả các phụ thuộc hàm đúng trong r. 1.3 Hệ tiên đề Armstrong. Năm 1974, Armstrong đã chỉ ra được bốn đặc trưng cho một tập phụ thuộc hàm của một file dữ liệu nào đó. Chúng được gọi là hệ tiên đề Armstrong. Định nghĩa 3. (Hệ tiên đề Armstrong) Cho trước R = {a 1 , a 2 , , a n } là một tập hữu hạn không rỗng các thuộc tính. ta gọi P(R) x P(R) = {(A, B) : A, B ⊆ R } Khi đó : Y ⊆ P(R) x P(R) là họ f nếu ∀ A, B, C, D ⊆ R có 1). (A, A) ∈ Y 2). (A, B) ∈ Y, (B, C) ∈ Y ⇒ (A, C) ∈ Y 3). (A, B) ∈ Y, A ⊆ C, D ⊆ B ⇒ (C, D) ∈ Y 4). (A, B) ∈ Y, (C, D) ∈ Y ⇒ (A ∪ C, B ∪D) ∈ Y Hệ quả 4. (Tính đầy đủ cuả hệ tiên đề Armstrong) Armstrong đã chỉ ra rằng, nếu Y là một họ f tuỳ ý thì tồn tại quan hệ r sao cho F r = Y. - A A ⇒ (A, A) ∈ F r A B - ⇒ A C B C - A B (A ⊆ C, D ⊆ B) ⇒ C D Ví dụ: Cho r 1 , r 2 là các quan hệ: a b a b 1 0 1 0 Hoàng Văn Thủy 10 r r r r r r [...]... tập con Y Trong khi đó việc tính bao đóng của tập thuộc tính A lại không khó Theo kết quả đã trình bầy ở trên thì việc kiểm tra A → B ∈ F+ không khó hơn việc tính A+ Ta có thể tính bao đóng của sơ đồ quan hệ (A+) theo thuật toán sau: Thuật toán 2 (Tính bao đóng của một tập các thuộc tính trên tập các phụ thuộc hàm đối với sơ đồ quan hệ) Input : s = < R, F > là một sơ đồ quan hệ trong đó R = (a1, a2, ,... là thuộc tính thứ cấp Nhận xét: Thuộc tính cơ bản và thuộc tính thứ cấp đóng một vai trò quan trọng trong việc chuẩn hóa các sơ đồ quan hệ và các quan hệ Đinh lý 26 Cho trước một sơ đồ quan hệ s = < R, F > và một thuộc tính a Bài toán xem a có phải là thuộc tính cơ bản hay không là bài toán NP - đầy đủ 1.14 Một số thuật toán liên quan Thuật toán 1 (Tìm tập các thuộc tính cơ bản của một quan hệ trên... là sơ đồ quan hệ trên tập các thuộc tính R, A ⊆ R ký hiệu A+ = { a: A →{a} ∈ F+} A+ được gọi là bao đóng của A trên s Rõ ràng A → B ∈ F+ nếu và chỉ nếu B ⊆ A+ Định nghĩa 10 ( Bao đóng của một tập thuộc tính trên tập phụ thuộc hàm của một quan hệ) Giả sử r = { h1, h2, , hm } là một quan hệ trên R = { a1, a2 , , am } Ta đặt f + A r ={a : A r {a}} A+r được gọi là bao đóng của A trên r 1.7 Khóa của quan. .. cột 4 1.6 Bao đóng Định nghĩa 8 (Bao đóng của các tập phụ thuộc hàm) Giả sử F là tập các phụ thuộc hàm trên sơ đồ quan hệ s = < R, F > Gọi F+ là tập tất cả các phụ thuộc hàm có thể suy dẫn lôgic từ F bởi các luật của hệ tiên đề Armstrong Khi ấy F+ được gọi là bao đóng của F Hoàng Văn Thủy 12 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Định nghĩa 9 (Bao đóng của tập các thuộc tính) Giả... của quan hệ, sơ đồ quan hệ, họ f Định nghĩa 11 Giả sử r = { h1, h2, , hm} là một quan hệ, s = < R, F > là một sơ đồ quan hệ, trong đó R = {a 1, a2, , an} là tập các thuộc tính, F là tập tất cả các phụ thuộc hàm trên R Gọi Y là một họ f trên R và A ⊆ R Khi ấy A là một khoá của r ( tương ứng là một khoá của s, một khóa của Y) nếu: f A r R ( A → R ∈ F+, (A, R) ∈Y) Nghĩa là A phải thoả mãn các tính chất... Thủy 11 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Lớp các họ phụ thuộc hàm Lớp các hàm đóng 1.5 Sơ đồ quan hệ Định nghĩa 7 Cho trước R = {a1, a2, , an} là tập các thuộc tính Khi đó s là một sơ đồ quan hệ, s = < R, F > A1 → B1 A2 → B2 F= At → Bt ở đây Ai, Bi ⊆ R ( i = 1, ,t ) và Ai → Bi là phụ thuộc hàm Ví dụ: Cho sơ đồ quan hệ s = < R, F >, với R = {a1, a2, a3, a4} {a1} → {a3,... vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu 1.13 Thuộc tính cơ bản, thuộc tính thứ cấp Định nghĩa 25 (Thuộc tính cơ bản, thuộc tính thứ cấp) Giả sử r = { h1, h2, , hm } là một quan hệ trên R = { a1, a2, , an } và Kr là tập tất cả các khóa tối tiểu của r Ta nói a là một thuộc tính cơ bản của r nếu tồn tại một khoá tối tiểu K (K ∈ Kr ) để a là một phần tử của K Nếu a không là thuộc tính cơ bản,... {a3, a4, a5} Vậy Mr là hệ bằng nhau cực đại của r 1.11 Thể hiện Định nghĩa 16 Giả sử r là một quan hệ trên R và F là một họ f trên R Ta nói r thể hiện F nếu Fr = F Chúng ta có thể nói r là một quan hệ Armstrong của F Định lý 17 (Điều kiện cần và đủ để một quan hệ là thể hiện của một họ f cho trước) Giả sử r = {h1, h2, , hm}là một quan hệ, F là một họ f trên R thì thể hiện F nếu và chỉ nếu với mọi A ⊆... ra V = R Như thế mọi thuộc tính của r đều là cơ bản Định lý 27 Tồn tại một thuật toán để xác định một thuộc tính bất kỳ của một quan hệ có là cơ bản hay không với thời gian đa thức theo số hàng và số cột của r Hoàng Văn Thủy 24 Một số vấn đề liên quan đến dạng chuẩn trong hệ cơ sở dữ liệu Một vấn đề thường xuyên xảy ra là đối với một sơ đồ quan hệ cho trước (s = ), và một phụ thuộc hàm A → B,... đại của F Định nghĩa 21 Ta nói rằng B là vế phải cực đại của F nếu có A sao cho (A, B) ∈ M(F) và ta ký hiệu I(F) là tập tất cả các vế phải cực đại của F 1.12 Sơ đồ quan hệ tương đương Định nghĩa 22 Giả sử s = và t = là hai lược đồ quan hệ trên R Ta nói s là tương đương với t nếu F+ = G+ Trong trường hợp này ta có thể nói s là phủ định của t hoặc t là phủ định của s Nhận xét: Dễ dàng kiểm . (BCNF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 CHƯƠNG IV: CÀI ĐẶT PHẦN MỀM TÍNH BAO ĐÓNG (A + ) VÀ KIỂM TRA TÍNH BCNF. được gọi là bao đóng của A trên r 1.7 Khóa của quan hệ, sơ đồ quan hệ, họ f. Định nghĩa 11. Giả sử r = { h 1 , h 2 ,.., h m } là một quan hệ, s = < R,