Giáo trình Cơ sở dữ liệu - Phần 1 - Huỳnh Văn Đức
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Cơ sở dữ liệu - Phần 1 - Huỳnh Văn Đức", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
giao_trinh_co_so_du_lieu_phan_1_huynh_van_duc.pdf
Nội dung text: Giáo trình Cơ sở dữ liệu - Phần 1 - Huỳnh Văn Đức
- TRƢỜNG ĐẠI HỌC KINH TẾ TP.HCM KHOA TIN HỌC QUẢN LÝ GIÁO TRÌNH CƠ SỞ DỮ LIỆU Biên soạn: HUỲNH VĂN ĐỨC Bộ môn: HỆ THỐNG THÔNG TIN
- LỜI NÓI ĐẦU CHO LẦN XUẤT BẢN THỨ 2 Trƣớc hết chúng tôi chân thành cám ơn sự tiếp nhận của bạn đọc đối với phiên bản đầu tiên. Với phiên bản đầu tiên chúng tôi đã nhận đƣợc nhiều góp ý, thôi thúc chúng tôi sớm điều chỉnh để có phiên bản thứ hai này. Trong phiên bản này ngoài những điều chỉnh nhỏ liên quan đến biên tập, chúng tôi còn điều chỉnh và bổ sung thêm một số kiến thức và kỹ năng. Đầu tiên, chúng tôi làm rõ thêm một số khái niệm và thuật toán. Bao gồm khái niệm khóa, thuật toán tìm bao đóng của tập thuộc tính, thuật toán tìm phủ tối tiểu, quy trình thay thế đuổi. Tiếp theo là bổ sung một khẳng định “vi phạm dạng chuẩn có thể tìm thấy chính trong F”. Khẳng định này cho phép xây dựng một phƣơng thức, rõ ràng và dễ hiểu hơn, xác định dạng chuẩn của một lƣợc đồ quan hệ. Chúng tôi cũng thay thế cách thức xác định tập phụ thuộc hàm chiếu, vốn đƣợc phát biểu không chính xác trong phiên bản đầu. Cuối cùng là một phụ lục giới thiệu quá trình thiết kế một lƣợc đồ cơ sở dữ liệu cho một bài toán nhỏ nhƣng không tầm thƣờng, theo tiếp cận thực tế từ góc độ của ngƣời thiết kế có đôi chút kinh nghiệm. Qua đó cho thấy vai trò cũng nhƣ những thuận lợi và thách thức khi áp dụng lý thuyết vào thực tế. Trong lần tái bản này chúng tôi muốn đƣợc gởi lời cám ơn chân thành đến TS. Trần Minh Thuyết, khoa Tin học quản lý, đại học Kinh tế Tp.HCM vì những đóng góp quý báu và có giá trị. Một lần nữa chúng tôi rất vui mừng đón nhận các đóng góp gần xa của bạn đọc. Tp.Hồ Chí Minh, Ngày 10/05/2009 Ngƣời viết HUỲNH VĂN ĐỨC
- LỜI NÓI ĐẦU Đây là giáo trình 60 tiết đƣợc viết cho sinh viên chuyên ngành tin học quản lý của trƣờng đại học kinh tế Tp.HCM. Giáo trình này cũng có thể dùng cho chƣơng trình 45 tiết hoặc các chuyên ngành khác của ngành hệ thống thông tin kinh tế, bằng cách giảm nhẹ yêu cầu ở một số nội dung tuỳ theo mục tiêu của chƣơng trình đào tạo. Đây là giáo trình môn học nên nội dung của nó bám sát với đề cƣơng. Tuy nhiên, so với đề cƣơng, bố cục của tài liệu có một chút thay đổi. Cụ thể, mô hình thực thể kết hợp đƣợc giới thiệu cuối cùng. Sự thay đổi này xuất phát từ kinh nghiệm giảng dạy của chính tác giả và nhiều đồng nghiệp khác, có tham khảo đến một số tài liệu đƣợc chúng tôi đánh giá là hay [1][4]. Môn cơ sở dữ liệu là một trong những môn học quan trọng của chuyên ngành Tin học Quản lý. Tài liệu này đƣợc biên soạn sao cho mức lĩnh hội của sinh viên có thể đạt đến khả năng áp dụng các kiến thức của môn học, giải quyết các tình huống rất gần với thực tế. Chúng tôi đƣa ra rất nhiều ví dụ và bài tập. Những ví dụ và bài tập này khá đa dạng, nhiều ví dụ và bài tập mang tính kiểm tra đơn giản, nhiều ví dụ và bài tập khác lại mang tính áp dụng phức tạp. Giáo trình đƣợc chia làm 7 chƣơng. Chƣơng 1 giới thiệu tổng quan về cơ sở dữ liệu và môi trƣờng cơ sở dữ liệu. Chƣơng này tập trung làm rõ các khái niệm quan trọng trong lĩnh vực cơ sở dữ liệu. Các cấp độ trừu tƣợng của mô hình dữ liệu, kiến trúc cơ sở dữ liệu 3 mức cũng nhƣ các thành phần của môi trƣờng cơ sở dữ liệu và của hệ quản trị cơ sở dữ liệu đều đƣợc giới thiệu trong chƣơng này. Cuối chƣơng, chúng tôi đƣa ra hai case study để tiện sử dụng thƣờng xuyên trong giáo trình. Chƣơng 2 trình bày mô hình cơ sở dữ liệu quan hệ. Ngoài việc giới thiệu chi tiết các yếu tố mô hình tạo nên mô hình dữ liệu, chƣơng này còn cung cấp cho sinh viên những kiến thức sâu sắc về quan hệ toán học. Hiểu thấu đáo các phép toán đại số quan hệ và sử dụng thành thạo chiến lƣợc giải bài toán bằng các biểu thức đại số quan hệ, sinh viên trang bị cho mình các kỹ năng cần thiết làm việc với các hệ quản trị cơ sở dữ liệu có hỗ trợ mô hình quan hệ.
- Giáo trình cơ sở dữ liệu Chƣơng 3 giới thiệu về ngôn ngữ cơ sở dữ liệu. Do mục tiêu của môn học mà chƣơng này chỉ tập trung vào ngôn ngữ hỏi. Với kiến thức và kỹ năng có đƣợc ở chƣơng 2, cùng với cú pháp ngôn ngữ đƣợc học trong chƣơng này, sinh viên đủ tự tin làm việc với hệ quản trị cơ sở dữ liệu giải quyết nhiều bài toán xử lý dữ liệu phức tạp. Các chƣơng 4, 5 và 6 nói về lý thuyết thiết kế. Theo đó sinh viên học đƣợc cách chuẩn hoá một lƣợc đồ quan hệ với các ràng buộc phụ thuộc hàm. Thiết kế cơ sở dữ liệu là một trong những kỹ năng quan trọng của sinh viên chuyên ngành tin học quản lý. Mỗi chƣơng ở đây đảm nhận một phần riêng, nhƣng trọn vẹn, để chắc rằng sinh viên lĩnh hội đƣợc các phần riêng ấy ở mức có thể áp dụng đƣợc. Chƣơng 7 giới thiệu mô hình thực thể kết hợp. Chƣơng này trình bày phƣơng pháp luận thiết kế mô hình cơ sở dữ liệu mức quan niệm. Chúng tôi kết thúc giáo trình bằng mô hình thực thể kết hợp với hai mục đích. Thứ nhất, chúng tôi muốn sinh viên thực sự tập trung vào lý thuyết thiết kế và kỹ năng giải quyết bài toán bằng đại số quan hệ. Thứ hai, mô hình này là một điểm kết thúc quan trọng. Nó cho thấy vai trò của các chƣơng trƣớc trong toàn bộ mô hình dữ liệu. Theo đó, sinh viên sẽ chủ động chọn mức trừu tƣợng cho mô hình cơ sở dữ liệu mức quan niệm, chủ động phát biểu các phụ thuộc hàm cũng nhƣ các yếu tố vật lý của mô hình. Cấu trúc và nội dung của tài liệu đƣợc biên soạn phù hợp với mục tiêu môn học và chúng tôi đã phải chọn lọc nhiều nội dung từ các tài liệu tham khảo. Hầu hết các ký hiệu và định nghĩa lấy trong [6], riêng khái niệm phủ tối tiểu lấy trong [7]. Rất nhiều nội dung đƣợc chọn lọc từ [1]. Nhiều nội dung khác đƣợc chọn lọc từ [2, 3, 5]. Bố cục của tài liệu rất gần [4] và nhiều bài tập cũng đƣợc chọn từ [4]. Để sử dụng giáo trình đƣợc hiệu quả, sinh viên phải thực hành trực tiếp các ví dụ và bài tập trong các chƣơng 3 và 7, bằng cách sử dụng một hệ quản trị cơ sở dữ liệu và một hệ hỗ trợ lập mô hình cụ thể. Một tài liệu giới thiệu các hệ này sẽ đƣợc cung cấp cho sinh viên trƣớc khi bắt đầu môn học. Tài liệu phải giới thiệu các hệ cụ thể cũng nhƣ có các hƣớng dẫn chi tiết nhằm bảo đảm sinh viên có thể tự học đƣợc. Nhân dịp này chúng tôi chân thành cảm ơn Ban giám hiệu trƣờng đại học Kinh tế Tp.HCM, phòng Quản lý Khoa học và Hợp tác Quốc tế đã tạo điều kiện cho giáo trình này sớm đến tay sinh viên, góp phần bổ sung thêm tài liệu học tập cho sinh viên chuyên ngành tin học quản lý nói riêng và ngành hệ thống thông tin kinh tế nói chung. Chúng tôi cũng chân thành
- cảm ơn các đóng góp quý báu của các thành viên trong Hội đồng thẩm định, của quý Thầy Cô trong bộ môn, trong khoa. Dù rất nỗ lực bám sát các mục tiêu đặt ra, nhƣng tài liệu đƣợc viết ra chắc chắn vẫn còn khiếm khuyết. Chúng tôi rất vui mừng đón nhận các đóng góp của bạn đọc. Mọi đóng góp xin vui lòng gởi đến hvduc0703@gmail.com. Tp.Hồ Chí Minh, Ngày 06/06/2008 Ngƣời viết HUỲNH VĂN ĐỨC
- MỘT SỐ QUY ƢỚC KÝ HIỆU Chữ in đầu bảng alphabet: A, B, C, thường dùng để chỉ thuộc tính; Chữ thƣờng đầu bảng alphabet: a, b, c, thường dùng để chỉ một giá trị nào đó trong tập giá trị của thuộc tính A, B, C, ; Với thuộc tính có nhiều từ ta sẽ bao lại bằng dấu ngoặc vuông [ ]; Chữ in cuối bảng alphabet: X, Y, Z, thường dùng để chỉ tập các thuộc tính. Nhƣ vậy ta hiểu A X và X Y một cách bình thƣờng; Ký hiệu X = ABC = (ABC) thay cho X = {A, B, C}; Ký hiệu Z = XY thay cho Z = XY; Chữ in R, S thường chỉ lƣợc đồ quan hệ; Chữ thƣờng r, s thường chỉ quan hệ; Các chữ thƣờng t, u, v thường để chỉ bộ của quan hệ; Ký hiệu t.A là giá trị của thuộc tính A của t; Ký hiệu t.X là tập giá trị của các thuộc tính thuộc X của t; Ký hiệu r(R) nói rằng quan hệ r đƣợc định nghĩa trên lƣợc đồ R; Ký hiệu K thường để chỉ một khoá của R; Ký hiệu K (hoặc k) thường để chỉ tập các khoá của R; Ký hiệu D thường chỉ lƣợc đồ cơ sở dữ liệu; Ký hiệu d(D) hay d thường chỉ cơ sở dữ liệu; Tập phụ thuộc hàm thường đƣợc ký hiệu là F, G; Phụ thuộc hàm thường đƣợc ký hiệu là f, g;
- Giáo trình cơ sở dữ liệu Các ký hiệu R, , , hoặc ABCD, ABCD, , , đều là lƣợc đồ quan hệ; Ký hiệu 푆 푅 퐹 hay 푆 퐹 là tập tất cả các quan hệ r(R) thoả F; Ký hiệu PTT(F) là một phủ tối tiểu của F; Ký hiệu F+ là tập các phụ thuộc hàm hệ quả của F; Ký hiệu f ∊ F+ cho biết f là phụ thuộc hàm hệ quả của F; Ký hiệu 퐹 ⊨ cho biết f đƣợc suy (dẫn xuất) từ F bởi bộ luật; Ký hiệu 퐹 ⊨ cho biết G đƣợc suy (dẫn xuất) từ F bởi bộ luật; Ký hiệu 퐹 ≡ cho biết F tƣơng đƣơng G; + + Ký hiệu 퐹 hay X là bao đóng của tập thuộc tính X đƣợc suy từ F bởi bộ luật; Ký hiệu 푆(퐹) là chiếu của tập phụ thuộc hàm F lên lƣợc đồ S; Ký hiệu F‟ là tập phụ thuộc hàm chiếu của F; Ký hiệu ρ là phân rã của một lƣợc đồ quan hệ; ∪ 푠 là hợp của hai quan hệ r và s; ∩ 푠 là giao của hai quan hệ r và s; − 푠 là hiệu của hai quan hệ r và s; = 표 − là phần bù của quan hệ r; × 푠 là tích (Descartes) của hai quan hệ r và s; 휍 là chọn các bộ của quan hệ r thỏa điều kiện p; hay [ ] là chiếu của quan hệ r lên tập thuộc tính X; ⋈ 푠 là kết tự nhiên của hai quan hệ r và s; ⋈ = 푠 là kết tương đương của hai quan hệ r và s; ⋈ 휃 푠 là kết theta của hai quan hệ r và s; ⋉ 푠 là kết ngoài bên phải của hai quan hệ r và s; ⋉ 푠 là kết ngoài bên phải của hai quan hệ r và s với điều kiện C;
- ⋊ 푠 là kết ngoài bên trái của hai quan hệ r và s; ⋊ 푠 là kết ngoài bên trái của hai quan hệ r và s với điều kiện C; × 푠 là kết ngoài của hai quan hệ r và s với điều kiện kết C; ⊳ 푠 là kết trái của hai quan hệ r và s; ⊳ 푠 là kết trái của hai quan hệ r và s với điều kiện C; ⊲ 푠 là kết phải của hai quan hệ r và s; ⊲ 푠 là kết phải của hai quan hệ r và s với điều kiện C; ÷ 푠 là chia quan hệ r cho quan hệ s; 휃 là phép so sánh giữa hai trị; 휃 là phép so sánh giữa hai thuộc tính; 휃 là phép so sánh giữa một giá trị và một quan hệ; 휃 là phép so sánh giữa một thuộc tính và một quan hệ; 1NF là dạng chuẩn 1; 2NF là dạng chuẩn 2; 3NF là dạng chuẩn 3; 4NF là dạng chuẩn 4; BCNF là dạng chuẩn BC; 휌 là bảng tableaux của phân rã ρ; ∗ 휌 là bảng tableaux của ρ sau khi thực hiện quy trình thay thế đuổi; 휌, là bảng tableaux của phân rã ρ và tập thuộc tính X; ∗ 휌, là bảng tableaux của ρ và tập thuộc tính X sau khi thực hiện quy trình thay thế đuổi.
- MỤC LỤC Chƣơng 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 1 1. Mở đầu 2 2. Hệ thống dựa trên tập tin 4 2.1. Tiếp cận 4 2.2. Hạn chế 7 3. Tiếp cận cơ sở dữ liệu 8 3.1. Tiếp cận 8 3.2. Môi trường cơ sở dữ liệu 11 3.3. Mô hình dữ liệu 14 4. Tổng quan về hệ quản trị cơ sở dữ liệu 23 4.1. Chức năng 24 4.2. Thành phần 25 5. Giới thiệu các case study 29 5.1. Công ty Mỹ Gia 29 5.2. Trường đại học Tri Khánh 33 Chƣơng 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ 39 1. Mở đầu 40 2. Khái niệm 42 2.1. Quan hệ và lược đồ quan hệ 42 2.2. Khoá của lược đồ quan hệ 43 2.3. Quan hệ toán học 45 3. Mô hình 46 3.1. Cơ sở dữ liệu và lược đồ cơ sở dữ liệu 46 3.2. Ràng buộc toàn vẹn 47 4. Đại số quan hệ 55 4.1. Các ví dụ mở đầu 55 4.2. Các phép toán tập hợp: hợp, giao, hiệu và bù 59 4.3. Phép chọn 61 4.4. Phép chiếu 62 4.5. Phép kết 63 4.6. Phép chia 69 4.7. Tính toán 70
- Giáo trình cơ sở dữ liệu 5. Dùng đại số quan hệ 71 5.1. Các chiến lược 71 5.2. Tính tiền điện 72 5.3. Công ty Mỹ Gia 74 5.4. Kiểm tra ràng buộc toàn vẹn 75 Chƣơng 3 Ngôn ngữ cơ sở dữ liệu SQL 83 1. Giới thiệu case study 84 2. Ngôn ngữ con định nghĩa dữ liệu (DDL) 86 2.1. Kiểu dữ liệu 87 2.2. Tạo cơ sở dữ liệu 89 2.3. Định nghĩa miền giá trị 89 2.4. Tạo bảng (quan hệ và lược đồ quan hệ) 90 2.5. Khai báo các ràng buộc toàn vẹn 94 2.6. Tạo bảng với các ràng buộc toàn vẹn 96 2.7. Hủy bảng 97 2.8. Định nghĩa lại bảng 97 3. Ngôn ngữ con thao tác dữ liệu 98 3.1. Thêm xoá sửa 98 3.2. Truy vấn dữ liệu 99 3.3. Truy vấn con 103 3.4. Cài đặt đại số quan hệ 104 3.5. Dùng truy vấn kiểm tra ràng buộc toàn vẹn 108 4. Ngôn ngữ con điều khiển truy cập (DCL) 109 4.1. Cấp quyền cho người dùng khác 110 4.2. Hủy quyền của người dùng khác 111 4.3. View 112 Chƣơng 4 PHỤ THUỘC HÀM 119 1. Khái niệm 122 1.1. Phụ thuộc hàm 122 1.2. Tập phụ thuộc hàm 123 1.3. Luật dẫn - Hệ tiên đề Armstrong 124 1.4. Phủ của phụ thuộc hàm 125 2. Tìm phủ tối tiểu 127 2.1. Giải bài toán thành viên 127 2.2. Giải bài toán tìm phủ tối tiểu 128 3. Khảo sát tình huống 133 3.1. Tình huống 133 3.2. Giải quyết 134
- 4. Kỹ thuật tableaux 134 4.1. Áp dụng giải bài toán thành viên 135 4.2. Áp dụng giải bài toán bao đóng 136 Chƣơng 5 DẠNG CHUẨN 141 1. Bài toán tìm tất cả khoá 142 2. Các dạng chuẩn 145 2.1. Dạng chuẩn 1 145 2.2. Dạng chuẩn 2 147 2.3. Dạng chuẩn 3 148 2.4. Dạng chuẩn BC (Boyce-Codd) 149 2.5. Xác định dạng chuẩn 150 3. Chiếu của tập phụ thuộc hàm 152 3.1. Khái niệm 152 3.2. Tính chất đặc trưng đầy đủ F 154 3.3. Tính chất ép thỏa F 155 3.4. Vấn đề với dạng chuẩn BC 156 Chƣơng 6 CHUẨN HOÁ LƢỢC ĐỒ QUAN HỆ 161 1. Kiểm tra các tiêu chuẩn 162 1.1. Kiểm tra tính bảo toàn thông tin 162 1.2. Bảo toàn phụ thuộc 164 2. Chuẩn hoá 166 2.1. Tiếp cận phân rã 167 2.2. Tiếp cận tổng hợp 169 3. Dạng chuẩn 4 171 Chƣơng 7 MÔ HÌNH THỰC THỂ KẾT HỢP 179 1. Khái niệm 179 1.1. Thực thể 180 1.2. Thuộc tính 181 1.3. Mối kết hợp 183 1.4. Nhiều hơn về mối kết hợp 185 1.5. Tìm phụ thuộc hàm từ mô hình E-R 188 1.6. Các ký hiệu trong Power Designer 192 1.7. Chuyển sang mô hình quan hệ 197 2. Lập mô hình dữ liệu mức quan niệm 201 2.1. Khảo sát tình huống 202 2.2. Tìm thực thể 204 2.3. Tìm mối kết hợp 204
- Giáo trình cơ sở dữ liệu 2.4. Phân rã các mối kết hợp nhiều hơn hai ngôi 205 3. Hƣớng dẫn lập mô hình 206 3.1. Xây dựng mô hình cục bộ mức quan niệm 206 3.2. Xây dựng mô hình (toàn cục) mức quan niệm 211 Phụ lục XẾP LỊCH THỰC HÀNH 221 1. Đặc tả 221 2. Thiết kế 222 3. Cài đặt và thử nghiệm 224 4. Làm việc với cơ sở dữ liệu 225 5. Hỗ trợ lập trình 226 6. Thiết kế lại 229 7. Mô hình thực thể kết hợp 229 8. Kết luận 230
- Chƣơng 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU Mục tiêu của chƣơng. Trong chƣơng này chúng ta sẽ đƣợc giới thiệu một cách tổng quan về: Các khái niệm: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ thống cơ sở dữ liệu và mô hình cơ sở dữ liệu; Các hạn chế của các mô hình dữ liệu dựa trên hệ thống tập tin và các điểm mạnh yếu của các mô hình dữ liệu dựa trên cơ sở dữ liệu; Các vấn đề của cơ sở dữ liệu: bảo tồn, truy xuất và bảo mật; Các đặc trƣng của mô hình dữ liệu dựa trên cơ sở dữ liệu: độc lập dữ liệu, không dư thừa, nhất quán, toàn vẹn, an toàn và chia sẻ; Các mô hình cài đặt: mô hình phân cấp, mô hình mạng và mô hình quan hệ; Các mô hình dữ liệu mức quan niệm: mô hình thực thể kết hợp và mô hình hướng đối tượng; Vai trò của các lƣợc đồ logic và vật lý; Mục đích của kiến trúc cơ sở dữ liệu 3 mức: mức ngoài, mức quan niệm và mức trong; Vai trò của ngôn ngữ cơ sở dữ liệu: định nghĩa, thao tác và truy vấn; Phân loại hệ quản trị cơ sở dữ liệu; Các thành phần của một hệ quản trị cơ sở dữ liệu; Vai trò của những ngƣời dùng khác nhau: quản trị cơ sở dữ liệu, lập trình cơ sở dữ liệu và sử dụng cơ sở dữ liệu.
- 2 Giáo trình cơ sở dữ liệu 1. Mở đầu Có thể chúng ta không để ý, nhƣng trong cuộc sống hàng ngày chúng ta thƣờng có sử dụng đến cơ sở dữ liệu (database1). Chẳng hạn, khi chúng ta mua hàng ở siêu thị, một cơ sở dữ liệu sẽ đƣợc truy cập, thông quá thiết bị đọc mã vạch do nhân viên bán hàng sử dụng. Hệ thống sẽ dùng mã vạch này để truy cập đến cơ sở dữ liệu hàng hoá, tìm đơn giá sản phẩm, ghi lên hoá đơn bán hàng và giảm lƣợng tồn. Cũng vậy, khi chúng ta liên hệ một đại lý du lịch để hỏi về các tour du lịch, nhân viên tiếp nhận cũng sẽ truy cập đến cơ sở dữ liệu du lịch để cung cấp cho chúng ta các thông tin liên quan cũng nhƣ hƣớng dẫn chúng ta lựa chọn hành trình, phƣơng tiện. Hoặc xét tình huống đến mƣợn sách tại một thƣ viện. Thủ thƣ có thể phải sử dụng đến cơ sở dữ liệu thư viện lƣu trữ dữ liệu về sách, tài liệu, về tác giả, độc giả, về chi tiết mƣợn cũng nhƣ chi tiết đăng ký mƣợn khi chƣa có sách, nhằm đáp ứng các hoạt động mƣợn trả của thƣ viện. Ngày nay, sự thành công của một tổ chức phụ thuộc vào khả năng thu thập dữ liệu, quản lý chúng một cách hiệu quả cũng nhƣ dùng chúng để phân tích và định hƣớng các hoạt động. Để có các quyết định tốt chúng ta cần các thông tin có giá trị, là kết quả của các quá trình xử lý dữ liệu khác nhau. Hiện nay, các thuật ngữ nhƣ xa lộ thông tin đã dần trở nên thông dụng và công việc xử lý thông tin đã nhanh chóng phát triển thành một ngành công nghiệp nhiều tỷ đô la. Rõ ràng, việc quản lý dữ liệu hiệu quả là một trong các yếu tố quan trọng của một tổ chức. Bằng các quá trình xử lý dữ liệu phù hợp ta đƣợc thông tin. Thông tin là điểm mấu chốt để nhà quản lý sử dụng tài nguyên một cách hiệu quả. Đƣợc thông tin, đó là biết một tập các khả năng, các phƣơng án hành động giúp cho việc ra quyết định đƣợc đúng đắn. Tuy nhiên, thông tin cung cấp cho nhà quản lý phải chính xác, đầy đủ và kịp thời. Có nhƣ vậy các quyết định của họ không những đúng đắn mà còn hiệu quả. Ví dụ sau minh hoạ mối quan hệ giữa dữ liệu và thông tin. Ví dụ 1.1 Giữa quý I của năm 2001 và quý 2 của năm 2006, hai cửa hàng của công ty X phát sinh 1,380,456 và 1,453,907 hoá đơn bán hàng và nhƣ vậy dữ liệu đƣợc phát sinh bao gồm 2,834,363 số hoá đơn, 2,834,363 ngày lập, 1 Thuật ngữ data base (hai từ rời) đƣợc dùng lần đầu vào năm 1963. Thuật ngữ database (từ đơn) đƣợc sử dụng vào đầu những năm 1970 bắt đầu ở Châu Âu và trở nên thông dụng cho đến ngày nay.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 3 2,834,363 trị giá hoá đơn, 2,834,363 tham chiếu đến nhân viên bán hàng. Ngƣời quản lý muốn biết tình hình bán hàng qua chỉ tiêu doanh số trung bình theo nhân viên của mỗi cửa hàng theo từng quý. Chúng ta cần lƣu trữ các dữ liệu này và thực hiện việc xử lý để cung cấp thông tin cho nhà quản lý dƣới dạng biểu đồ. Tại thời điểm này chúng ta tạm coi công việc quản lý dữ liệu tập trung vào việc thu thập, lưu trữ và lấy lại dữ liệu. Theo đó, chúng ta quan tâm đến các phương thức quản lý dữ liệu hiệu quả. Xét ví dụ sau: Ví dụ 1.2 Trung tâm A, vào đầu mỗi tháng, có tổ chức dạy hai môn ngắn hạn là kỹ thuật bàn phím, 15 tiết, và Internet, 20 tiết. Ngoài các giảng viên cơ hữu, trung tâm còn mời thêm các giảng viên thỉnh giảng. Mỗi tháng quản lý có nhiệm vụ mở lớp, phân công giảng dạy vào đầu tháng và tính lƣơng cho mọi ngƣời vào cuối tháng. Quản lý nhận lương cứng (bằng hệ số lương nhân với lương cơ bản) cộng phụ cấp quản lý, giảng viên cơ hữu nhận lƣơng cứng và tiền giảng (bằng tổng số tiết nhân với thù lao mỗi tiết), giảng viên thỉnh giảng nhận tiền giảng nhân với hệ số mời cộng 1. Biết lương cơ bản bằng 450 (nghìn), thù lao mỗi tiết bằng 50 (nghìn), hệ số mời bằng 0.5 và phụ cấp quản lý bằng 1800 (nghìn). Hiện trung tâm có 1
- 4 Giáo trình cơ sở dữ liệu quản lý tên Minh (hệ số lương bằng 3), 2 giảng viên tên Lan (hệ số lương bằng 3) và Hùng (hệ số lương bằng 2) và 1 giảng viên mời tên Thảo. Đầu tháng này, giảng viên Lan dạy 1 lớp kỹ thuật bàn phím và 1 lớp Internet, giảng viên Hùng dạy 1 lớp kỹ thuật bàn phím còn giảng viên Thảo dạy 2 lớp Internet. Hãy tổ chức lƣu trữ toàn bộ dữ liệu và lấy lại dữ liệu này để tính toán lƣơng giúp cho quản lý Minh vào cuối tháng này. Ngoài ra, với vai trò quản lý, Minh có thể muốn có thông tin về tình hình mở lớp trong suốt một năm. Chẳng hạn anh ta muốn so sánh số lớp mở đƣợc theo từng quý trong vòng 5 năm. 2. Hệ thống dựa trên tập tin2 2.1. Tiếp cận Về mặt lịch sử, các chƣơng trình ứng dụng đầu tiên tập trung vào các tác vụ văn phòng nhỏ nhƣ xử lý đơn hàng, phân công công việc, thanh toán lương, tính tồn kho, ghi sổ kế toán. Nói chung, các tác vụ này đơn giản và dữ liệu không quá phức tạp để hiểu. Dữ liệu đƣợc lƣu trong một hệ thống các tập tin có cấu trúc riêng và có các quan hệ logic với nhau. Đặc tả chi tiết về cấu trúc và các quan hệ cũng nhƣ cách truy xuất dữ liệu từ các tập tin là hoàn toàn phụ thuộc3 vào chƣơng trình ứng dụng cụ thể. Với mỗi ứng dụng, các lập trình viên có toàn quyền trong mô tả dữ liệu và tự mình nhanh chóng xây dựng các tập tin và lƣu chúng trên các cuộn băng riêng và các đĩa từ riêng. Như vậy hệ thống dựa trên tập tin là hệ thống các chương trình ứng dụng thực hiện các dịch vụ cho người dùng cuối mà mỗi chương trình tự định nghĩa và quản lý dữ liệu riêng của nó. Với tiếp cận này chúng ta phải xây dựng các thủ tục nhập xuất thật hiệu quả và khi gặp phải các yêu cầu xử lý dữ liệu phức tạp chúng ta phải xây dựng các thuật toán chính xác. Đặc biệt nếu chúng ta có nhiều bộ phận có những chƣơng trình quản lý riêng thì việc lƣu trữ dƣ thừa là không thể tránh khỏi. Thậm chí các cấu trúc trùng lắp này lại đƣợc mô tả khác nhau. 2 Hiểu để không lặp phải những hạn chế khi thiết kế và để chuyển đổi dữ liệu. Thật ra hệ dựa trên tập tin vẫn còn tồn tại trong những hệ thống đặc biệt. 3 Mang tính sở hữu, chƣơng trình ứng dụng chiếm hữu toàn bộ dữ liệu của nó và toàn quyền trong việc tổ chức lƣu trữ cũng nhƣ chiến lƣợc truy xuất.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 5 Ví dụ 1.3 Để giải quyết bài toán ở ví dụ 2, chúng ta có thể tổ chức dữ liệu nhƣ sau4: Dùng các biến với kiểu dữ liệu có sẵn để lƣu các dữ liệu của lương cơ bản, thù lao mỗi tiết, hệ số mời và phụ cấp quản lý. Ta có: lương cơ bản = 450 thù lao mỗi tiết = 50 hệ số mời = 0.5 phụ cấp quản lý = 1800 Dùng biến (mảng) với cấu trúc {tên môn, số tiết} để lƣu dữ liệu của môn học. Ta có: Tên môn số tiết kỹ thuật bàn phím 15 internet 20 Giả sử chúng ta quyết định công thức tính lƣơng chung cho tất cả là Lương = (hệ số lương) (lương cơ bản)+ (phụ cấp quản lý) (là quản lý) + (tổng số tiết) (thù lao mỗi tiết) (1 + (hệ số mời) (là mời giảng)). Dùng biến (mảng) với cấu trúc {họ tên, hệ số lương, là quản lý, là mời giảng} để lƣu dữ liệu của quản lý, giảng viên và giảng viên mời. Ta có: Họ tên hệ số lương là quản lý là mời giảng Minh 3 1 0 Lan 3 0 0 Hùng 2 0 0 Thảo 0 0 1 Dùng biến (mảng) với cấu trúc {chỉ mục giảng viên, chỉ mục môn, số lớp} để lƣu dữ liệu phân công giảng. Ta có: Chỉ mục giảng viên chỉ mục môn số lớp 1 0 1 1 1 1 2 0 1 3 1 2 4 Chỉ là gợi ý
- 6 Giáo trình cơ sở dữ liệu Toàn bộ dữ liệu này đƣợc lƣu trong một tập tin với nội dung nhƣ sau5 450, 50, 5, 1800, 2, kỹ thuật bàn phím, 15, Internet, 20, 4, Minh, 3, 1, 0, 0, Lan, 3, 0, 0, 2, 0, 1, 1, 1, Hùng, 2, 0, 0, 1, 0, 1, Thảo, 0, 0, 1, 1, 1, 2 Chúng ta sẽ viết chƣơng trình lấy dữ liệu từ tập tin này, đƣa vào các biến nhƣ đã mô tả rồi thực hiện các tính toán cần thiết (xem bài tập). Tiếp cận này không còn phù hợp nữa khi mà dung lƣợng dữ liệu của các tổ chức ngày càng lớn và rất lớn cũng nhƣ nhu cầu nhận thông tin có giá trị ngày càng nhiều và rất nhiều. Thật vậy, với dung lƣợng dữ liệu rất lớn và cùng với điều này là các quan hệ dữ liệu phức tạp nảy sinh, thì việc quản lý dữ liệu quả thật không đơn giản tý nào. Chúng ta có thể không kiểm soát nổi hệ thống các tập tin do chính chúng ta tạo ra. Tiếp cận này tiềm ẩn nguy cơ gây ra mâu thuẫn, chia sẻ dữ liệu đã khó ngày càng trở nên khó hơn. Cho dù các lập trình viên có cộng tác với nhau chặt chẽ thì việc định nghĩa các cấu trúc lƣu trữ, xây dựng các chiến lƣợc truy xuất riêng sẽ rất dễ bị tổn thƣơng khi chia sẻ hoặc khi có thay đổi về cấu trúc. Ví dụ 1.4 Giả sử bài toán cho ở ví dụ 2 giờ đây đƣợc giải quyết bởi 3 bộ phận. 5 Cũng chỉ là gợi ý. Trong đó xuất hiện một số dữ liệu để điều khiển truy xuất: chẳng hạn sau các dữ liệu chung xuất hiện số 2 cho biết sau đây là dữ liệu của 2 môn; hoặc sau dữ liệu của môn xuất hiện số 4 cho sau đó là dữ liệu của 4 ngƣời lãnh lƣơng; rồi sau dữ liệu chung của ngƣời lãnh lƣơng xuất hiện một số nguyên cho biết số môn mà ngƣời ấy giảng.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 7 1. Bộ phận quản lý nhân viên đảm nhận việc lƣu và cập nhật dữ liệu chung (lương cơ bản, phụ cấp quản lý, hệ số mời, thù lao mỗi tiết) và dữ liệu của nhân viên (của chỉ nhân viên trong trung tâm: họ tên, hệ số lương, là quản lý). 2. Bộ phận quản lý giảng dạy đảm nhận lƣu và cập nhật dữ liệu của môn học (tên môn, số tiết), dữ liệu của giảng viên (chỉ giảng viên mà thôi: họ tên, là mời giảng), dữ liệu của phân công (giảng viên nào, dạy môn gì, số lớp). 3. Bộ phận tính lƣơng lƣu đầy đủ thông tin để tính lƣơng (lƣơng cơ bản, phụ cấp quản lý, hệ số mời, thù lao mỗi tiết, họ tên, hệ số lƣơng, là quản lý, là mời giảng, tổng số tiết). Thử tƣởng tƣợng mỗi bộ phận tự tổ chức dữ liệu, tự định nghĩa cấu trúc và tự lƣu trữ dữ liệu. Khi ấy việc lƣu trữ dƣ thừa tiềm ẩn nguy cơ gây ra mâu thuẫn. Có thể có những dữ liệu bộ phận này cần lấy từ bộ phận khác, lại gây ra xung đột về cấu trúc, gây khó khăn trong cộng tác giữa các bộ phận. Đó là chƣa kể các bộ phận có thể thay đổi định nghĩa, thay đổi cách lƣu trữ làm cho các nguy cơ đã có thêm nặng nề. 2.2. Hạn chế Dữ liệu tách biệt và cô lập Điều này gây khó khăn khi truy cập. Với dữ liệu đƣợc lƣu nhƣ ở ví dụ 4, nếu bộ phận quản lý giảng dạy muốn in danh sách giảng viên với đầy đủ chi tiết, thì sẽ gặp khó khăn khi phải truy cập đến các tập tin ở bộ phận quản lý nhân viên. Trùng lắp Ngoài chi phí lƣu trữ, chi phí cập nhật dữ liệu, còn một vấn đề nghiêm trọng hơn nhiều. Đó là nguy cơ xảy ra mâu thuẫn. Với dữ liệu đƣợc lƣu nhƣ ở ví dụ 4, giả sử bộ phận quản lý nhân viên thay đổi dữ liệu mà dữ liệu ở bộ phận tính lƣơng không đƣợc đồng bộ. Điều này gây ra hậu quả là lƣơng bị tính sai. Lệ thuộc dữ liệu Sự thay đổi cấu trúc mô tả dữ liệu của một bộ phận, dù thật đơn giản, lại gây ra tác động theo chiều rộng đến các chƣơng trình có sử dụng các cấu trúc này, không chỉ trong phạm vi một bộ phận. Các chƣơng trình làm chủ dữ liệu của mình nhƣng lại lệ thuộc vào dữ liệu do chƣơng trình khác làm chủ.
- 8 Giáo trình cơ sở dữ liệu Không tƣơng thích Các chƣơng trình có thể đƣợc viết bởi các ngôn ngữ lập trình khác nhau. Cơ chế lƣu trữ và lấy lại của các ngôn ngữ lập trình khác nhau có thể khác nhau. Điều này gây khó khăn khi phải xử dụng dữ liệu của nhau. Không mềm dẻo trong xử lý dữ liệu Dữ liệu bị buộc vào chƣơng trình. Chƣơng trình đƣợc cài đặt với các xử lý xác định. Nếu một yêu cầu xử lý dữ liệu mới đƣợc đặt ra, nó phải đƣợc cài đặt thêm và thậm chí biên dịch lại. Vẫn xét ví dụ 4, nếu bây giờ tại bộ phận quản lý giảng dạy có nhu cầu đƣa ra một báo cáo thống kê về số tiền chi cho giảng viên theo từng môn, thì chúng ta phải viết hoặc một chƣơng trình mới, hoặc bổ sung một chức năng cho chƣơng trình cũ rồi biên dịch lại. Công việc này cũng sẽ gây khó khăn cho lập trình viên khi phải truy xuất tập tin ở bộ phận khác hoặc nhận dữ liệu với cấu trúc lệ thuộc vào chƣơng trình ở bộ phận khác. 3. Tiếp cận cơ sở dữ liệu Trong thực tế sự bùng nổ dữ liệu đang thách thức chúng ta trong công việc mô tả, lưu trữ cũng như tìm kiếm. Chúng sẽ nhanh chóng trở thành một khoản nợ nếu nhƣ chi phí thu thập và quản lý vƣợt xa giá trị do chúng mang lại. Chính vì thế mà chúng ta luôn phải tìm kiếm các mô hình dữ liệu và các công cụ quản lý dữ liệu hiệu quả. Tại thời điểm này chúng ta hiểu, một cách trực giác, cơ sở dữ liệu là một tập các dữ liệu có liên quan đến các hoạt động của một hoặc nhiều tổ chức có quan hệ với nhau và hệ quản trị cơ sở dữ liệu là một phần mềm đƣợc thiết kế để hỗ trợ cho công việc bảo tồn và quản lý cơ sở dữ liệu6. 3.1. Tiếp cận Khi mà việc quản lý dữ liệu bằng hệ thống tập tin trở nên khó khăn, cần thiết phải tập trung quản lý chúng nhƣ là một thực thể thống nhất, ít ra là ở mức mô tả. Khi đó chúng ta sẽ có một cái nhìn tổng quát mang tính hệ thống đối với toàn bộ dữ liệu của tổ chức. 6 Khi nói đến cơ sở dữ liệu chúng ta không thể không nhắc đến hệ quản trị cơ sở dữ liệu cũng giống nhƣ khi nói đến kiểu dữ liệu chúng ta không thể không nhắc đến các phép toán.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 9 Định nghĩa 1.1 Cơ sở dữ liệu là một tập hợp các dữ liệu dùng chung, có quan hệ logic với nhau, cùng với mô tả của chúng, được thiết kế cho nhu cầu thông tin của một tổ chức. Chúng ta xem xét chi tiết định nghĩa này để hiểu đầy đủ khái niệm. Theo định nghĩa, cơ sở dữ liệu là một kho dữ liệu lớn đƣợc định nghĩa một lần và đƣợc dùng đồng thời bởi nhiều bộ phận ngƣời dùng. Dữ liệu đƣợc tích hợp với lƣợng dƣ thừa tối thiểu, độc lập với ứng dụng và trở thành một tài nguyên dùng chung. Cơ sở dữ liệu lƣu không chỉ dữ liệu mà cả mô tả của dữ liệu, còn đƣợc gọi là từ điển dữ liệu hay dữ liệu về dữ liệu. Việc dữ liệu đƣợc định nghĩa độc lập với ứng dụng cho phép chúng ta mô hình dữ liệu với nhiều cấp độ trừu tƣợng nhờ đó chúng ta thấy đƣợc mối quan hệ logic của dữ liệu trong tổ chức. Với tiếp cận này chúng ta có đƣợc các thuận lợi trong quản lý dữ liệu nhƣng cũng xuất hiện một số thách thức. Các thuận lợi Việc tách dữ liệu ra khỏi chƣơng trình ứng dụng cho phép quản lý và sử dụng chúng đƣợc hiệu quả. Trƣớc tiên dữ liệu trở nên độc lập với chƣơng trình. Chƣơng trình có thể khai thác dữ liệu mà không cần biết đến cấu trúc, cũng nhƣ chiến lƣợc truy xuất. Nhờ đó ta có thể cài đặt các ứng dụng sao cho nếu có sự thay đổi trên dữ liệu về cấu trúc hay chiến lƣợc truy xuất thì vẫn không phải cài đặt lại chƣơng trình. Tiếp theo dữ liệu còn đƣợc chia sẻ cho nhiều ứng dụng khác nhau. Cuối cùng dữ liệu không còn bị trùng lắp giúp giảm không gian lƣu trữ và tăng tính toàn vẹn dữ liệu. Nhờ đó dữ liệu sẽ nhất quán và không gây mâu thuẫn. Tính chất thống nhất giữa các dữ liệu trong hệ thống nhƣ một toàn bộ cho phép xây dựng các mô hình dữ liệu. Theo đó chúng ta có thể chỉ ra những liên hệ, những ràng buộc bất biến trong suốt thời gian sống của dữ liệu. Nhờ làm nổi bật ý nghĩa của các quan hệ dữ liệu, chúng ta có thể xây dựng nên các ứng dụng đa dạng và hiệu quả. Chúng ta còn có thể xây dựng phƣơng pháp luận cho phân tích thiết kế và cài đặt chƣơng trình ứng dụng dựa trên các lƣợc đồ logic giúp việc viết một chƣơng trình ứng dụng đƣợc dễ dàng hơn. Cho phép xây dựng một ngôn ngữ phi thủ tục theo đó việc khai thác dữ liệu đƣợc thực hiện bằng cách mô tả những gì là cần lấy mà không cần chỉ rõ dữ liệu sẽ đƣợc lấy ra nhƣ thế nào. Cho phép xây dựng một cơ chế bảo mật dữ liệu bằng cách hạn chế quyền truy xuất của các chƣơng trình ứng dụng. Chƣơng trình ứng dụng chỉ đƣợc
- 10 Giáo trình cơ sở dữ liệu phép truy xuất từng phần hay toàn bộ dữ liệu phụ thuộc vào thẩm quyền của nó. Chúng ta có thể liệt kê các thuận lợi nhƣ 1. Kiểm soát đƣợc sự dƣ thừa dữ liệu, giảm chi phí lƣu trữ; 2. Dữ liệu nhất quán, dễ phát hiện các xung đột giữa các yêu cầu nếu có; 3. Cho phép rút ra nhiều thông tin hơn và có giá trị hơn từ cùng một nguồn dữ liệu; 4. Dữ liệu đƣợc chia sẻ, tăng cƣờng khả năng truy cập và đáp ứng, kiểm soát sự tƣơng tranh; 5. Tăng cƣờng tính toàn vẹn; 6. Tăng cƣờng tính bảo mật; 7. Tăng cƣờng khả năng thỏa mãn các chuẩn của đơn vị, của tổ chức, của quốc gia cũng nhƣ của quốc tế; 8. Tăng hiệu suất quản lý và khai thác dữ liệu; 9. Cải thiện việc sao lƣu và phục hồi dữ liệu. Các thách thức Dữ liệu đƣợc quản lý tập trung làm gia tăng độ phức tạp. Để quản lý hiệu quả chúng ta phải tốn nhiều công sức hơn, chuyên nghiệp hơn. Tính tổng quát gia tăng làm giảm đi tính chuyên biệt. Dữ liệu tập trung quá lớn làm cho mức tin cậy, độ sẵn sàng cũng nhƣ tính bảo mật luôn bị đe doạ. Chúng ta có thể liệt kê ra đây một số bất tiện cũng nhƣ các bài toán cần giải quyết khi làm việc theo tiếp cận này Các bất tiện 1. Phức tạp; 2. Chi phí cao; 3. Không chuyên biệt; 4. Dễ bị tấn công. Các bài toán 1. Bảo đảm tính toàn vẹn; 2. Bảo đảm tính bảo mật; 3. Bảo đảm chia sẻ và điều khiển tƣơng tranh; 4. Bảo đảm tính độc lập dữ liệu.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 11 Giải quyết các vấn đề này không là nhiệm vụ của ứng dụng. Thay vào đó, chúng ta cần một môi trƣờng cơ sở dữ liệu7 có sự tham gia của nhiều thành phần gồm phần cứng, phần mềm, dữ liệu, thủ tục và con người. Trong đó phần mềm quản lý cơ sở dữ liệu chuyên dụng, gọi là hệ quản trị cơ sở dữ liệu, đóng một vai trò quan trọng. Định nghĩa 1.2 Hệ quản trị cơ sở dữ liệu là một hệ thống phần mềm cho phép người dùng định nghĩa, tạo và bảo tồn cơ sở dữ liệu; cũng cung cấp việc truy cập có kiểm soát đến cơ sở dữ liệu. Từ định nghĩa chúng ta thấy, về cơ bản, nhiệm vụ chính của hệ quản trị là tạo, bảo tồn cơ sở dữ liệu và kiểm soát việc truy cập đến cơ sở dữ liệu. Thông qua ngôn ngữ định nghĩa dữ liệu, hệ quản trị cho phép ngƣời dùng định nghĩa cơ sở dữ liệu. Thông qua ngôn ngữ thao tác dữ liệu, hệ quản trị cho phép ngƣời dùng thêm, xoá, sửa và lấy lại dữ liệu. Với cơ chế truy cập có kiểm soát, hệ quản trị cơ sở dữ liệu bảo đảm đƣợc tính bảo mật, tính toàn vẹn dữ liệu, điều khiển sự tƣơng tranh, khôi phục trạng thái toàn vẹn trƣớc đó khi có lỗi xảy ra ở phần cứng hoặc phần mềm. Để dữ liệu thực sự độc lập với ứng dụng, hệ quản trị cơ sở dữ liệu còn cung cấp cơ chế khung nhìn cho ngƣời dùng cuối. Nhờ đó bảo đảm thực hiện độc lập dữ liệu, hơn nữa cơ chế này cũng cho phép tăng cƣờng tính bảo mật và tính toàn vẹn dữ liệu. 3.2. Môi trƣờng cơ sở dữ liệu Nhƣ đã đƣợc đề cập, môi trƣờng cơ sở dữ liệu bao gồm: phần cứng, phần mềm, dữ liệu, thủ tục và con người. Phần cứng Bao gồm tất cả các thiết bị vật lý mà chủ yếu là máy tính và các thiết bị ngoại vi. Chúng có thể đƣợc nối với nhau trong một hệ thống mạng cho phép thực hiện các truy xuất từ xa. Mỗi hệ quản trị cơ sở dữ liệu đòi hỏi phần cứng phù hợp. Ngoài ra yêu cầu về phần cứng, trên từng máy và trên toàn hệ thống mạng, còn phụ thuộc vào chính yêu cầu của tổ chức. 7 Một số tài liệu còn gọi là hệ thống cơ sở dữ liệu.
- 12 Giáo trình cơ sở dữ liệu Phần mềm Thƣờng vẫn đƣợc hiểu là hệ quản trị cơ sở dữ liệu, nhƣng trong trƣờng hợp tổng quát chúng còn bao gồm cả hệ điều hành, các chƣơng trình ứng dụng và các phần mềm tiện ích. Vì vai trò quan trọng của hệ quản trị cơ sở dữ liệu, chúng ta nên có thêm sự hiểu biết về nó. Hệ quản trị cơ sở dữ liệu đƣợc phân loại theo các tiêu chí: số ngƣời dùng, số vị trí lƣu trữ và kiểu sử dụng, nhƣ sau: 1. Phân loại tùy theo số người dùng gồm một ngƣời dùng hay nhiều ngƣời dùng. Hệ một ngƣời dùng chỉ cho phép một ngƣời dùng tại một thời điểm và nếu chỉ dùng một máy tính ta sẽ gọi là hệ cơ sở dữ liệu desktop. Hệ nhiều ngƣời dùng hỗ trợ nhiều ngƣời dùng tại cùng một thời điểm và nếu nó đƣợc dùng trong một công ty ta sẽ gọi là cơ sở dữ liệu công ty. 2. Phân loại tùy theo số số vị trí lưu trữ gồm tập trung hay phân tán. Hệ cơ sở dữ liệu tập trung chỉ cho phép lƣu dữ liệu tại một vị trí duy nhất, trong lúc hệ cơ sở dữ liệu phân tán hỗ trợ lƣu dữ liệu tại nhiều vị trí. 3. Phân loại tùy theo kiểu sử dụng gồm giao dịch hay trợ giúp quyết định8. Hệ cơ sở dữ liệu giao dịch hỗ trợ các giao dịch hàng ngày lƣu các dữ liệu giao dịch và ngay lập tức, trong lúc hệ cơ sở dữ liệu trợ giúp quyết định lƣu trữ các dữ liệu mang tích lịch sử để hỗ trợ các quyết định, phát sinh các dự báo, đánh giá thị trƣờng, Ví dụ 1.5 Một công ty có một hệ thống khách sạn trên khắp nƣớc. Với mỗi khách sạn, khách hàng ở bất cứ đâu cũng có thể biết những thông tin cần thiết và thực hiện thao tác giữ chỗ trƣớc. Ngƣời quản lý không cần đến các khách sạn cũng biết tình hình hoạt động của chúng, yêu cầu cung cấp thông tin và điều hành hệ thống. Khi ấy cơ sở dữ liệu thuộc loại nhiều người dùng, phân tán và giao dịch. Ngƣời dùng Gồm tất cả các ngƣời dùng đƣợc phân loại theo chức năng nhƣ quản trị dữ liệu, quản trị cơ sở dữ liệu, thiết kế cơ sở dữ liệu, lập trình ứng dụng và ngƣời dùng cuối. 8 Còn đƣợc gọi là kho dữ liệu. Với kho dữ liệu, dữ liệu hầu nhƣ không thay đổi và có dung lƣợng rất lớn nên cần đƣợc tổ chức theo mô hình riêng để hỗ trợ tốt việc khai thác.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 13 Chúng ta cần làm rõ các vai trò này. 1. Vai trò quản trị. Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu cũng là các tài nguyên cần đƣợc quản lý. Quản trị dữ liệu có nhiệm vụ lên kế hoạch xây dựng cơ sở dữ liệu, bảo đảm các chuẩn theo quy định, đƣa ra các chính sách các thủ tục cho thiết kế logic, tƣ vấn cho nhà quản lý, định hƣớng phát triển và hỗ trợ tối đa cho các mục tiêu của tổ chức. Quản trị cơ sở dữ liệu có nhiệm vụ xây dựng cơ sở dữ liệu, kiểm soát tính bảo mật và toàn vẹn, bảo đảm các yêu cầu của ứng dụng và ngƣời dùng. 2. Vai trò thiết kế. Trong dự án lớn chúng ta phân biệt 2 kiểu thiết kế: thiết kế logic và thiết kế vật lý. Thiết kế logic tập trung vào mô hình hoá dữ liệu gồm dữ liệu, quan hệ và quy tắc. Họ phải hiểu đầy đủ dữ liệu của tổ chức và các quy tắc quản lý. Để hiệu quả họ phải tính đến những ngƣời dùng trong tƣơng lai trong sự phát triển của mô hình dữ liệu. Kết quả thiết kế cần độc lập với hệ quản trị và chi tiết cài đặt. Thiết kế vật lý tiếp nhận mô hình dữ liệu và quyết định cách cài đặt mô hình dữ liệu cũng nhƣ chuyển các quy tắc quản lý thành các ràng buộc dữ liệu. Chọn cấu trúc lƣu trữ và phƣơng thức truy xuất, thiết kế các mức bảo mật dữ liệu theo yêu cầu. 3. Vai trò lập trình. Khi cơ sở dữ liệu đƣợc cài đặt, các chƣơng trình ứng dụng cung cấp những chức năng cho ngƣời dùng cuối phải đƣợc viết ra. Đây là công việc của lập trình viên ứng dụng. Thƣờng thì họ viết ứng dụng theo đặc tả của nhân viên phân tích dùng các ngôn ngữ thuộc thế hệ thứ 3 hoặc 4. 4. Vai trò người dùng cuối, thƣờng đƣợc chia làm 2 loại. Loại không biết gì về cơ sở dữ liệu, truy cập cơ sở dữ liệu qua các chƣơng trình ứng dụng đƣợc viết thật đơn giản dễ sử dụng. Loại có biết về cơ sở dữ liệu, có khả năng dùng ngôn ngữ cấp cao truy vấn dữ liệu, thậm chí viết đƣợc các ứng dụng riêng. Dữ liệu Là toàn bộ dữ liệu đƣợc lƣu trong cơ sở dữ liệu. Từ quan điểm ngƣời dùng cuối, dữ liệu là thành phần quan trọng nhất của môi trƣờng cơ sở dữ liệu.
- 14 Giáo trình cơ sở dữ liệu Tuy nhiên, việc xác định dữ liệu nào cần lƣu và cách tổ chức chúng là công việc của nhà thiết kế9. Thủ tục Là các chỉ thị, các luật chi phối việc thiết kế và sử dụng hệ thống cơ sở dữ liệu. Chúng có vai trò quan trọng trong một tổ chức, bảo đảm kiểm soát đƣợc toàn bộ dữ liệu trong cơ sở dữ liệu. Ví dụ 1.6 Xét một hệ thống cho thuê băng đĩa có dung lương dữ liệu nhỏ và các thủ tục là đơn giản, ta chỉ cần hai ngƣời dùng chung một máy tính để bàn với tính năng vừa phải. Còn với một hệ thống bảo hiểm của ngân hàng có dung lương dữ liệu đồ sộ cùng nhiều thủ tục chặt chẽ và phức tạp, ta cần ít nhất một quản trị hệ thống, vài chuyên viên quản trị cơ sở dữ liệu làm toàn thời gian, nhiều nhân viên thiết kế và lập trình cùng làm việc trong một mạng máy tính diện rộng. 3.3. Mô hình dữ liệu Một cơ sở dữ liệu tốt nếu nhƣ nó đƣợc thiết kế tốt. Kết quả thiết kế cho ta mô hình cơ sở dữ liệu. Lập mô hình là cách tốt nhất để đảm bảo tính hệ thống của cơ sở dữ liệu giúp dữ liệu đƣợc nhất quán và đầy đủ đáp ứng đƣợc yêu cầu quản lý10. Định nghĩa 1.3 Mô hình dữ liệu là mô hình trừu tượng của dữ liệu cho phép người dùng nhìn thấy dữ liệu dưới các cấu trúc thuật ngữ dễ hiểu mà ta gọi là lược đồ. Mô hình dữ liệu gồm có: 1. Tập các ký hiệu dùng để mô tả dữ liệu, và 2. Tập các quy định xác định cách sử dụng các ký hiệu Mô hình dữ liệu đƣợc phân làm hai loại chính: mô hình theo hướng quan niệm và mô hình theo hướng cài đặt11. 9 Nhƣ đã đề cập trong định nghĩa cơ sở dữ liệu, dữ liệu ở đây bao gồm cả dữ liệu về dữ liệu. Chúng ta cần phát triển các ngôn ngữ mô hình hoá đồng thời yêu cầu hệ quản trị cơ sở dữ liệu hỗ trợ ít nhất một mô hình để giúp quản lý cơ sở dữ liệu hiệu quả. 10 Trong phạm vi môn học, chúng ta sẽ tập trung vào việc thiết kế cơ sở dữ liệu. 11 Còn đƣợc gọi là mô hình vật lý. Trong tài liệu này, việc thêm cụm từ “theo hướng” nhằm phân biệt với thuật ngữ dùng trong kiến trúc ANSI-SPARC.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 15 Mô hình dữ liệu mức quan niệm tập trung vào tính logic của biểu diễn dữ liệu. Nó trả lời cho câu hỏi cái gì được biểu diễn trong cơ sở dữ liệu. Trong khi mô hình cài đặt lại nhấn mạnh đến cách biểu diễn dữ liệu và cách cài đặt các cấu trúc trong cơ sở dữ liệu. Sau đây, chúng ta sẽ tìm hiểu sơ lƣợc vài mô hình theo hƣớng cài đặt (mô hình phân cấp, mô hình mạng và mô hình quan hệ) và vài mô hình theo hƣớng quan niệm (mô hình thực thể kết hợp và mô hình hƣớng đối tƣợng); cũng vẫn dùng dữ liệu ở ví dụ 1 để minh họa. Tại điểm này, chúng tôi muốn làm rõ thêm một thuật ngữ vẫn thƣờng đƣợc sử dụng: thuật ngữ mô hình logic. Nhƣ đã đƣợc đề cập, trong mô hình chúng ta sử dụng các cấu trúc lƣợc đồ. Theo hƣớng quan niệm các lƣợc đồ tập trung vào tính logic của biểu diễn dữ liệu. Theo hƣớng cài đặt các lƣợc đồ tập trung vào mô tả cách cài đặt các cấu trúc này. Do đó mô hình vật lý là mô hình theo hƣớng cài đặt. Tuy nhiên, trong tài liệu này, các mô hình cài đặt mà những chi tiết mô tả trong các lƣợc đồ vẫn chƣa quan tâm thật sự đến việc cài đặt sẽ đƣợc gọi là các lược đồ logic và mô hình lúc này sẽ đƣợc gọi là mô hình logic. Trong các mô hình cài đặt dƣới đây, các lƣợc đồ logic đƣợc sử dụng. Mô hình theo hƣớng cài đặt Mô hình phân cấp. Đƣợc đƣa ra vào đầu những năm 60. Trong mô hình, dữ liệu đƣợc mô tả bởi cấu trúc cây. Trong đó kiểu dữ liệu của mỗi đỉnh là kiểu mẩu tin xác định cấu trúc của tập tin lƣu trữ; còn các cạnh mô tả mối quan hệ cha con (là các mối quan hệ 1-nhiều) Ví dụ 1.7 Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình phân cấp nhƣ sau:
- 16 Giáo trình cơ sở dữ liệu phụ cấp quản lý lương cơ bản thù lao mỗi tiết hệ số mời 1800 450 50 0.5 họ tên hệ số lương Minh 3 họ tên hệ số lương họ tên hệ số lương Lan 3 Hùng 2 họ tên Thảo môn số tiết số lớp Internet 20 2 môn số tiết số lớp kỹ thuật bàn phím 15 1 môn số tiết số lớp Internet 20 1 môn số tiết số lớp kỹ thuật bàn phím 15 1 Hình ảnh cây thƣ mục cho ta thấy cách tổ chức theo mô hình phân cấp. Trong ví dụ trên chúng ta quan sát thấy có các mẩu tin; mỗi mẩu có thể có các mẩu tin con. Bỏ qua dữ liệu, chỉ giữ lại các cấu trúc mẩu tin (còn gọi là
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 17 lƣợc đồ12), chúng ta nhìn thấy mô hình ở mức trừu tƣợng hơn, cho phép nhìn thấy các ký hiệu và cách thức xây dựng mô hình. Vào những năm cuối của thập niên 60, ngƣời ta đã cố gắng khởi tạo mô hình mạng nhƣ là một cải tiến của mô hình phân cấp. Đến tháng 4 năm 1971, các nền tảng của mô hình mạng đã đƣợc công bố. Trong tiếp cận này, chúng ta dùng đồ thị có hƣớng để mô tả dữ liệu. Giống nhƣ mô hình phân cấp, kiểu dữ liệu của mỗi đỉnh là kiểu mẩu tin và các cạnh (có hƣớng) mô tả mối quan hệ 1-nhiều. Tuy nhiên vì đây là đồ thị nên chúng ta có thể mô tả các mối quan hệ nhiều-nhiều, vốn cho phép mô tả nhiều mối quan hệ phức tạp. Ví dụ 1.8 Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình mạng nhƣ sau: phụ cấp quản lý lương cơ bản thù lao mỗi tiết hệ số mời 1800 450 50 0.5 họ tên hệ số lương Minh 3 họ tên hệ số lương họ tên hệ số lương Lan 3 Hùng 2 họ tên Thảo môn số tiết môn số tiết kỹ thuật bàn phím 15 Internet 20 Trên đây, mũi tên hai đầu hàm ý có hai hƣớng giữa 2 mẩu tin. 12 Theo thói quen, với mô hình cài đặt chúng ta hay dùng thuật ngữ cấu trúc thay cho lƣợc đồ.
- 18 Giáo trình cơ sở dữ liệu Mô hình quan hệ đƣợc đƣa ra vào đầu những năm 70 bởi E.F.Codd và trở nên thông dụng vì tính mềm dẻo của nó. Trong mô hình này dữ liệu đƣợc mô tả theo một cách tự nhiên hơn. Dữ liệu đƣợc lƣu trong các bảng gọi là quan hệ. Ta mô hình hoá cơ sở dữ liệu bằng cách mô tả cấu trúc của các bảng. Ví dụ 1.9 Dữ liệu của bài toán cho ở ví dụ 2 có thể đƣợc biểu diễn theo mô hình quan hệ nhƣ sau: id họ tên hệ số id mid số mid Môn số lương lớp tiết QL Minh 3 G1 Int 1 BP kỹ thuật 15 bàn phím G1 Lan 3 G1 BP 1 Int Internet 20 G2 Hùng 2 G2 BP 1 M1 Thảo M1 Int 2 Mô hình theo hƣớng quan niệm Trong mô hình dữ liệu mức quan niệm chúng ta cũng vẫn làm việc với các lƣợc đồ. Mô hình thực thể kết hợp (ERM – Entity Relationship Model) . Mô hình dùng thực thể để mô tả dữ liệu và mối kết hợp để mô tả các liên kết giữa các dữ liệu. Ví dụ 1.10 Với dữ liệu của bài toán cho ở ví dụ 2 chúng ta quan sát thấy có 2 thực thể Người Lãnh Lương và Môn Học; giữa chúng tồn tại mối kết hợp Giảng dạy. Chúng ta có lƣợc đồ: Người Lãnh Lương Môn Học id Giảng dạy mid họ tên số tiết hệ số lƣơng Mô hình hướng đối tượng. Mô hình cho phép mô tả dữ liệu gần với tính phức tạp thực sự của chúng trong thế giới thực. Mô hình ban đầu đƣợc gọi là mô hình dữ liệu ngữ nghĩa (SDM – Sematic Data Model, M.Hammer và D.McLeod, 1981). Nó dùng cấu trúc đối tƣợng để mô tả cả dữ liệu lẫn mối liên hệ giữa chúng nên còn đƣợc gọi là mô hình dữ liệu hƣớng đối
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 19 tƣợng (OODM – Object Oriented Data Model). Đến lƣợt nó, OODM trở thành cơ sở của mô hình cơ sở dữ liệu hƣớng đối tƣợng (OODBM – Object Oriented DataBase Model) và đƣợc quản lý bởi hệ quản trị cơ sở dữ liệu hƣớng đối tƣợng (OODBMS). Trong tiếp cận này, các đối tƣợng tùy theo mức trừu tƣợng đƣợc mô tả trong một cấu trúc gọi là lớp (class). Các lớp đƣợc nối với nhau qua các quan hệ kết hợp (giống mô hình thực thể kết hợp) và các quan hệ thừa kế (cho phép mô tả đối tƣợng với nhiều cấp độ trừu tƣợng) Ví dụ 1.11 Với dữ liệu của bài toán cho ở ví dụ 2 chúng ta quan sát thấy có 4 đối tƣợng Người Lãnh Lương và 2 đối tƣợng Môn Học. Các đối tƣợng ngƣời lãnh lƣơng có thể đƣợc phân hoạch thành {Quản Lý, Giảng Viên Cơ Hữu, Giảng Viên Mời} với các phƣơng thức tính lƣơng khác nhau. Ghép {Quản Lý, Giảng Viên Cơ Hữu} thành Nhân Viên, {Giảng Viên Cơ Hữu, Giảng Viên Mời} thành Giảng Viên, cùng với mối kết hợp Giảng dạy giữa Giảng Viên và Môn Học. Chúng ta có lƣợc đồ sau: Người L.Lương họ tên Nhân Viên Giảng Viên Môn Học hệ số lƣơng thù lao tên môn lƣơng cơ bản số tiết Tính lƣơng() Quản Lý GViên Cơ Hữu GViên Mời phụ cấp Tính lƣơng() hệ số mời Tính lƣơng() Việc quản lý tập trung dữ liệu và làm nó tách khỏi các chƣợng trình ứng dụng càng trở nên hiệu quả nếu nhƣ có khả năng trừu tƣợng hoá dữ liệu ở mức cao. Sự trừu tƣợng hoá không những tăng cƣờng hiệu quả quản lý mà
- 20 Giáo trình cơ sở dữ liệu còn giúp tƣ duy tốt. Sự trừu tƣợng hoá thƣờng có nhiều cấp độ. Trong cơ sở dữ liệu, sự trừu tƣợng hoá đƣợc chia thành 3 mức: mức quan niệm, mức trong và mức ngoài 13. user 1 user 2 user n View 1 View 2 View n Mức ngoài Mức quan niệm Conceptual schema Internal Mức trong schema Database Mô hình mức quan niệm. Là sự trừu tƣợng hoá phần thế giới thực có liên quan đến những ngƣời sử dụng cơ sở dữ liệu. Mức này cho ta cái nhìn toàn cục của dữ liệu, là cơ sở để xác định và mô tả các đối tƣợng nhưng bỏ qua các chi tiết. Nó biễu diễn toàn bộ nội dung thông tin của cơ sở dữ liệu, đƣợc xác định bằng lƣợc đồ quan niệm định nghĩa chỉ nội dung thông tin mà không chứa bất cứ một chi tiết nào về phép lƣu trữ cũng nhƣ chiến lƣợc truy xuất. Mức quan niệm dùng để biểu diễn khía cạnh logic của cơ sở dữ liệu: 13 Vào năm 1971, tại hội nghị CODASYL (Conference on Data Systems and Languages), nhóm DBTG (Data Base Task Group) đã đƣa ra một tiếp cận 2 mức: mức lƣợc đồ (schema) dành cho hệ thống và mức lƣợc đồ con (subschemas) dành cho ngƣời dùng. Kiến trúc 3 mức do 2 tổ chức ANSI (American National Standards Institute) và SPARC (Standards Planning and Requirements Committee) hợp nhất đƣa ra vào năm 1975. Mặc dù không trở thành một chuẩn, nhƣng kiến trúc ANSI/SPARC vẫn cung cấp một cơ sở để hiểu các chức năng của hệ quản trị cơ sở dữ liệu.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 21 Các thực thể, thuộc tính và các mối kết hợp14; Các ràng buộc dữ liệu; Ngữ nghĩa của dữ liệu; Thông tin bảo mật và nhất quán. Mô hình mức trong. Mô hình này phụ thuộc hệ quản trị cơ sở dữ liệu, do đó chúng ta phải chọn hệ quản trị cơ sở dữ liệu trƣớc rồi mới đƣa ra mô hình trong. Một hệ quản trị cơ sở dữ liệu luôn có các lược đồ trong mô tả các kiểu mẩu tin, các chỉ mục, các trƣờng lƣu trữ cũng nhƣ thứ tự lƣu trữ. Nhƣ vậy, khi xây dựng mô hình trong, ngƣời thiết kế cơ sở dữ liệu phải đặc tả nó thật chính xác15. Mức trong dùng để biểu diễn khía cạnh vật lý của cơ sở dữ liệu, là cách thức dữ liệu đƣợc lƣu trong cơ sở dữ liệu: Định vị không gian lƣu trữ cho dữ liệu và các chỉ mục; Mô tả bản ghi cho việc lƣu trữ; Cơ chế và chiến lƣợc truy xuất; Các kỹ thuật nén và mã hoá dữ liệu. Một hệ quản trị cơ sở dữ liệu sẽ cung cấp một ngôn ngữ định nghĩa dữ liệu để mô tả mức này đồng thời cài đặt cấu trúc cho cơ sở dữ liệu vật lý. Mô hình mức ngoài. Mô hình mức này còn đƣợc gọi là view (user view) hay lƣợc đồ con. Có thể xem view nhƣ là quan niệm của một ngƣời dùng cụ thể về cơ sở dữ liệu. Mỗi mô hình ngoài đều đƣợc xác định bởi một lƣợc đồ ngoài16. 14 Trong tài liệu này, chúng ta sẽ dùng mô hình thực thể kết hợp để đƣa ra mô hình dữ liệu mức quan niệm gồm các lƣợc đồ quan niệm và gọi là các lƣợc đồ thực thể kết hợp (ERD – Entity Relationship Diagram). Chính xác hơn, lược đồ thực thể kết hợp là loại lược đồ thường dùng để mô hình theo hướng quan niệm. Trong tài liệu này, chúng tôi đồng nhất mô hình theo hướng quan niệm với mô hình mức quan niệm. 15 Trong tài liệu này, chúng tôi dùng mô hình quan hệ để mô tả các lƣợc đồ mức trong và gọi là các lƣợc đồ quan hệ (RD – Relation Diagram). Chính xác hơn, lược đồ quan hệ là loại lược đồ thường dùng để mô hình theo hướng vật lý. Tuy nhiên, chúng ta sẽ không đi vào chi tiết các mô tả mức vật lý (ngƣời đọc có thể đọc thêm trong các tài liệu về hệ quản trị cơ sở dữ liệu) mà chỉ dừng lại ở các lƣợc đồ logic. Trong tài liệu này, chúng tôi đồng nhất mô hình (logic) theo hướng vật lý với mô hình mức trong. 16 Thƣờng chúng ta sẽ dùng mô hình thực thể kết hợp để mô tả mỗi mức ngoài. Thực tế, trong quá trình xác định các lƣợc đồ quan niệm, các lƣợc đồ ngoài đƣợc xác định trƣớc. Nhƣ vậy việc dùng các lƣợc đồ thực thể kết hợp biểu diễn mức ngoài sẽ giúp chúng ta xây dựng các lƣợc đồ mức quan niệm đƣợc dễ dàng hơn. Tuy nhiên, theo một quan điểm khác,
- 22 Giáo trình cơ sở dữ liệu Mặc khác, bằng cách đặc tả các lƣợc đồ ngoài, chúng ta có đƣợc một số thuận lợi: 1. Nếu có một chƣợng trình ứng dụng dùng toàn bộ các mối kết hợp trong cơ sở dữ liệu, nó sẽ làm cản trở việc phát triển hệ thống. 2. Các lƣợc đồ con giúp ngƣời thiết kế dễ dàng hơn trong xác định dữ liệu dùng trong mỗi chƣợng trình ứng dụng 3. Các lƣợc đồ con giúp ngƣời thiết kế kiểm tra tính đầy đủ của mô hình quan niệm 4. Các lƣợc đồ con giúp kiểm tra tính an toàn và toàn vẹn của mô hình trong Hầu hết các hệ quản trị cơ sở dữ liệu đều cung cấp một công cụ để mô tả view còn được gọi là ngôn ngữ định nghĩa dữ liệu lược đồ con. Kiến trúc 3 mức này cho phép thực hiện tính độc lập dữ liệu. Nhƣ vậy chúng ta có 2 kiểu độc lập dữ liệu: logic và vật lý. Độc lập dữ liệu logic. Là việc thay đổi mô hình quan niệm không ảnh hƣởng đến mô hình ngoài. Tức là việc xuất hiện thêm, thậm chí loại bớt, các thực thể các kết hợp đều không ảnh hƣởng đến các lƣợc đồ ngoài. Độc lập dữ liệu vật lý. Là việc thay đổi mô hình trong không ảnh hƣởng đến mô hình quan niệm. Tức là việc thay đổi thiết bị lƣu trữ, cấu trúc lƣu trữ hay chiến lƣợc truy xuất đều không ảnh hƣởng đến các lƣợc đồ quan niệm. Ví dụ 1.12 Xét cơ sở dữ liệu nhân viên: Hai lƣợc đồ ngoài Mã NV Họ Tên Tuổi Lƣơng Mã NV Tên Đơn vị Lƣợc đồ quan niệm: Mã NV Họ Tên Ngày sinh Lƣơng Đơn vị đặc biệt khi làm việc với mô hình cơ sở dữ liệu quan hệ, mô hình ngoài (user view) đƣợc mô tả bởi một tập các quan hệ (cũng đƣợc gọi là view).
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 23 Lƣợc đồ trong: struct Nhan_Vien { int MaNV; int DonVi; char Ho[15]; char Ten[5]; struct date Ngay_Sinh; float Luong; struct Nhan_Vien *next; }; index MaNV; index DonVi; Với một hệ quản trị cơ sở dữ liệu cụ thể chúng ta sử dụng ngôn ngữ cơ sở dữ liệu với chỉ vài lệnh là đã vừa mô tả các lƣợc đồ vừa đặt ra các yêu cầu lƣu trữ và chiến lƣợc truy xuất để hệ quản trị cơ sở dữ liệu tạo ra cơ sở dữ liệu vật lý. 4. Tổng quan về hệ quản trị cơ sở dữ liệu Trong định nghĩa cơ sở dữ liệu chúng ta có nói đến các chức năng chính của hệ quản trị cơ sở dữ liệu. Mục này nhằm thảo luận các chức năng đó một cách chi tiết hơn. Vì hầu hết các chức năng của hệ quản trị cơ sở dữ liệu là trong suốt đối với ngƣời dùng, định nghĩa sau đƣợc phát biểu dƣới góc độ ngƣời dùng. Định nghĩa 1.4 Hệ quản trị cơ sở dữ liệu là một phần mềm quản lý cấu trúc của cơ sở dữ liệu và kiểm soát việc truy xuất dữ liệu, bao gồm các chức năng: 1. Tạo và bảo toàn cơ sở dữ liệu. 2. Cho phép truy xuất cơ sở dữ liệu theo thẩm quyền. 3. Phục hồi dữ liệu theo yêu cầu. 4. Cập nhật dữ liệu. Nhƣ vậy nhiệm vụ chính của hệ quản trị cơ sở dữ liệu là quản lý dữ liệu hiệu quả cho nên một hệ quản trị cơ sở dữ liệu phải thực hiện các chức năng quan trọng nhằm đảm bảo tính toàn vẹn và nhất quán của dữ liệu trong cơ sở dữ liệu. Nó có hai khả năng chính là khả năng quản lý bền vững dữ liệu và khả năng truy xuất một số lượng lớn dữ liệu một cách hiệu quả.
- 24 Giáo trình cơ sở dữ liệu 4.1. Chức năng Hệ quản trị cơ sở dữ liệu có các chức năng sau17: Quản lý tự điển dữ liệu. Hệ quản trị quản lý tất cả các dữ liệu dùng để mô tả dữ liệu18. Nó lƣu các định nghĩa về cấu trúc và quan hệ trong tự điển dữ liệu. Cho phép thực hiện trừu tƣợng hoá dữ liệu nhằm đảm bảo tính độc lập dữ liệu và độc lập cấu trúc. Quản lý lưu trữ. Hệ quản trị tạo ra các cấu trúc phức tạp để lƣu trữ từ những dữ liệu cơ bản đơn giản đến các dữ liệu phức tạp, từ các định nghĩa về biểu mẫu, biểu báo đến các ràng buộc dữ liệu và các đoạn mã chƣơng trình. Quản lý nhập xuất. Hệ quản trị biến đổi dữ liệu vào phù hợp với cấu trúc lƣu trữ, nhờ đó ta không cần quan tâm đến định dạng vật lý của dữ liệu, và kết xuất dữ liệu ra theo các yêu cầu logic của ngƣời dùng. Quản lý bảo mật. Hệ quản trị tạo ra một hệ thống bảo mật kiểm soát quyền sử dụng của ngƣời dùng. Điều khiển truy xuất nhiều người dùng. Hệ quản trị tạo ra các cấu trúc phức tạp dùng các giải thuật tinh vi nhằm bảo đảm cơ sở dữ liệu luôn luôn nhất quán Quản lý sao lưu và phục hồi cơ sở dữ liệu. Hệ quản trị cung cấp các thủ tục sao lƣu và phục hồi dữ liệu đảm bảo dữ liệu an toàn và toàn vẹn khi xảy ra sự cố hoặc khi có yêu cầu từ ngƣời dùng. Quản lý sự toàn vẹn dữ liệu. Hệ quản trị cung cấp cơ chế nhằm giảm dƣ thừa và tăng sự nhất quán, đặc biệt trong cơ sở dữ liệu nhiều ngƣời dùng. 17 Codd liệt kê 8 dịch vụ của một hệ quản trị cơ sở dữ liệu đầy đủ (1982): 1. Hỗ trợ giao tác 2. Kiểm soát tƣơng tranh 3. Phục hồi dữ liệu khi có sự cố 4. Kiểm soát đặc quyền của ngƣời dùng 5. Hỗ trợ truyền thông dữ liệu 6. Bảo đảm tính toàn vẹn 7. Bảo đảm tính độc lập dữ liệu 8. Cung cấp các tiện ích cho ngƣời quản trị cơ sở dữ liệu 18 Thuật ngữ metadata nghĩa là dữ liệu về dữ liệu hay dữ liệu dùng để mô tả dữ liệu.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 25 Ngôn ngữ truy xuất cơ sở dữ liệu và giao diện (interface) lập trình ứng dụng. Hệ quản trị cung cấp cơ chế truy xuất dữ liệu qua ngôn ngữ truy xuất cơ sở dữ liệu là ngôn ngữ hỏi gồm: ngôn ngữ định nghĩa dữ liệu DDL và ngôn ngữ thao tác dữ liệu DML. Nó cũng cung cấp các giao diện cho các ngôn ngữ lập trình. Giao diện giao tiếp với cơ sở dữ liệu. Hệ quản trị cung cấp các thủ tục giao tiếp đặc biệt đƣợc thiết kế cho phép cơ sở dữ liệu đáp ứng các yêu cầu của ngƣời dùng cuối trong môi trƣờng mạng. 4.2. Thành phần Lập trình viên Người dùng Quản trị cơ sở dữ liệu Chƣơng Truy vấn Lƣợc đồ cơ trình UD sở dữ liệu DBMS Tiền xử lý Xử lý Biên dịch DML truy vấn DDL Mã chƣơng Quản lý Quản lý trình DB DD Phƣơng thức Quản lý truy xuất tập tin Vùng đệm hệ thống Cơ sở dữ liệu và tự điển dữ liệu
- 26 Giáo trình cơ sở dữ liệu Hệ quản trị cơ sở dữ liệu có các thành phần sau: 1. Tiền xử lý ngôn ngữ thao tác dữ liệu; 2. Xử lý truy vấn; 3. Biên dịch ngôn ngữ định nghĩa dữ liệu; 4. Mã đối tượng chương trình; 5. Quản lý cơ sở dữ liệu; 6. Quản lý từ điển dữ liệu; 7. Quản lý tập tin. Mã chƣơng Xử lý Quản lý trình truy vấn DD DM Kiểm soát đặc quyền Kiểm tra Xử lý lệnh Tối ƣu toàn vẹn truy vấn Quản lý Quản lý giao tác lịch Quản lý Quản lý Quản lý dữ liệu vùng đệm phục hồi Quản lý tập tin
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 27 Trong đó chi tiết thành phần của bộ quản lý cơ sở dữ liệu với 8 thành phần con: 1. Kiểm soát đặc quyền; 2. Kiểm tra toàn vẹn; 3. Xử lý lệnh; 4. Tối ưu truy vấn; 5. Quản lý giao tác; 6. Quản lý lịch; 7. Quản lý phục hồi; 8. Quản lý vùng đệm.
- 28 Giáo trình cơ sở dữ liệu TÓM TẮT Để quản lý hiệu quả dữ liệu của tổ chức cần thực hiện tiếp cận cơ sở dữ liệu; Tiếp cận cơ sở dữ liệu hình thành một môi trƣờng cơ sở dữ liệu gồm: dữ liệu (thành phần quan trọng nhất), phần cứng, phần mềm (trong đó quan trọng nhất là hệ quản trị cơ sở dữ liệu), ngƣời dùng và thủ tục; Với tiếp cận cơ sở dữ liệu, dữ liệu đƣợc quản lý riêng, cho phép dùng mô hình để biểu diễn và đặc tả, cũng cho phép xây dựng ngôn ngữ cơ sở dữ liệu để cài đặt và thao tác; Kiến trúc cơ sở dữ liệu 3 mức cho phép tách biệt các vai trò, cho phép thực hiện tính độc lập dữ liệu; Mô hình thực thể kết hợp thƣờng đƣợc dùng để mô hình cơ sở dữ liệu mức ngoài và mức quan niệm; Mô hình quan hệ thƣờng đƣợc dùng để mô hình cơ sở dữ liệu mức trong; Cơ chế khung nhìn không những hỗ trợ thực hiện độc lập dữ liệu mà còn hỗ trợ thực hiện bảo mật dữ liệu; Hệ quản trị cơ sở dữ liệu giúp ngƣời dùng thực hiện các vai trò của mình dễ dàng nhƣng hiệu quả; Hệ quản trị cơ sở dữ liệu bảo đảm giải quyết các vấn đề nảy sinh khi thực hiện tiếp cận cơ sở dữ liệu: bảo tồn, truy xuất và bảo mật; Hệ quản trị cơ sở dữ liệu hỗ trợ mô hình, theo hƣớng cài đặt, bảo đảm đầy đủ các đặc trƣng độc lập dữ liệu, không dư thừa, nhất quán, toàn vẹn, an toàn và chia sẻ.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 29 5. Giới thiệu các case study Trong tài liệu này chúng tôi giới thiệu hai case study thuộc về hai lĩnh vực rất khác nhau. Chúng đủ phức tạp cho phép chúng tôi đƣa ra các ví dụ và bài tập cho bạn đọc thử sức. Dĩ nhiên không phải tất cả các ví dụ và bài tập đều đƣợc đƣa ra từ hai case study này. 5.1. Công ty Mỹ Gia Công ty Mỹ Gia đại diện cho chủ của những ngôi nhà cho thuê. Công ty cung cấp các dịch vụ nhƣ quảng cáo trên các báo, tạp chí, phỏng vấn khách hàng, tổ chức xem nhà và đàm phán cho thuê. Công ty cũng đảm nhận việc kiểm tra nhà định kỳ để bảo đảm tình trạng của nó luôn tốt. Sau đây là thông tin đƣợc công ty duy trì tại mỗi chi nhánh để hỗ trợ những hoạt động và quản lý hàng ngày của công ty. Chi nhánh Ở hầu hết các tỉnh thành, công ty đều có chi nhánh. Mỗi chi nhánh đều có một mã riêng, gọi là mã chi nhánh, phân biệt lẫn nhau. Thông tin của chi nhánh gồm một địa chỉ đầy đủ (số nhà, đƣờng, quận / huyện, tỉnh / thành phố và mã bƣu điện), một số điện thoại và một số fax. Nhân viên Các nhân viên tại mỗi chi nhánh gồm có một trƣởng chi nhánh, một thƣ ký, một giám sát và các chuyên viên (tối thiểu 5 và tối đa 10). Trƣởng chi nhánh có nhiệm vụ theo dõi toàn bộ hoạt động của chi nhánh. Giám sát, có sự hỗ trợ của thƣ ký, giám sát các công việc của chuyên viên. Các chuyên viên đảm nhận các công việc hàng ngày của chi nhánh. Mỗi nhân viên đều có một mã riêng, gọi là mã nhân viên, phân biệt lẫn nhau qua tất cả các chi nhánh. Thông tin của nhân viên gồm họ, tên, địa chỉ, số điện thoại, giới tính, ngày sinh, số của sổ bảo hiểm, chức vụ, lương và ngày vào làm. Riêng thƣ ký lƣu thêm tốc độ đánh máy của họ. Công ty cũng lƣu thông tin của một ngƣời thân của nhân viên gồm họ tên, quan hệ với nhân viên, địa chỉ và số điện thoại. Mỗi trƣởng chi nhánh đƣợc cấp một khoảng đi lại hằng năm và một khoảng thƣởng hằng tháng dựa vào hoạt động trong thị trƣờng cho thuê nhà này.
- 30 Giáo trình cơ sở dữ liệu Nhà cho thuê Chi nhánh quản lý các nhà cho thuê trong địa bàn của mình, theo đó mỗi nhà do một chuyên viên theo dõi và mỗi chuyên viên theo dõi không quá 20 nhà. Mỗi nhà đều có một mã riêng, gọi là mã nhà cho thuê, phân biệt lẫn nhau qua tất cả các chi nhánh. Thông tin của nhà gồm địa chỉ đầy đủ (số nhà, đƣờng, quận / huyện, tỉnh / thành phố và mã bƣu điện), loại (nhà hoặc căn hộ, hầu hết các nhà cho thuê là các căn hộ) số phòng và giá thuê (đƣợc thay đổi mỗi năm). Khi một nhà thôi không còn cho thuê nữa, thông tin của nó vẫn còn đƣợc giữ tối thiểu trong 3 năm. Chủ nhà Chủ của các nhà cho thuê là cá nhân hoặc doanh nghiệp. Công ty cấp cho mỗi chủ nhà một mã riêng, gọi là mã chủ nhà, phân biệt lẫn nhau qua tất cả các chi nhánh. Thông tin của chủ là cá nhân gồm họ tên, địa chỉ, số điện thoại; thông tin của chủ là doanh nghiệp gồm tên doanh nghiệp, loại doanh nghiệp, địa chỉ doanh nghiệp, số điện thoại và họ tên người tiếp xúc. Khách hàng Khi khách hàng tiếp xúc với công ty, thông tin về họ đƣợc lƣu lại gồm họ, tên, địa chỉ, số điện thoại, nhu cầu về tiện nghi và khả năng trả tiền thuê lớn nhất. Công ty cũng cấp cho họ một mã riêng, gọi là mã khách hàng, phân biệt lẫn nhau qua tất cả các chi nhánh. Công ty cũng tiến hành phỏng vấn khách hàng. Thông tin phỏng vấn cũng đƣợc lƣu lại gồm ngày phỏng vấn, chuyên viên phỏng vấn, nhận xét chung về khách hàng. Xem nhà Thƣờng thì khách hàng muốn đến xem một hoặc nhiều nhà trƣớc khi thuê. Công ty thu xếp việc này và lƣu lại những thông tin gồm ngày xem, nhận xét của khách. Quảng cáo Trong trƣờng hợp nhà khó cho thuê, công ty thực hiện quảng cáo trên báo và lƣu lại ngày quảng cáo cùng chi phí quảng cáo. Chỉ những tờ báo thích hợp đƣợc chọn, công ty lƣu thông tin của những tờ báo này gồm tên tờ báo, địa chỉ tờ báo, số điện thoại số, số fax và họ tên người tiếp xúc.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 31 Hợp đồng cho thuê Khách hàng có quyền thuê một hoặc nhiều nhà và bất kỳ lúc nào. Công ty có nhiệm vụ lập hợp đồng cho thuê với số hợp đồng duy nhất qua tất cả các chi nhánh. Chi tiết hợp đồng gồm hợp đồng số, giá thuê, phương thức thanh toán, tiền ký quỹ, có trả tiền ký quỹ hay không, ngày bắt đầu và kết thúc, thời gian thuê (đơn vị tính là tháng: ít nhất 3 tháng, nhiều nhất 1 năm). Khi hợp đồng hết hạn, công ty vẫn giữ thông tin này ít nhất 3 năm. Kiểm tra nhà Công ty có trách nhiệm kiểm tra định kỳ các nhà, kể cả những nhà đang đƣợc thuê, ít nhất 6 tháng một lần để bảo đảm nó luôn ở tình trạng tốt. Chi tiết mỗi lần kiểm tra cũng đƣợc lƣu lại gồm ngày kiểm tra, mã chuyên viên kiểm tra và nhận xét về tình trạng nhà. Hoạt động của chi nhánh Chuyên viên 1. Tạo và bảo tồn thông tin xem nhà do mình thực hiện; 2. Báo cáo về những nhận xét của khách sau khi xem nhà; 3. Tạo và bảo tồn thông tin kiểm tra do mình thực hiện; 4. Tạo và bảo tồn thông tin quảng cáo do mình thực hiện; 5. Xem danh sách về những nhà cho thuê do mình quản; 6. Xem danh sách về những khách hàng do mình quản; 7. Tìm những nhà phù hợp với nhu cầu tiện nghi và khả năng tài chính của khách hàng. Giám sát 1. Tạo và bảo tồn thông tin về nhà và chủ nhà; 2. Tạo và bảo tồn thông tin về khách hàng; 3. Xem danh sách các quảng cáo theo nhà; 4. Xem danh sách các quảng cáo theo báo; 5. Xem nội dung các kiểm tra định kỳ; 6. Xem danh sách nhà đang thuê theo từng chuyên viên; Quản lý và giám sát 1. Xem danh sách nhân viên; 2. Tạo và bảo tồn hợp đồng thuê nhà; 3. Xem danh sách hợp đồng theo nhà; Quản lý
- 32 Giáo trình cơ sở dữ liệu 1. Tạo và bảo tồn thông tin của tất cả nhân viên (kể cả ngƣời thân nhất của họ); 2. Xem danh sách toàn bộ nhân viên;
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 33 5.2. Trƣờng đại học Tri Khánh Trƣờng đại học Tri Khánh tổ chức đào tạo theo tín chỉ. Sau đây là thông tin đƣợc nhà trƣờng duy trì để hỗ trợ cho những hoạt động và quản lý hàng ngày của trƣờng. Chuyên ngành đào tạo Trƣờng đào tạo theo các chuyên ngành. Mỗi chuyên ngành là một hƣớng đào tạo hẹp của ngành. Mỗi ngành có một mã riêng, gọi là mã ngành, phân biệt lẫn nhau. Thông tin của một ngành gồm tên ngành và loại bằng cấp. Mỗi chuyên ngành có một mã riêng, gọi là mã chuyên ngành, phân biệt lẫn nhau trong phạm vi tất cả các ngành. Thông tin của một chuyên ngành gồm tên chuyên ngành và mục tiêu chung. Khoa đào tạo Các chuyên ngành đào tạo của trƣờng đều do các khoa tổ chức đào tạo. Khoa chịu trách nhiệm đào tạo tất cả các chuyên ngành của một hoặc nhiều ngành. Mỗi khoa có một mã riêng, gọi là mã khoa, phân biệt lẫn nhau. Thông tin của một khoa gồm tên khoa, một số điện thoại và một số fax. Môn học Chương trình đào tạo của một chuyên ngành gồm một danh sách các môn học đƣợc sắp xếp một cách khoa học nhằm bảo đảm mục tiêu đào tạo cụ thể. Mỗi chƣơng trình đào tạo có một mã riêng, gọi là mã chương trình đào tạo, phân biệt lẫn nhau trong phạm vi khoa. Thông tin của một chƣơng trình đào tạo gồm năm áp dụng và mục tiêu cụ thể. Mỗi môn có một mã riêng, gọi là mã môn, phân biệt lẫn nhau trong phạm vi tất cả các ngành. Thông tin của một môn gồm tên môn, số tín chỉ và nội dung. Một môn có một hoặc nhiều môn tiên quyết. Một chƣơng trình đào tạo nếu có một môn nào đó thì phải có tất cả các môn tiên quyết của nó. Các môn tiên quyết của một môn phải đƣợc sắp xếp học trƣớc. Giảng viên Giảng viên là ngƣời đảm nhận công việc giảng dạy. Khoa quản lý giảng viên về mặt hành chính. Mỗi giảng viên đều có một mã riêng, gọi là mã giảng viên, phân biệt lẫn nhau qua tất cả các khoa. Thông tin của một giảng viên gồm họ, tên, địa chỉ, số điện thoại, giới tính, ngày sinh, học vị, chức danh, chức vụ, hệ số lương và ngày vào trường.
- 34 Giáo trình cơ sở dữ liệu Bộ môn Khoa tổ chức các giảng viên thành các bộ môn để quản lý môn học về mặt chuyên môn. Mỗi môn do một bộ môn quản lý. Mỗi bộ môn có một mã riêng, gọi là mã bộ môn, phân biệt lẫn nhau trong phạm vi tất cả các khoa. Thông tin của một bô môn gồm tên bộ môn và số điện thoại. Sinh viên Ngay từ lúc vào trƣờng sinh viên đã đăng ký chuyên ngành và chịu sự quản lý của khoa về mặt hành chính. Khoa sẽ phân công giảng viên cố vấn cho sinh viên về chuyện học tập sao cho sinh viên biết rõ ai là ngƣời cố vấn cho mình để chủ động liên hệ mỗi khi gặp khó khăn trong học tập. Mỗi sinh viên đều có một mã riêng, gọi là mã sinh viên, phân biệt lẫn nhau qua tất cả các khoa. Thông tin của một sinh viên gồm họ, tên, địa chỉ, số điện thoại, giới tính, ngày sinh và khoá học. Lớp Với mỗi học kỳ, khoa sẽ mở các lớp (đào tạo) để sinh viên đăng ký học. Lớp do một giảng viên phụ trách giảng một môn nào đó. Sinh viên đƣợc phép đăng ký chỉ khi môn này thuộc chƣơng trình đào tạo mà sinh viên theo học, sinh viên chƣa đạt môn này và đã đạt tất cả các môn tiên quyết của nó. Sinh viên đƣợc gọi là đạt một môn nếu sinh viên có đăng ký học và điểm đánh giá của giảng viên phụ trách môn có kết quả từ 5 trở lên. Mỗi lớp có một mã riêng, gọi là mã lớp, phân biệt lẫn nhau trong phạm vi khoa. Thông tin của lớp gồm ngày bắt đầu, các buổi học trong tuần và phòng học của mỗi buổi. Hoạt động Sinh viên 1. Xem chƣơng trình đào tạo; 2. Xem điểm; 3. Đăng ký lớp. Giảng viên 1. Nhập điểm; 2. Xem danh sách lớp do mình phụ trách; 3. Xem danh sách sinh viên thuộc lớp do mình phụ trách; 4. Xem danh sách sinh viên do mình cố vấn; 5. Báo cáo kết quả học của lớp do mình phụ trách; 6. Báo cáo kết quả học của sinh viên do mình cố vấn.
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 35 Bộ Môn 1. Phân công giảng viên phụ trách lớp; 2. Xem danh sách giảng viên trong bộ môn; 3. Xem danh sách môn thuộc bộ môn; 4. Xem danh sách lớp của các giảng viên thuộc bộ môn; 5. Xem danh sách sinh viên đƣợc cố vấn bởi các giảng viên thuộc bộ môn; 6. Xem danh sách sinh viên trong lớp do giảng viên thuộc bộ môn phụ trách; 7. Báo cáo khối lƣợng và chất lƣợng giảng dạy của mỗi giảng viên thuộc khoa. Khoa 1. Tạo và bảo tồn thông tin về môn; 2. Tạo và bảo tồn thông tin về ngành, chuyên ngành; 3. Tạo và bảo tồn thông tin về chƣơng trình đào tạo; 4. Tạo và bảo tồn thông tin về bộ môn; 5. Tạo và bảo tồn thông tin về lớp; 6. Sắp xếp nhân sự cho bộ môn; 7. Sắp xếp môn cho bộ môn; 8. Sắp xếp cố vấn học tập cho sinh viên; 9. Xem danh sách toàn bộ môn trong trƣờng; 10. Xem danh sách giảng viên thuộc khoa; 11. Xem danh sách sinh viên của khoa; 12. Xem kết quả học tập của sinh viên thuộc khoa; 13. Báo cáo về quy mô và chất lƣợng đào tạo của mỗi chuyên ngành thuộc khoa. Phòng đào tạo 1. Tạo và bảo tồn thông tin về sinh viên; 2. Xếp lịch học cho các lớp; 3. Xem danh sách toàn bộ lớp; 4. Xem danh sách sinh viên theo lớp; 5. Báo cáo kết quả đào tạo theo từng khoá. Phòng tổ chức 1. Tạo và bảo tồn thông tin về khoa; 2. Tạo và bảo tồn thông tin về giảng viên; 3. Xem danh sách toàn bộ bộ môn; 4. Xem danh sách giảng viên theo khoa, theo bộ môn.
- 36 Giáo trình cơ sở dữ liệu BÀI TẬP 1. Xét hệ thống quản lý tồn kho của một công ty lớn, với mỗi chức năng sau đây, hãy xác định kiểu ngƣời dùng (là quản trị, lập trình hay sử dụng) a. Tạo báo cáo lƣợng tồn kho hàng tháng; b. Cập nhật lƣợng tồn của từng mặt hàng trong các phiếu nhập vừa đƣợc nhận; c. Hủy tài khoản ngƣời dùng của một nhân viên vừa đƣợc nghỉ hƣu; d. Đổi cấu trúc của lƣợc đồ hàng hoá để thêm thông tin cho mỗi mặt hàng; e. Trả lời qua điện thoại lƣợng tồn hiện tại của một mặt hàng. 2. Chỉ ra 2 vấn đề khác nhau về bảo mật giữa hệ thống cơ sở dữ liệu một ngƣời dùng và hệ thống cơ sở dữ liệu nhiều ngƣời dùng? 3. Một trƣờng đại học có nhiều cơ sở khắp nơi trên thế giới muốn tạo một cơ sở dữ liệu phân tán lƣu thông tin của sinh viên. Nó đƣợc thiết kế khác với cơ sở dữ liệu tập trung ở những điểm gì? 4. Các chƣơng trình ứng dụng thông qua một hệ quản trị cơ sở dữ liệu để cùng nhau chia sẻ một cơ sở dữ liệu. Khi cơ sở dữ liệu và các chƣơng trình ứng dụng cùng làm việc trực tiếp với một hệ quản trị cơ sở dữ liệu duy nhất thì hệ thống cơ sở dữ liệu này đƣợc gọi là một lớp (single tier). Sự phát triển của máy tính cá nhân, sự tin cậy ngày càng tăng của phần cứng, các tiện ích của Internet đã dẫn đến xu thế sử dụng các hệ thống phân bố có kiến trúc nhiều lớp. Với hệ thống 2 lớp (two-tier) các chƣơng trình ứng dụng làm việc với hệ quản trị cơ sở dữ liệu client, còn cơ sở dữ liệu đƣợc quản lý bởi hệ quản trị cơ sở dữ liệu server (kiến trúc client-server); hệ quản trị cơ sở dữ liệu client tƣơng tác với hệ quản trị cơ sở dữ liệu server để phục vụ các chƣơng trình ứng dụng. Trong hệ thống 3 lớp (three-tier), có bổ sung thêm lớp giữa (middleware) để client của một server có thể truy xuất dữ liệu từ một server khác. Hãy xác định số lớp (1, 2 hoặc 3) cho mỗi hệ thống cơ sở dữ liệu sau: a. Một nghệ nhân, làm việc tự do, thiết kế và bán các sản phẩm mỹ nghệ thông qua thƣ đặt hàng hoặc các cửa hàng mỹ nghệ;
- Chƣơng 1: Tổng quan về cơ sở dữ liệu 37 b. Một trƣờng đại học có nhiều cơ sở khắp nơi trên thế giới với cơ sở dữ liệu tập trung tại văn phòng trung tâm, các cơ sở sẽ truy xuất dữ liệu qua server đặt tại trung tâm này; c. Hệ thống bán vé máy bay toàn cầu. 5. Cho một ví dụ hệ thống cơ sở dữ liệu 3 lớp. 6. Một nghệ nhân, làm việc tự do, thiết kế và bán các sản phẩm mỹ nghệ thông qua thƣ đặt hàng hoặc các cửa hàng mỹ nghệ. Hiện tại anh ta có một danh sách thƣ đặt hàng đƣợc lƣu trong tập tin văn bản. Anh ta cũng lƣu danh sách khách hàng và danh sách nhà cung cấp nguyên vật liệu trong hai tập tin văn bản khác. Anh ta dùng bảng tính (spreadsheet) để lƣu hoá đơn. Thu nhập và chi phí đƣợc lƣu trong một bảng tính khác. Anh ta sẽ nhận đƣợc những lợi ích gì nếu dữ liệu đƣợc thiết kế để lƣu trữ trong một cơ sở dữ liệu và đƣợc quản lý bởi một hệ quản trị cơ sở dữ liệu? 7. Với mỗi mô hình sau, hãy mô hình cơ sở dữ liệu cho dữ liệu ở câu 6: a. Mô hình mạng; b. Mô hình phân cấp; c. Mô hình quan hệ. 8. Giải thích sự khác nhau giữa ngôn ngữ định nghĩa dữ liệu và ngôn ngữ thao tác dữ liệu. Ngôn ngữ nào (định nghĩa hay thao tác) đƣợc sử dụng cho mỗi tác vụ sau: a. Nhập điểm cho sinh viên; b. Thêm lớp mới; c. Thêm một thuộc tính mới cho mỗi sinh viên; d. Tính tổng số tín chỉ đạt đƣợc của mỗi sinh viên. 9. Giải thích sự khác nhau giữa độc lập dữ liệu mức logic và độc lập dữ liệu mức vật lý. 10. Thành phần nào của hệ quản trị cơ sở dữ liệu dùng để bảo đảm tính nhất quán của dữ liệu trong cơ sở dữ liệu? 11. Một cửa hàng bán hoa tƣơi, bán hoa qua các đơn đặt hàng. Cửa hàng lƣu thông tin về hoa và đơn đặt hàng. Một đơn đặt hàng có thể đặt nhiều hơn một hoa với số lƣợng xác định. Thông tin về hoa gồm: mã hoa, tên hoa, loại hoa và đặc điểm riêng. Thông tin về đơn đặt hàng
- 38 Giáo trình cơ sở dữ liệu gồm: đơn đặt hàng số, tên khách hàng, địa chỉ và phương thức giao hàng. a. Thiết kế các lƣợc đồ mức ngoài, mức quan niệm và mức trong; b. Bạn dùng ngôn ngữ gì (định nghĩa hay thao tác) cho mỗi tác vụ sau (a) Tạo một bảng mới lƣu dữ liệu về loại đất và nhu cầu ánh sáng cho mỗi loại hoa; (b) Thêm một hoa mới; (c) Thêm thông tin giá bán cho mỗi loại hoa. 12. Dùng ngôn ngữ C xây dựng chƣơng trình tính lƣơng cho trung tâm A (ví dụ 2) với dữ liệu đƣợc lƣu trong tập tin (ví dụ 3). 13. Dùng Microsoft Access xây dựng chƣơng trình tính lƣơng cho trung tâm A với dữ liệu đƣợc tổ chức thành bảng (ví dụ 9). 14. Dùng Microsoft Access xây dựng 3 chƣơng trình ứng dụng (ví dụ 4) cho trung tâm A với mô hình trong gồm các lƣợc đồ logic (ví dụ 9). 15. Thảo luận về từng thuận lợi và mỗi thách thức khi thực hiện tiếp cận cơ sở dữ liệu. 16. Thảo luận về mỗi thành phần và mỗi chức năng của hệ quản trị cơ sở dữ liệu nói chung và một hệ quản trị cơ sở dữ liệu cụ thể.
- Chƣơng 2 MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ Mục tiêu của chƣơng. Trong chƣơng này chúng ta sẽ học về: Quan hệ và các phép toán trên quan hệ; Mô hình cơ sở dữ liệu quan hệ: lược đồ quan hệ, lược đồ cơ sở dữ liệu quan hệ, ràng buộc toàn vẹn; Phân biệt giữa quy tắc quản lý và ràng buộc toàn vẹn; Phân biệt giữa khoá và siêu khoá; Phân biệt giữa khoá ngoại và ràng buộc tồn tại; Giải quyết vấn đề bằng đại số quan hệ: xử lý dữ liệu, kiểm tra tính nhất quán của dữ liệu; Phân biệt giữa phân rã bảo toàn thông tin và kết đầy đủ; Quy trình ba bƣớc cho một biểu thức đại số quan hệ; Các chiến lƣợc19 giải bài toán bằng đại số quan hệ; Thuật toán với các câu lệnh là biểu thức đại số quan hệ. Trong chƣơng 1 chúng ta đã giới thiệu về mô hình cơ sở dữ liệu quan hệ. Theo đó, dữ liệu đƣợc lƣu trong các bảng còn đƣợc gọi là các quan hệ. Với mô hình này ngƣời dùng thấy dữ liệu thông qua các bảng, còn chi tiết lƣu trữ và chiến lƣợc truy xuất để lại cho hệ quản trị cơ sở dữ liệu quan hệ đảm nhận. Trong chƣơng này, chúng ta sẽ làm rõ các yếu tố của mô hình, tập trung làm khái niệm quan hệ; cũng khảo sát các phép toán trên quan hệ và sử dụng chúng để xử lý dữ liệu, bằng cách thao tác trực tiếp trên các quan hệ thay vì thao tác qua các mục dữ liệu riêng biệt. Việc dùng đại số quan hệ để giải bài toán là một cách làm rất khác, cũng sẽ đƣợc giới thiệu khá chi tiết trong chƣơng này. 19 Những chiến lƣợc, đƣợc giới thiệu trong chƣơng này, đƣợc rút ra từ kinh nghiệm của tác giả trong quá trình sử dụng đại số quan hệ giải các bài toán.
- 40 Giáo trình cơ sở dữ liệu 1. Mở đầu Chúng ta bắt đầu bằng bài toán tính hoá đơn tiền điện với dữ liệu đƣợc tổ chức lƣu trữ trong nhiều bảng. Ví dụ 2.1 Mỗi tháng công ty điện lực cho ngƣời đi ghi lại chỉ số điện kế của khách hàng, tính, in hoá đơn, rồi cử ngƣời giao hoá đơn và thu tiền. Công việc lập hoá đơn rất đơn giản. Sau khi xác định kỳ hoá đơn, ngƣời dùng chỉ cần chọn khách hàng, nhập chỉ số tiêu thụ, hệ thống sẽ in ra hoá đơn. Dữ liệu đƣợc yêu cầu lƣu trữ cho công việc này gồm địa chỉ khách hàng cho mỗi khách hàng và đơn giá theo từng mức tiêu thụ. Giả sử công ty có 3 khách hàng, và có 4 mức tiêu thụ. Toàn bộ dữ liệu đƣợc tổ chức lƣu thành 2 bảng nhƣ sau: Khách hàng (Mã KH Địa chỉ) Định mức (Từ Đến Giá) 01 134 NTT 1 100 80 02 242/4 TBT 101 150 100 03 33 PH 151 200 150 201 400 200 Hệ thống có đầy đủ dữ liệu để lập hoá đơn. Chẳng hạn, với chỉ số tiêu thụ của 3 khách hàng trên đây theo thứ tự là 120, 250 và 80, ta có bảng chi tiết tiêu thụ: Chi tiết tiêu thụ (Mã KH Tiêu thụ Giá Thành tiền) 01 100 80 8000 01 20 100 2000 02 100 80 8000 02 50 100 5000 02 50 150 7500 02 50 200 10000 03 80 80 6400 Cần lƣu ý, chúng ta vẫn đang nói về mô hình, một công cụ cho phép hiểu hệ thống, do đó tính rõ ràng là cần thiết. Thử phân tích ví dụ trên. Trong ví dụ này ta thấy mỗi bảng lƣu cùng một loại thông tin. Mỗi dòng trong bảng Khách hàng lƣu thông tin của một khách hàng, với thứ tự dữ liệu theo đúng tiêu đề cột. Dòng dữ liệu này đƣợc xem là một thể hiện của khách hàng trong hệ thống. Cũng vậy mỗi dòng trong bảng Định mức lƣu thông tin của mỗi mức gồm phạm vi tiêu thụ và đơn giá trong phạm vi tiêu
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 41 thụ này. Ngoài ra chúng ta cũng thấy có các dữ liệu dùng để xác định chính xác đối tƣợng (trong bảng Khách hàng đó là Mã KH còn trong bảng Định mức là phạm vi tiêu thụ). Trong ví dụ này, chúng ta thấy có sƣ lƣu trữ dƣ thừa dữ liệu. Nếu loại bỏ cột đến trong bảng Định mức chúng ta vẫn đủ thông tin cho việc tính hoá đơn; tuy nhiên, khi ấy thông tin trên cùng một dòng là không đầy đủ20. Để ngắn gọn, chúng ta ký hiệu r, s và u thay cho các quan hệ Khách hàng, Định mức và Chi tiết tiêu thụ. Chúng ta chờ đợi một biểu thức cho u thông qua r và s, thay cho việc lập trình thông thƣờng, tức là duyệt qua các dòng của r và s để truy cập dữ liệu và làm các xử lý cần thiết. Như vậy với mô hình cơ sở dữ liệu quan hệ, gồm các quan hệ và các phép toán, người dùng có thể xử lý dữ liệu ở mức trừu tượng cao mà không cần quan tâm đến chi tiết cơ chế lưu trữ và chiến lược truy xuất. Mỗi bảng trong mô hình này lưu giữ thông tin của một loại đối tượng, mỗi đối tượng trên một dòng. Trong thực tế, các đối tượng luôn có quan hệ với nhau và chúng ta vẫn có thể dùng các bảng để lưu các kết hợp này, mỗi dòng một liên kết. Ví dụ 2.2 Cơ sở dữ liệu của một siêu thị lƣu thông tin của danh mục hàng hoá trong bảng Hàng hoá (Mã hàng, Tên hàng, Đơn vị tính, Giá bán), của danh sách hoá đơn trong bảng Hoá đơn (Số hoá đơn, Ngày lập, Trị giá, Thuế VAT), của các liên kết giữa hoá đơn và hàng hoá trong bảng Chi tiết hoá đơn (Số hoá đơn, Mã hàng, Số lượng, Giá thực bán). Hàng hoá (Mã hàng Tên hàng Đơn vị tính Giá bán) H01 Máy tính Bộ 5600 H02 Đĩa 10 đĩa 30 H03 Màn hình Chiếc 1250 H04 CPU Chiếc 3250 Hoá đơn (Số hoá đơn Ngày lập Trị giá Thuế VAT) D01 12/11/06 5490 5% D02 14/12/06 12140 5% 20 Rõ ràng mục tiêu là giảm dƣ thừa tối đa, nhƣng nếu quá cực đoan sẽ làm giảm đi tính rõ ràng. Tùy vào mức độ trừu tƣợng đang quan tâm cho phép có những dƣ thừa nhất định.
- 42 Giáo trình cơ sở dữ liệu Chi tiết hoá đơn (Số hoá đơn Mã hàng Số lượng Giá thực bán) D01 H01 1 5400 D01 H02 3 30 D02 H04 3 3200 D02 H03 2 1200 D02 H02 5 28 2. Khái niệm 2.1. Quan hệ và lƣợc đồ quan hệ Quan hệ là một bảng gồm các dòng và cột. Mỗi tiêu đề cột đƣợc gọi là thuộc tính, nhận các giá trị trong một tập gọi là miền giá trị của thuộc tính. Tập các thuộc tính đƣợc gọi là lƣợc đồ quan hệ. Mỗi dòng đƣợc gọi là bộ. Ta có định nghĩa hình thức nhƣ sau. Định nghĩa 2.1 1. Lược đồ quan hệ là một tập hữu hạn các thuộc tính R = {A1, A2, , An }. Mỗi thuộc tính Ai có kiểu dữ liệu riêng với tập giá trị là dom(Ai) = Di (1 i n). 2. Quan hệ là một tập các bộ r = r(R) = { t1, t2, , tp }, mỗi bộ t = (a1, a2, , an ) với t.Ai = ai Di ( 1 i n ). Bảng p+1 dòng, n cột biểu diễn một quan hệ p bộ, n thuộc tính. Dòng đầu là danh sách n thuộc tính, p dòng tiếp theo là p bộ. Giá trị t.Ai của thuộc tính thứ i đƣợc đặt ở đúng cột i. Ví dụ 2.3 Cho quan hệ lịch bay, mỗi dòng là một lịch bay cụ thể cho biết thông tin của chuyến bay gồm mã số chuyến bay, nơi đi, nơi đến, giờ đi và giờ đến. Airline_schedule (NUMBER FROM TO DEPARTS ARRIVES) 83 JFK O‟Hare 11:30a 1:43p 84 O‟Hare JFK 3:00p 5:55p 109 JFK Los Angeles 9:50p 2:52a 213 JFK Boston 11:43a 12:45p 214 Boston JFK 2:20p 3:12p Airline_schedule là một quan hệ trên lƣợc đồ {NUMBER, FROM, TO, DEPARTS, ARRIVES}. Miền giá trị của mỗi thuộc tính có thể là: dom(NUMBER) = tập các số gồm 1, 2 hoặc 3 ký số; dom(FROM) =
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 43 dom(TO) = {JFK, O’Hare, Los Angeles, Boston, Atlanta}; dom(DEPARTS) = dom(ARRIVES) = tập thời gian trong ngày. Chúng ta có thể dùng các chữ tắt để có một quan hệ kém ngữ nghĩa nhƣng dễ khảo sát. Ví dụ 2.4 Ký hiệu N, F, T, A, D và r thay cho NUMBER, FROM, TO, ARRIVES, DEPARTS và Airline_schedule ta có quan hệ r đƣợc định nghĩa trên lƣợc đồ R = (NFTAD) nhƣ sau r (N F T D A) n1 c1 c2 d1 a1 n2 c2 c1 d2 a2 n3 c1 c3 d3 a3 n4 c1 c4 d4 a4 n5 c4 c1 d5 a5 2.2. Khoá của lƣợc đồ quan hệ Thử tƣởng tƣợng tình huống một phụ huynh đến trƣờng hỏi về tình hình học tập của con em mình. Ngƣời ấy sẽ phải cung cấp thông tin gì để nhân viên quản lý có thể xác định chính xác sinh viên này? Thông tin để phân biệt các đối tƣợng đƣợc gọi là thông tin định danh và tập thuộc tính tƣơng ứng đƣợc gọi là khoá Định nghĩa 2.2 Cho quan hệ r định nghĩa trên lược đồ quan hệ R, tập con K R được gọi 1. Là siêu khoá nếu t, t’ r ta có t.Ai = t’.Ai (Ai K, gọn t.K = t’.K) t = t’. 2. Là khoá nếu K là siêu khoá của r và không có tập con thật sự nào nào của K thoả tính chất này. Một lƣợc đồ quan hệ có thể có nhiều khoá. Những khoá mà ngƣời dùng liệt kê ra gọi là các khoá tƣờng minh hay còn gọi là các khoá chỉ định, ngƣợc lại khoá không tƣờng minh đƣợc gọi là khoá ẩn. Trong số các khoá tƣờng minh ta thƣờng chọn ra một khoá và gọi là khoá chính21. Chú ý là có một số khoá chỉ định có thể mới chỉ là siêu khoá, hoặc vì lý do nào đó hoặc vì 21 Nếu có thể, khoá chính chỉ nên gồm 1 thuộc tính. Trong hầu hết các trƣờng hợp chúng ta thƣờng bổ sung cho lƣợc đồ một thuộc tính làm khoá chính
- 44 Giáo trình cơ sở dữ liệu lúc chỉ định việc hiểu bài toán chưa thật thấu đáo. Thực tế, dữ liệu đƣợc lƣu trong quan hệ phải tuân theo một số quy tắc. Thoả mãn một tập các khoá cũng là một quy tắc, cho nên lƣợc đồ quan hệ cần bổ sung thêm tập các khoá. Theo đó lƣợc đồ quan hệ sẽ xác định các khóa để các quan hệ cụ thể trên lƣợc đồ này phải thỏa. Xét quan hệ Sinh viên cụ thể, mặc dù có thể thấy giá trị trên tập các thuộc tính {Họ, Tên, Ngày sinh} là phân biệt lẫn nhau, nhƣng cũng không vì thế mà coi chúng là khóa của lƣợc đồ, trừ phi đó là yêu cầu thực sự của hệ thống. Bạn đọc cần lƣu ý định nghĩa trên phát biểu cho quan hệ r bất kỳ có ngụ ý nói rằng khóa là một khái niệm của lƣợc đồ. Từ nay về sau khi nói đến khóa chúng ta hiểu là khóa của lƣợc đồ quan hệ mà tất cả các quan hệ đƣợc định nghĩa trên lƣợc đồ này đều phải thỏa. Định nghĩa 2.3 Một lược đồ quan hệ là một bộ (R, K) gồm tập R các thuộc tính và tập K các khoá Nếu đƣợc, thay vì liệt kê tập K chúng ta gạch chân các thuộc tính tham gia trong khoá Ví dụ 2.5 Lƣợc đồ lịch bay viết lại cho đầy đủ R = (NFTAD) = (NFTAD, {N}) Một cách ít hình thức hơn cho phép dễ dàng kiểm tra khoá, đó là dữ liệu trên thuộc tính khoá không xuất hiện nhiều hơn một lần. Ta có thuật toán: Thuật toán 1: SatisfyKey(r, K) Vào : quan hệ r và khoá K R. Ra : đúng hoặc sai. Các bước : 1. xây dựng r‟={ t.K | t r }. 2. trả về |r| = |r‟| Ví dụ 2.6 Quan hệ lịch bay thỏa khoá NUMBER vì tập {t.N | t r} = {n1, n2, n3, n4, n5} = {83, 84, 109, 213, 214} có số phần tử bằng đúng số phần tử của tập r = Airline_schedule.
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 45 2.3. Quan hệ toán học Để dễ dàng sử dụng các phép toán trên quan hệ, chúng ta nên tìm hiểu khái niệm quan hệ theo nghĩa toán học. Theo đó quan hệ là tập con của tập tích22. Ví dụ 2.1 Cho hai tập X = {a, b, c, d, f, g} và Y = {1, 2, 3, 4, 5, 6}. Xét tập con r của tập tích X Y, r = {(b, 3), (c, 3), (c, 4), (d, 3), (d, 4), (d, 5), (e, 4), (f, 4), (f, 5), (g, 6)}, r là một quan hệ định nghĩa trên X Y. Ta có dạng bảng của r: r X Y g b 3 f c 3 e c 4 d c d 3 b d 4 a d 5 1 2 3 4 5 6 7 e 4 f 4 f 5 g 6 Với biểu diễn dạng bảng, ta có mỗi dòng là một điểm của quan hệ trong tập tích, tên bảng là tên quan hệ, tên của mỗi tập thành phần là thuộc tính. Như vậy, không gian tích biểu diễn lược đồ, điểm trong không gian tích biểu diễn bộ và tập các điểm cho ta một quan hệ. Số các thuộc tính (cột) được gọi là cấp của quan hệ; số các bộ (dòng) được gọi là bản số của quan hệ. Theo đó, quan hệ r(X, Y) ở trên có cấp bằng 2 và bản số bằng 9. 22 Các tính chất của một quan hệ nhƣ phản xạ, đối xứng, phản xứng, bắt cầu, tƣơng đƣơng, thứ tự, hàm, đã đƣợc nghiên cứu chi tiết trong môn toán rời rạc. Môn này tập trung nói về lƣu trữ hiệu quả.
- 46 Giáo trình cơ sở dữ liệu 3. Mô hình Ta dùng các bảng để lƣu dữ liệu. Mỗi bảng lƣu thông tin của các đối tƣợng cùng loại, các liên kết cùng loại. Tuy nhiên, khi làm việc với mô hình chúng ta chỉ quan tâm đến các lƣợc đồ và các quan hệ giữa chúng. 3.1. Cơ sở dữ liệu và lƣợc đồ cơ sở dữ liệu Định nghĩa 2.4 1. Lược đồ cơ sở dữ liệu D trên U là một tập các lược đồ quan hệ {R1, R2, , Rp} sao cho U = R1R2 Rp (mỗi Ri có thể định nghĩa kèm theo tập khoá Ki ). 2. Cơ sở dữ liệu d là tập các quan hệ d = { r1, r2, , rp } với ri (Ri) . Từ nay về sau nếu không sợ nhầm lẫn ta sẽ coi ri là quan hệ trên Ri. Ví dụ 2.7 r1 ( A B C ) r2 ( B D ) a1 b1 c1 b1 d1 a1 b2 c2 b2 d2 a2 b3 c3 b3 d3 a2 b4 c4 b4 d4 a2 b1 c5 b5 d2 a3 b1 c6 a3 b2 c4 a4 b3 c1 a4 b3 c6 a4 b5 c7 Ta có d = {r1, r2} là một cơ sở dữ liệu định nghĩa trên lƣợc đồ cơ sở dữ liệu D = {R1, R2} trong đó R1= (ABC,{AC}) và R2=(BD,{B}) Trong định nghĩa trên, chúng ta chỉ thấy các lƣợc đồ mà không nhận ra các quan hệ giữa các lƣợc đồ. Thật ra, giữa các bảng có các thuộc tính chung hoặc có các liên hệ cho phép hình thành các liên kết có nghĩa23. Bạn đọc đã biết cấu trúc đồ thị, một cấu trúc rời rạc rất hữu dụng24. Một đồ thị gồm một tập hữu hạn các đỉnh và một tập hữu hạn các cạnh, mỗi cạnh nối hai 23 Thƣờng đƣợc giữ trong các tài liệu phân tích thiết kế. 24 Xem toán rời rạc.
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 47 đỉnh. Hình dung các bảng là các đỉnh. Khi ấy tồn tại các cạnh với ngữ nghĩa cụ thể giúp liên kết các dữ liệu trong cơ sở dữ liệu để giải quyết một bài toán nào đó. Ví dụ 2.8 Trong cơ sở dữ liệu điện lực, ta thấy có các liên kết sau cho phép tính hoá đơn tiền điện Khách hàng (Mã KH Địa chỉ Tiêu thụ) Định mức (Từ Đến Giá) 01 134 NTT 120 1 100 80 02 242/4 TBT 250 101 150 100 03 33 PH 80 151 200 150 201 400 200 Thông thƣờng các liên kết đƣợc hình thành từ phép so sánh bằng, trƣờng hợp cụ thể ở đây các liên kết đƣợc hình thành từ phép so sánh Tiêu thụ Từ. Bằng cách bỏ đi dữ liệu, chỉ giữ lại các lƣợc đồ, chúng ta nhìn thấy mô hình dữ liệu giúp tƣ duy dễ dàng hơn. Trong phần cuối của chƣơng, bằng cách hình dung lƣợc đồ cơ sở dữ liệu nhƣ là một đồ thị, chúng ta có thể viết các phép toán quan hệ giải một bài toán cụ thể. 3.2. Ràng buộc toàn vẹn Khái niệm Dữ liệu trong hệ thống có liên quan với nhau và thỏa một số ràng buộc, là những quy tắc bất biến đối với các quan hệ trong cơ sở dữ liệu. Chúng đƣợc gọi là các ràng buộc toàn vẹn. Những lƣợc đồ quan hệ tham gia mô tả ràng buộc toàn vẹn đƣợc gọi là bối cảnh của ràng buộc toàn vẹn. Các thao tác thêm, xoá, sửa có ảnh hƣởng đến ràng buộc toàn vẹn đều đƣợc mô tả trong một bảng gọi là bảng tầm ảnh hƣởng; nhờ bảng này chúng ta dễ dàng đặc tả các phƣơng thức xử lý khi thao tác trên dữ liệu. Khi định nghĩa khoá cho một lƣợc đồ quan hệ, chúng ta đã đƣa ra một quy tắc và gọi là ràng buộc khoá. Với ràng buộc khoá, bối cảnh của ràng buộc là lƣợc đồ quan hệ trên đó khoá đƣợc định nghĩa và các thao tác thêm sửa có thể ảnh hƣởng đến ràng buộc này25. 25 Dù thao tác sửa hiếm khi sửa giá trị của thuộc tính khoá chính, nhƣng các khoá khác thì không chắc.
- 48 Giáo trình cơ sở dữ liệu Ví dụ 2.9 Cho cơ sở dữ liệu gồm 3 quan hệ Độc-Giả (Mã-DG, Địa-chỉ-DG) Sách (Mã-sách, Số-bản) Mượn (Mã-DG, Mã-sách, Ngày-mượn ) Giả sử có 3 quy tắc: 1. Chỉ lƣu một địa chỉ cho mỗi độc giả. 2. Một độc giả đƣợc mƣợn không quá 3 cuốn sách. 3. Không cho mƣợn nếu số bản còn lại của sách bằng đúng 1. Ký hiệu D, C, S, B, N thay cho Mã-DG, Địa-chỉ-DG, Mã-sách, Số-bản, Ngày-mượn và r1, r2, r3 thay cho Độc-Giả, Sách, Mượn. Cơ sở dữ liệu đƣợc viết lại: r1(DC); r2,(SB); r3(DSN) Ngoài quy tắc 1 là hệ quả của ràng buộc khoá, hai quy tắc còn lại đƣợc trình bày dƣới dạng mệnh đề nhƣ sau: 1. Quy tắc 2 : t r1, |{t‟ r3| t.D = t‟.D}| 3 2. Quy tắc 3 : t r2, t.B - |{t‟ r3| t.S = t‟.S}| 1 26 Bối cảnh của quy tắc 2 là R3 , bối cảnh của quy tắc 3 là R2 và R3. Ta xây dựng bảng tầm ảnh hƣởng: r2 Sách r3 Mượn Quy tắc Thêm Xoá Sửa Thêm Xoá Sửa 2 * Mã-DG 3 Số-bản * Mã-sách Trong bảng tầm ảnh hƣởng, với thao tác sửa nên ghi rõ sửa trên thuộc tính nào. Bảng tầm ảnh hƣởng trên đây minh hoạ điều này. 26 Mặc dù khi viết quy tắc 2 dƣới dạng mệnh đề chúng ta có dùng bảng r1, thật ra chỉ cần nhóm các dòng của r3 theo mã độc giả thì mỗi nhóm có bản số không quá 3.
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 49 Phân loại ràng buộc toàn vẹn Ràng buộc trên cùng một quan hệ 1. Ràng buộc khác trống. Ràng buộc này không cho phép một thuộc tính không có dữ liệu. Cần lƣu ý các thuộc tính tham gia vào khoá chính phải chịu ràng buộc này. Ví dụ 2.10 Giả sử bắt buộc phải lƣu địa chỉ của độc giả. Quan hệ r1 sau vi phạm ràng buộc khác trống (chuỗi trống là khác với chuỗi rỗng), vì thuộc tính địa chỉ cũng nhƣ thuộc tính khoá chính không đƣợc phép để trống r1 (D C) d1 c1 d2 c3 2. Ràng buộc miền giá trị. Trong thực tế, miền giá trị của thuộc tính hết sức phong phú trong khi các kiểu dữ liệu có sẵn lại hạn chế. Với ràng buộc này chúng ta làm chính xác hơn miền giá trị của thuộc tính Ví dụ 2.11 Giả sử Dom(Số-bản) = {3, 4, 5, 6, 7, 8, 9, 10}, quan hệ r2 sau có hai dòng bị vi phạm (nếu không có ràng buộc này, chúng ta dùng kiểu dữ liệu xây dựng sẵn gần nhất là kiểu số nguyên dƣơng 1 byte, thì vi phạm này sẽ không đƣợc phát hiện). r2 (S B) s1 1 s2 12 s3 5 3. Ràng buộc liên thuộc tính. Xảy ra trên cùng dòng. Ví dụ 2.12 Giả sử trong sách ta thêm thuộc tính số bản đang mượn (M) thì ràng buộc 3 trở thành ràng buộc liên thuộc tính B – M 1. Hai quan hệ r2 và r3 sau vi phạm ràng buộc này. r2 ( S B M ) r3 ( D S N) s1 3 3 d1 s1 n1 s2 4 1 d1 s2 n1 s3 6 0 d3 s1 n1 s4 3 0 d4 s1 n2
- 50 Giáo trình cơ sở dữ liệu 4. Ràng buộc liên bộ. Là ràng buộc giữa các dòng. Một số tính chất quan trọng của quan hệ nhƣ phản xạ, đối xứng, phản xứng, bắt cầu, xác định hàm, thuộc loại này. Ví dụ 2.13 Xét quan hệ r = [sổ cái] ([chứng Từ gốc], [tài Khoản], [tài khoản Đối ứng]), có tính đối xứng. Quan hệ r sau vi phạm ràng buộc nói trên r (T K D) 1 t1 t2 1 t2 t1 2 t1 t3 Ràng buộc trên nhiều quan hệ 1. Ràng buộc tồn tại. Sự xuất hiện của một thể hiện này phụ thuộc vào sự xuất hiện của một thể hiện khác. Ví dụ 2.14 Xét lƣợc đồ cơ sở dữ liệu tại một trƣờng đại học {R1(LN), R2(SL), R3(SML), R4(NM)} với cơ sở dữ liệu r1 = LopHoc, r2 = SinhVien, r3 = DangKy và r4 = KeHoach và L, N, S, M là viết tắt của các thuộc tính ma Lop, ma Nganh, ma Sinh Vien, ma Mon. Trƣờng cho phép sinh viên đăng ký học lại các môn không đạt chung với lớp khác. Đăng ký phải thỏa mãn ràng buộc tồn tại sau: môn đăng ký phải là môn không đạt, có tổ chức dạy ở một lớp nào đó cùng ngành đào tạo. Cơ sở dữ liệu sau vi phạm ràng buộc này r1 ( L N) r2 ( S L ) r3 ( S M L ) r4 ( N M ) l1 a s1 l1 s1 m1 l3 a m1 l2 b s2 l1 s2 m2 l2 a m2 l3 a s3 l2 s3 m1 l2 b m2 s4 l2 b m3 s5 l3 2. Ràng buộc khoá ngoại. Là một ràng buộc tồn tại đặc biệt, trong đó một số thuộc tính trong lƣợc đồ đang xét tham chiếu đến các thuộc tính khoá của lƣợc đồ khác Ví dụ 2.15 Trong lƣợc đồ của quan hệ Muon, [Ma Sach] tham chiếu đến khoá chính [Ma Sach] trong lƣợc đồ của quan hệ Sach, và [Doc Gia] tham chiếu đến
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 51 khoá chính [Doc Gia] trong lƣợc đồ của quan hệ Doc_gia. Cơ sở dữ liệu thư viện sau vi phạm ràng buộc khoá ngoại này: r1 ( D C ) r2 ( S B ) r3 ( S D ) d1 c1 s1 4 s1 d1 d2 c2 s2 5 s4 d3 d3 c3 s3 9 s2 d5 3. Ràng buộc liên quan hệ, liên thuộc tính. Là mở rộng của ràng buộc liên thuộc tính trong trƣờng hợp các thuộc tính này nằm ở các bảng khác nhau Ví dụ 2.16 Giả sử thuộc tính số bản đang mượn (M) đƣợc lƣu trong một quan hệ khác với quan hệ mượn, khi ấy quy tắc 3 là một ràng buộc liên quan hệ, liên thuộc tính. Chẳng hạn ta có quan hệ r4(SM) lƣu số bản đang đƣợc mƣợn; cơ sở dữ liệu sau vi phạm quy tắc 3 r2 ( S B) r3 ( D S N) r4 ( S M ) s1 3 d1 s1 n1 s1 3 s2 4 d1 s2 n1 s2 1 s3 6 d3 s1 n1 s4 3 d4 s1 n2 4. Ràng buộc liên quan hệ, liên bộ. Là mở rộng của ràng buộc liên bộ trong trƣờng hợp các bộ này nằm ở các bảng khác nhau Ví dụ 2.17 Với lƣợc đồ cơ sở dữ liệu ban đầu, quy tắc 3 (quy tắc không cho mượn nếu số bản còn lại của sách bằng đúng 1) là một ràng buộc liên quan hệ, liên bộ. Cơ sở dữ liệu thư viện sau vi phạm quy tắc 3 này r1 ( D C ) r2 ( S B ) r3 ( S D N) d1 c1 s1 4 s1 d1 n1 d2 c2 s2 5 s1 d3 n1 d3 c3 s3 9 s2 d3 n2 Nhƣ vậy việc cho một lƣợc đồ cơ sở dữ liệu ngoài các lƣợc đồ quan hệ, về mặt thực tiễn, chúng còn bị ràng buộc bởi các quy tắc mà cơ sở dữ liệu
- 52 Giáo trình cơ sở dữ liệu phải thỏa27. Đứng trên quan điểm thực hành chúng ta quan tâm nhiều đến các ràng buộc toàn vẹn. Ta có định nghĩa. Định nghĩa 2.5 1. Lược đồ cơ sở dữ liệu D là một tập các lược đồ quan hệ {R1, R2, , Rp} trong đó mỗi lược đồ quan hệ Ri ngoài tập thuộc tính ra còn phát biểu một vị từ mà ở đây ta sẽ gọi là tân từ trong đó có ẩn chứa các ràng buộc toàn vẹn. 2. Cơ sở dữ liệu d định nghĩa trên lược đồ cơ sở dữ liệu D = {R1, R2, , Rp} là họ các quan hệ d = {r1, r2, , rp} với ri là quan hệ trên Ri và thoả tân từ của quan hệ. Ví dụ 2.18 Mô hình dữ liệu của cơ sở dữ liệu kế toán có thể đƣợc cho nhƣ sau : Cho danh sách các thuộc tính TKSO CHAR(5) TKTEN CHAR(25) CTSO CHAR(8) NGAY_LAP DATE NOI_DUNG CHAR(50) VIET_CHO CHAR(25) TKNO CHAR(5) TKCO CHAR(5) SO_TIEN INT(20) Danh sách các quan hệ cùng các lƣợc đồ quan hệ tƣơng ứng TK( TKSO, TKTEN ) Tân từ: Quan hệ tài khoản (TK) lƣu thể hiện của các thực thể tài khoản. Mỗi thể hiện tài khoản có một tài khoản số (TKSO) nhằm phân biệt các tài khoản với nhau và một tài khoản tên (TKTEN) cho ngƣời dùng biết ý nghĩa của tài khoản này. CHTU (CTSO, NGAY_LAP, NOI_DUNG, VIET_CHO) Tân từ: Quan hệ chứng từ (CT) lƣu thể hiện của các thực thể chứng từ. Mỗi thể hiện chứng từ có một chứng từ số 27 Hệ quản trị cơ sở dữ liệu lƣu đặc tả của các thuộc tính, các lƣợc đồ quan hệ cũng nhƣ các ràng buộc toàn vẹn trong từ điển dữ liệu.
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 53 (CTSO) để phân biệt các chứng từ với nhau; với một chứng từ cần thiết phải lƣu các thông tin bắt buộc gồm có ngày lập (NGAY_LAP), nội dung (NOI_DUNG) và tên người ký nhận chứng từ (VIET_CHO) CTCT (CTSO, TKNO, TKCO, SO_TIEN) Tân từ: Quan hệ chi tiết chứng từ (CTCT) lƣu thể hiện của các liên kết giữa chứng từ và tài khoản. Mỗi thể hiện chi tiết chứng từ liên quan đến một chứng từ (CTSO) và hai tài khoản (TKNO, TKCO); với một chi tiết chứng từ, bắt buộc phải có một số tiền (SO_TIEN) đƣợc ghi nợ vào TKNO và ghi có vào TKCO. Việc lập các chi tiết chứng từ phải thỏa các quy tắc quản lý sau (1) các tài khoản đƣợc ghi nợ hay có đều phải khác nhau (2) chúng đều đã có trong quan hệ TK (3) với tất cả các chi tiết của cùng một chứng từ nếu ghi nợ vào nhiều tài khoản thì ghi có vào chỉ một tài khoản và ngƣợc lại. Ta có thể rút ra các ràng buộc Khoá: 1. TKSO là khoá của TK 2. CTSO là khoá của CHTU 3. CTSO,TKNO,TKCO là khoá của CTCT Khoá ngoại: 4. TKNO, TKCO trong CTCT chịu ràng buộc khoá ngoại TKSO trong TK 5. CTSO trong CTCT chịu ràng buộc khoá ngoại CTSO trong CHTU Ràng buộc khác: 6. Các thuộc tính NGAY_LAP, NOI_DUNG, VIET_CHO và SO_TIEN phải thỏa ràng buộc khác rỗng 7. t CTCT, t.TKNO t.TKCO 8. t CHTU, t1, t2 {t‟ CTCT | t‟.[CTSO] = t.[CTSO]}, (t1.[TKNO] t2.[TKNO] t1.[TKNO] = t2.[TKNO]) Các ràng buộc toàn vẹn 1 từ đến 7 là rõ ràng, riêng ràng buộc thứ 8 có thể viết lại dƣới dạng phủ định:
- 54 Giáo trình cơ sở dữ liệu t CHTU, t1, t2 {t‟ CTCT | t‟.[CTSO] = t.[CTSO]}, (t1.[TKNO] t2.[TKNO]) (t1.[TKNO] t2.[TKNO]) dạng này rồi sẽ đƣợc chuyển về một biểu thức quan hệ giúp kiểm tra ràng buộc đƣợc dễ dàng hơn (xem bài tập). Ví dụ 2.19 Xét cơ sở dữ liệu nhân viên với các lƣợc đồ quan hệ: PHONG( MaPG, TenPG, SoDT ) Tân từ: Quan hệ phòng (PHONG) lƣu thể hiện của các thực thể phòng. Mỗi thể hiện phòng có một mã phòng (MaPG), nhằm phân biệt các phòng với nhau, một tên phòng (TenPG) và một số điện thoại (SoDT). NHAN_VIEN( MaNV, TenNV, MaPG, LaTP ) Tân từ: Quan hệ nhân viên (NHAN_VIEN) lƣu thể hiện của các thực thể nhân viên. Mỗi thể hiện nhân viên có một mã nhân viên (MaNV), nhằm phân biệt các nhân viên với nhau, một tên nhân viên (TenNV), đƣợc xếp vào một phòng duy nhất (MaPG) và đƣợc xác định có phải là trƣởng phòng hay không (LaTP). Ngoài ra trong số các nhân viên cùng phòng có một và chỉ một ngƣời làm trƣởng phòng. Ta có thể rút ra các ràng buộc (ngoại trừ các ràng buộc khác trống, miền giá trị) Khoá: 1. MaPG là khoá của PHONG 2. MaNV là khoá của NHAN_VIEN Khoá ngoại: 3. MaPG trong NHAN_VIEN chịu ràng buộc khoá ngoại MaPG trong PHONG Ràng buộc khác: 4. ∀ ∈ 푃 , ∃! 푛 ∈ , . 푃 = 푛. 푃 ⋀푛. 퐿 푃 Cho đến lúc này chúng ta đã nắm đƣợc các yếu tố của mô hình cơ sở dữ liệu quan hệ bao gồm lược đồ quan hệ, lược đồ cơ sở dữ liệu, ràng buộc toàn vẹn. Chúng ta cũng phân biệt đƣợc sự khác nhau giữa khoá và siêu
- Chƣơng 2: Mô hình cơ sở dữ liệu quan hệ 55 khoá, giữa khoá chính và các khoá thay thế, giữa khoá ngoại và ràng buộc tồn tại. Có các ràng buộc đơn giản nhƣ khác trống, miền giá trị, liên thuộc tính; có các ràng buộc giữa các dòng trong cùng một bảng; có các ràng buộc phức tạp giữa các bảng khác nhau. Chúng ta cũng nhìn mô hình cơ sở dữ liệu quan hệ dƣới cấu trúc đồ thị. Với mô hình cơ sở dữ liệu quan hệ, dữ liệu đƣợc tổ chức lƣu trữ trong các bảng với các ràng buộc nhằm bảo đảm tính nhất quán của dữ liệu. Dữ liệu của một thực thể, mang tính nhất thể, có thể đƣợc lƣu trong nhiều bảng và rất cần đƣợc phục hồi. Dữ liệu đƣợc lƣu trữ cần đƣợc khai thác hiệu quả. Chúng ta đã biết bảng thực chất là một quan hệ. Với quan hệ chúng ta có các phép toán. Việc tính toán mà biểu thức đƣợc tạo ra bởi các quan hệ và các phép toán quan hệ là một tiếp cận rất khác. Trong phần còn lại của chƣơng chúng ta sẽ học về các phép toán quan hệ và dùng chúng để giải quyết các bài toán vừa đề cập: phục hồi dữ liệu và khai thác cơ sở dữ liệu. 4. Đại số quan hệ Chúng ta đang làm việc với quan hệ, do đó chúng ta cần các thao tác trên quan hệ. Về bản chất quan hệ là tập con trong không gian tích. Chúng ta sẽ phải làm việc với các phép toán làm thay đổi lƣợc đồ và các phép toán liên quan đến tập con. Quan hệ cùng với các phép toán quan hệ đƣợc gọi là đại số quan hệ. Tại điểm này đại số quan hệ là ngôn ngữ cơ sở dữ liệu quan hệ phù hợp nhất cho phép bỏ qua các chi tiết cài đặt. 4.1. Các ví dụ mở đầu Ví dụ 2.20 Xét bài toán tính hoá đơn tiền điện của công ty điện lực. Cụ thể: cho các bảng Khách hàng (Mã KH Địa chỉ Tiêu thụ) Định mức (Từ Đến Giá) 01 134 NTT 120 1 100 80 02 242/4 TBT 250 101 150 100 03 33 PH 80 151 200 150 201 400 200 Hãy phát sinh bảng
- 56 Giáo trình cơ sở dữ liệu Chi tiết tiêu thụ (Mã KH Tiêu thụ thực Giá Thành tiền) 01 100 80 8000 01 20 100 2000 02 100 80 8000 02 50 100 5000 02 50 150 7500 02 50 200 10000 03 80 80 6400 Ở đây từ 2 lƣợc đồ (Mã KH, Địa chỉ, Tiêu thụ) và (Từ, Đến, Giá) chúng ta phải tạo ra lƣợc đồ mới (Mã KH, Tiêu thụ, Giá, Thành tiền), từ hai quan hệ Khách hàng và Định mức chúng ta phát sinh ra quan hệ mới Chi tiết tiêu thụ. Thử khảo sát quá trình sau: Tích Khách hàng với Định mức r1 (Mã KH Địa chỉ Tiêu thụ Từ Đến Giá) 01 134 NTT 120 1 100 80 01 134 NTT 120 101 150 100 01 134 NTT 120 151 200 150 01 134 NTT 120 201 400 200 02 242/4 TBT 250 1 100 80 02 242/4 TBT 250 101 150 100 02 242/4 TBT 250 151 200 150 02 242/4 TBT 250 201 400 200 03 33 PH 80 1 100 80 03 33 PH 80 101 150 100 03 33 PH 80 151 200 150 03 33 PH 80 201 400 200 Chỉ những dòng thể hiện có tiêu thụ trong mức tƣơng ứng mới đƣợc tính toán. Chọn trên r1 những dòng thể hiện chỉ số sử dụng thực, đó là Tiêu thụ Từ, ta có r2 (Mã KH Địa chỉ Tiêu thụ Từ Đến Giá) 01 134 NTT 120 1 100 80 01 134 NTT 120 101 150 100 02 242/4 TBT 250 1 100 80 02 242/4 TBT 250 101 150 100 02 242/4 TBT 250 151 200 150 02 242/4 TBT 250 201 400 200 03 33 PH 80 1 100 80