Giáo trình Cơ sở dữ liệu - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ

docx 85 trang Gia Huy 16/05/2022 2730
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Cơ sở dữ liệu - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ", để 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:

  • docxgiao_trinh_co_so_du_lieu_trinh_do_cao_dang_truong_cao_dang_k.docx

Nội dung text: Giáo trình Cơ sở dữ liệu - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ

  1. BM/QT10/P.ĐTSV/04/04 Ban hành lần: 3 UBND TỈNH BÀ RỊA – VŨNG TÀU TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ GIÁO TRÌNH MÔN HỌC : CƠ SỞ DỮ LIỆU NGHỀ: CÔNG NGHỆ THÔNG TIN TRÌNH ĐỘ: CAO ĐẲNG (Ban hành kèm theo Quyết định số: /QĐ-CĐKTCN ngày .tháng .năm của Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR – VT) BÀ RỊA-VŨNG TÀU, NĂM 2020 1
  2. TUYÊN BỐ BẢN QUYỀN Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viên nghề Công nghệ thông tin trong trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu. Chúng tôi đã thực hiện biên soạn tài liệu Cơ sở dữ liệu này. Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học tập, lưu hành nội bộ trong nhà trường nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. 2
  3. LỜI GIỚI THIỆU Cơ sở dữ liệu là môn học cơ sở của ngành Công nghệ thông tin. Là nền tảng để xây dựng, tổ chức dữ liệu trong thực tế. Giáo trình Cơ sở dữ liệu được biên soạn cho sinh viên ngành Công nghệ thông tin, dựa trên chương trình đào tạo của môn học này. Cung cấp cho người học kiến thức và kỹ năng về để phân tích và thiết kế cơ sở dữ liệu. Giáo trình gồm 12 bài với các nội dung được trình bày từ nội dung cơ bản đến nâng cao. Trang bị đầy đủ kiến thức để người học có thể xây dựng, tổ chức dữ liệu cấu trúc cho phần mềm. Đây có thể coi là nền tảng lý thuyết để xây dựng hệ quản trị cơ sở dữ liệu phù hợp, tối ưu. Nội dung các bài như sau: Bài mở đầu: Giới thiệu cơ sở dữ liệu Bài 1: Khái niệm cơ bản trong mô hình cơ sở dữ liệu quan hệ Bài 2: Phép hội, phép giao, phép trừ trên đại số quan hệ Bài 3: Phép tích đề các và phép chia trên đại số quan hệ Bài 4: Phép chiếu và phép chọn trong đại số quan hệ Bài 5: Phép kết nối trong đại số quan hệ Bài 6: Xác định RBTV trên bối cảnh 1 quan hệ Bài 7: Xác định RBTV trên bối cảnh nhiều quan hệ Bài 8: Phụ thuôc hàm và hệ tiên đề Amstrong cho các phụ thuộc hàm Bài 9: Xác định Bao đóng của tập thuộc tính Bài 10: Xác định Khóa của lược đồ CSDL Bài 11: Xác định Phủ tối thiểu của lược đồ CSDL Bài 12: Xác định Dạng chuẩn của lược đồ CSDL Xin được gửi lời cảm ơn tới các thầy cô, đặc biệt là các thầy cô khoa Công nghệ thông tin trường Cao đẳng kỹ thuật công nghệ tỉnh BRVT đã nhiệt tình góp ý để tác giả có thể hoàn thiện giáo trình về mặt nội dung và hình thức trình bày. BRVT, ngày tháng năm 2020 Tham gia biên soạn Trần Thị Thuỳ Dung 3
  4. MỤC LỤC TRANG LỜI GIỚI THIỆU 3 MỤC LỤC 4 BÀI MỞ ĐẦU: GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU 8 1. Một số khái niệm 8 1.1. Cơ sở dữ liệu 8 1.2. Hệ quản trị cơ sở dữ liệu 11 2. Các mô hình dữ liệu 12 2.1. Mô hình dữ liệu mạng 13 2.2. Mô hình phân cấp 14 2.3. Mô hình quan hệ 15 2.4. Mô hình thực thể mối kết hợp (Entity Relationship Diagram ERD) 15 2.5. Cách chuyển đổi từ mô hình thực thể kết hợp sang mô hình quan hệ 18 2.6. Mô hình hướng đối tượng 21 CÂU HỎI - BÀI TẬP: 21 BÀI 1: CÁC KHÁI NIỆM CƠ BẢN TRONG MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ 24 1. Thuộc tính 24 2. Lược đồ quan hệ 25 3. Quan hệ 25 4. Bộ giá trị 26 5. Tân từ 26 6. Khóa, siêu khóa, khóa chỉ định, khóa chính, khóa ngoại 26 9. Các phép tính trên cơ sở dữ liệu quan hệ 28 CÂU HỎI - BÀI TẬP 28 BÀI 2: PHÉP HỘI, PHÉP GIAO, PHÉP TRỪ TRÊN ĐẠI SỐ QUAN HỆ 31 1. Giới thiệu về đại số quan hệ 31 2. Phép hội (hợp) 2 quan hệ (Union) 32 3. Phép giao 2 quan hệ (Intersection) 32 4. Phép Trừ 2 quan hệ (Minus) 33 CÂU HỎI - BÀI TẬP 34 BÀI 3: PHÉP TÍCH ĐỀ CÁC VÀ PHÉP CHIA TRÊN ĐẠI SỐ QUAN HỆ 35 1. Tích Decac của 2 quan hệ (Cartesian Product) 35 2. Phép chia 2 quan hệ: 37 CÂU HỎI - BÀI TẬP 37 BÀI 4: PHÉP CHIẾU VÀ PHÉP CHỌN TRONG ĐẠI SỐ QUAN HỆ 38 1. Phép chiếu ( Project) 38 2. Phép chọn (Selection) 39 3. Phép gán. 41 4. Phép gom nhóm và các hàm nhóm 41 CÂU HỎI - BÀI TẬP 42 BÀI 5: PHÉP KẾT NỐI TRONG ĐẠI SỐ QUAN HỆ 47 4
  5. 1. Phép kết ( phép nối) 47 2. Phép kết tự nhiên 48 3. Phép kết ngoài (outer join) 49 CÂU HỎI - BÀI TẬP 50 BÀI 6: XÁC ĐỊNH RÀNG BUỘC TOÀN VẸN CÓ BỐI CẢNH MỘT QUAN HỆ 56 1. Khái niệm và các yếu tố của ràng buộc toàn vẹn 56 2. Ràng buộc miền giá trị trên bối cảnh một quan hệ 58 3. Ràng buộc toàn vẹn liên thuộc tính 58 4. Ràng buộc liên bộ - liên thuộc tính trên bối cảnh 1 quan hệ 59 CÂU HỎI - BÀI TẬP 59 BÀI 7: XÁC ĐỊNH RÀNG BUỘC TOÀN VẸN CÓ BỐI CẢNH NHIỀU QUAN HỆ 61 1. Ràng buộc toàn vẹn tham chiếu 61 2. Ràng buộc toàn vẹn liên thuộc tính. 62 3. Ràng buộc toàn vẹn do thuộc tính tổng hợp. 62 CÂU HỎI – BÀI TẬP 63 BÀI 8: PHỤ THUỘC HÀM VÀ HỆ TIÊN ĐỀ AMSTRONG CHO CÁC PHỤ THUỘC HÀM 65 1. Định nghĩa phụ thuộc hàm 65 2. Một số tính chất của phụ thuộc hàm - Hệ luật dẫn Armstrong 66 CÂU HỎI – BÀI TẬP 67 BÀI 09: XÁC ĐỊNH BAO ĐÓNG 70 1. Bao Đóng Của Tập Phụ Thuộc Hàm F 70 2. Bao đóng của tập thuộc tính. 70 CÂU HỎI – BÀI TẬP 72 BÀI 10: XÁC ĐỊNH KHÓA CỦA LƯỢC ĐỒ CƠ SỞ DỮ LIỆU 73 1. Định nghĩa khoá của quan hệ (relation key) 73 2. Thuật toán tìm một khóa 73 3. Thuật toán tìm tất cả các khóa. 74 CÂU HỎI - BÀI TẬP 76 BÀI 11: XÁC ĐỊNH PHỦ TỐI THIỂU 77 1. Tập phụ thuộc hàm tương đương 77 2. Phủ tối thiểu ( Tập phụ thuộc hàm tối thiểu) 78 CÂU HỎI - BÀI TẬP 79 BÀI 12: XÁC ĐỊNH DẠNG CHUẨN CỦA LƯỢC ĐỒ CSDL 80 1. Một số khái niệm liên quan đến dạng chuẩn 80 2. Dạng chuẩn 1. 81 3. Dạng chuẩn 2 (2NF) 81 4. Dạng Chuẩn 3 (third normal form) 83 5. Dạng Chuẩn BC (Boyce Codd normal form- BC NF) 84 CÂU HỎI - BÀI TẬP 85 5
  6. GIÁO TRÌNH MÔ ĐUN Tên mô đun: Cơ sở dữ liệu Mã mô đun: MĐ11 Vị trí, tính chất, ý nghĩa và vai trò của mô đun: Vị trí: - Đây là môn học cơ sở và là môn bắt buộc của trình độ cao đẳng nghề công nghệ thông tin được bố trí sau khi sinh viên học xong các môn chung, anh văn, tin học cơ sở, lập trình cơ bản, Hệ quản trị cơ sở dữ liệu Access. Tính chất: - Là môn học nền tảng về thiết kế và lưu trữ dữ liệu, kiến thức cơ bản để học được các môn hệ quản trị cơ sở dữ liệu sau này: MS SQL, Oracle, My SQL Mục tiêu của mô đun: - Trình bày được các khái niệm về: Cơ sở dữ liệu, Các mô hình dữ liệu, các ngôn ngữ định nghĩa và xử lý dữ liệu. - Trình bày được khái niệm về quan hệ, thuộc tính, các loại khóa, lược đồ quan hệ, bộ giá trị và phụ thuộc hàm, ràng buộc toàn vẹn của mô hình cơ sở dữ liệu quan hệ. - Trình bày được khái niệm phép hội, giao, trừ, tích dề các, chia trong đại số tập hợp. - Trình bày được khái niệm phép chiếu, chọn, kết trong đại số quan hệ. - Trình bày được khái niệm bao đóng và thuật toán tìm bao đóng của tập thuộc tính. - Trình bày được hệ tiên đề Amstrong đối với các phụ thuộc hàm. - Trình bày được khái niệm khóa và các thuật toán tìm khóa của lược đồ CSDL. - Trình bày được khái niệm tập phụ thuộc hàm tương đương và phủ tối thiểu. - Trình bày được thuật toán tìm phủ tối thiểu. - Trình bày được khái niệm các dạng chuẩn 1,2,3,BC. - Trình bày được phương pháp chuẩn hóa CSDL về dạng chuẩn 3. - Trình bày được phương pháp tối ưu hóa câu hỏi bằng đại số quan hệ. - Thực hiện được các phép toán hội, giao,trừ, tích đề các, chia trên đại số tập hợp. - Thực hiện được các phép chiếu, chọn, kết trên đại số quan hệ. - Phân biệt được các loại ràng buộc toàn vẹn. - Xác định được các ràng buộc toàn vẹn trong 1 CSDL. 6
  7. - Xác định được các phụ thuộc hàm trong CSDL. - Xác định được bao đóng của các tập thuộc tính trong 1 CSDL. - Tìm được khóa của lược đồ CSDL bằng thuật toán tìm 1 khóa và thuật toán tìm tất cả các khóa. - Tìm được phủ tối thiệu của lược đồ quan hệ bằng thuật toán tìm phủ tối thiểu. - Xác định được dạng chuẩn của các lược đồ CSDL. - Chuẩn hóa được lược đồ CSDL về dạng chuẩn 3. - Tối ưu hóa được câu hỏi bằng đại số quan hệ. Nội dung của mô đun: 7
  8. BÀI MỞ ĐẦU: GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU Mã bài: 11.00 Giới thiệu: Cơ sở dữ liệu là gì và tại sao cần phải có Cơ sở dữ liệu? Cơ sở dữ liệu (CSDL) là một hệ thống các thông tin có cấu trúc, các dữ liệu có liên quan với nhau được lưu trữ trên các thiết bị lưu trữ nhằm thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với mục đích khác nhau. Một cơ sở dữ liệu biểu thị một khía cạnh nào đó của thế giới thực như hoạt động của một công ty, một nhà trường, một ngân hàng Vì vậy Cơ sở dữ liệu rất cần thiết trong cuộc sống hiện nay. Cơ sở dữ liệu và kỹ thuật cơ sở dữ liệu đã có ảnh hưởng rất lớn đến việc sử dụng máy tính. Có thể nói rằng cơ sở dữ liệu đóng vai trò quan trọng trong mọi lĩnh vực có sử dụng máy tính như giáo dục, thương mại, kỹ nghệ, khoa học, thư viện, . Thuật ngữ cơ sở dữ liệu trở thành một thuật ngữ phổ dụng. Bài này sẽ 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; Mục tiêu: - Phân biệt được hệ cơ sở dữ liệu với hệ thống tập tin cổ điển. - Phân biệt được các mô hình dữ liệu mạng, phân cấp, quan hệ, thực thể liên kết và mô hình hướng đối tượng. - Nghiêm túc, tự giác trong học tập Nội dung chính: 1. Một số khái niệm 1.1. Cơ sở dữ liệu 1.1.1. Dẫn nhập Lưu trữ thông tin là nhu cầu rất thông dụng trong cuộc sống của con người. Từ thời xa xưa con người đã biết sử dụng những vật dụng có sẵn để lưu trữ thông tin như in hình lên đá, in lên các gốc cây, thanh gỗ. Nhưng hiện nay thì việc lưu trữ đó đã trở nên quá lỗi thời. Thay vào đó công nghệ thông tin phát triển, mọi người đều có khả năng mua máy tính và lưu trữ thông tin trên máy tính. Lưu trữ dữ liệu dưới dạng hệ thống tập tin 8
  9. Hình 1. Hệ thống tập tin dữ liệu Microsoft Office Khi sử dụng máy tính thông thường ta sẽ lưu trữ thông tin dưới dạng file, và mỗi file ta sẽ đặt nó trong những folder có tên khác nhau nhằm mục đích dễ dàng tìm đến. Với cách này ta sẽ có những ưu điểm và nhược điểm như sau: * Ưu điểm: - Với việc lưu trữ này thì rõ ràng khi ta cần là lưu ngay nên tốc độ triển khai sẽ nhanh - Rõ ràng và trực quan với người không có chuyên môn công nghệ thông tin * Khuyết điểm: - Dữ liệu không nhất quán, đôi khi có trường hợp nhiều người sử dụng một file và sẽ xảy ra hiện tượng lưu đè. - Trùng lặp dữ liệu nhiều. - Tính chia sẻ dữ liệu không cao (kém) Hiện nay các cá nhân sử dụng máy tính đa số sử dụng cách lưu trữ này để lưu trữ thông tin cho riêng mình, nên nói về sự phổ biến thì cách này phổ biến nhất, tuy nhiên với những hệ thống dữ liệu lớn thì sẽ có rất nhiều hạn chế như việc truy xuất tìm kiếm dữ liệu sẽ chậm, khó bảo quản, Với những hạn chế trên thì khái niệm cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu được ra đời. 1.1.2. Khái niệm Cơ sở dữ liệu Cơ sở dữ liệu (CSDL) là một hệ thống các thông tin có cấu trúc, các dữ liệu có liên quan với nhau được lưu trữ trên các thiết bị lưu trữ nhằm thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với mục đích khác nhau Ví dụ: Để quản lý việc học tập trong một trường học, các dữ liệu là các thông tin về sinh viên, về các môn học, điểm thi .Chúng ta tổ chức các dữ liệu đó thành các bảng và lưu giữ chúng vào sổ sách hoặc sử dụng một phần mềm máy tính để lưu giữ chúng trên máy tính. Ta có một tập các dữ liệu có liên quan đến nhau và mang nhiều ý nghĩa, đó là một cơ sở dữ liệu. 1.1.3. Tính chất - Một cơ sở dữ liệu biểu thị một khía cạnh nào đó của thế giới thực như hoạt động của một công ty, một nhà trường, một ngân hàng Những thay đổi của thế giới 9
  10. thực phải được phản ánh một cách trung thực vào trong cơ sở dữ liệu. Những thông tin được đưa vào trong cơ sở dữ liệu tạo thành một không gian cơ sở dữ liệu hoặc là một “thế giới nhỏ” (miniworld) . - Một cơ sở dữ liệu là một tập hợp dữ liệu liên kết với nhau một cách logic và mang một ý nghĩa cố hữu nào đó. Một cơ sở dữ liệu không phải là một tập hợp tuỳ tiện. - Một cơ sở dữ liệu được thiết kế và được phổ biến cho một mục đích riêng. Nó có một nhóm người sử dụng có chủ định và có một số ứng dụng được xác định phù hợp với mối quan tâm của người sử dụng. Nói cách khác, một cơ sở dữ liệu có một nguồn cung cấp dữ liệu, một mức độ tương tác với các sự kiện trong thế giới thực và một nhóm người quan tâm tích cực đến các nội dung của nó. - Một cơ sở dữ liệu có thể có cỡ tuỳ ý và có độ phức tạp thay đổi. Có những cơ sở dữ liệu chỉ gồm vài trăm bản ghi (như cơ sở dữ liệu phục vụ việc quản lý lương ở một cơ quan nhỏ), và có những cơ sở dữ liệu có dung lượng rất lớn (như các cơ sở dữ liệu phục vụ cho việc tính cước điện thoại, quản lý nhân sự trên một phạm vi lớn). Các cơ sở dữ liệu phải được tổ chức quản lý sao cho những người sử dụng có thể tìm kiếm dữ liệu, cập nhật dữ liệu và lấy dữ liệu ra khi cần thiết. Một cơ sở dữ liệu có thể được tạo ra và duy trì một cách thủ công và cũng có thể được tin học hoá. 1.1.4. Ưu điểm của cơ sở dữ liệu -Giảm sự trùng lắp thông tin xuống mức thấp nhất và do đó bảo đảm được tính nhất quán và toàn vẹn dữ liệu. -Đảm bảo dữ liệu có thể truy xuất theo nhiều cách khác nhau. -Khả năng chia sẻ thông tin cho nhiều người sử dụng. 1.1.5. Những vấn đề Cơ sở dữ liệu cần giải quyết - Tính chủ quyền dữ liệu: được thể hiện ở phương diện an toàn dữ liệu, khả năng biểu diễn các mối liên hệ ngữ nghĩa của dữ liệu và tính chính xác của dữ liệu. Điều này có nghĩa là người khai thác CSDL phải có nhiệm vụ cập nhật các thông tin mới nhất của CSDL. - Tính bảo mật và quyền khai thác thông tin của người sử dụng: Do có nhiều người được phép khai thác dữ liệu một cách đồng thời, nên cần thiết phải có một cơ chế bảo mật và phân quyền hạn khai thác CSDL. Các hệ điều hành nhiều người sử dụng hay hệ điều hành mạng cục bộ đều có cung cấp cơ chế này - Tranh chấp dữ liệu: Nhiều người được phép truy nhập cùng một lúc vào tài nguyên dữ liệu của CSDL với những mục đích khác nhau, do đó cần thiết phải có một cơ chế ưu tiên khi truy nhập dữ liệu. Cơ chế ưu tiên có thể được thực hiện bằng việc cấp quyền ưu tiên cho từng người khai thác. - Đảm bảo dữ liệu khi có sự cố: Việc quản lý dữ liệu tập trung có thể làm tăng khả năng mất mát hoặc sai lệch thông tin khi có sự cố như mất điện đột xuất, hay một phần đĩa lưu trữ CSDL bị hư, một số hệ điều hành mạng có cung cấp dịch vụ 10
  11. sao lưu ảnh đĩa cứng, tự động kiểm tra và khắc phục lỗi khi có sự cố. Tuy nhiên, bên cạnh dịch vụ của hệ điều hành, để đảm bảo CSDL luôn ổn định, một CSDL nhất thiết phải có một cơ chế khôi phục dữ liệu khi có các sự cố bất ngờ xảy ra. 1.1.6. Đối tượng sử dụng Cơ sở dữ liệu * Người quản trị CSDL: thực hiện các công việc quản lý và bảo trì CSDL như sau: - Sự chính xác và toàn vẹn dữ liệu, và bảo mật dữ liệu. - Thực hiện các công việc sao lưu và phục hồi dữ liệu. - Giữ liên lạc thường xuyên với người lập trình, người dùng, người phát triển ứng dụng để kịp thời cập nhật CSDL. - Bảo đảm sự hoạt động của CSDL và HQTCSDL. * Người phát triển và lập trình ứng dụng là những người rành về máy tính có trách nhiệm thiết kế và tạo các chương trình ứng dụng dành cho người dùng cuối cùng. * Người dùng cuối: là những người có thể không rành về máy tính nhưng nắm rõ về các nghiệp vụ mà ứng dụng triển khai. 1.2. Hệ quản trị cơ sở dữ liệu Một hệ quản trị cơ sở dữ liệu (HQTCSDL) là: - Một tập các phần mềm quản lý cơ sở dữ liệu và cung cấp các dịch vụ xử lý cơ sở dữ liệu cho các những người phát triển ứng dụng và người dùng cuối. - HQTCSDL cung cấp một giao diện giữa người sử dụng và dữ liệu. - HQTCSDL biến đổi cơ sở dữ liệu vật lý thành cơ sở dữ liệu logic. Hiện nay trên thị trường phần mềm đã có những hệ quản trị cơ sở dữ liệu hỗ trợ được nhiều tiện ích như: MS Access, SQL Server, Oracle, Mỗi hệ quản trị cơ sở dữ liệu đều được cài đặt dựa trên một mô hình dữ liệu cụ thể. Dù là dựa trên mô hình dữ liệu nào, một hệ quản trị cơ sở dữ liệu cũng phải hội đủ các yếu tố sau: Yếu tố 1: Ngôn ngữ giao tiếp giữa người sử dụng và CSDL, bao gồm : - Ngôn ngữ mô tả dữ liệu (DDL – Data Definition Language): Để cho phép khai báo cấu trúc của cơ sở dữ liệu, khai báo các mối liên hệ của dữ liệu và các quy tắc quản lý áp đặt lên các dữ liệu đó. - Ngôn ngữ thao tác dữ liệu (DML – Data Manupulation Language): Cho phép người sử dụng có thể cập nhật dữ liệu (thêm/sửa/xoá) - Ngôn ngữ truy vấn dữ liệu ( Structure Querry Language): Cho phép người khai thác sử dụng để truy vấn các thông tin cần thiết trong cơ sở dữ liệu. 11
  12. - Ngôn ngữ quản lý dữ liệu (DCL – Data Control Language): Cho phép những người quản trị hệ thống thay đổi cấu trúc của các bảng dữ liệu, khai báo bảo mật thông tin và cấp quyền hạn khai thác cơ sở dữ liệu cho người sử dụng., Yếu tố 2: Từ điển dữ liệu: Dùng để mô tả các ánh xạ liên kết, ghi nhận các thành phần cấu trúc của cơ sở dữ liệu, các chương trình ứng dụng, mật mã, quyền hạn sử dụng, Yếu tố 3: Cơ chế giải quyết vấn đề tranh chấp dữ liệu: Mỗi hệ quản trị cơ sở dữ liệu cũng có thể cài đặt một cơ chế riêng để giải quyết các vấn đề này. Một số biện pháp sau đây thường được sử dụng: thứ nhất: cấp quyền ưu tiên cho từng người sử dụng; thứ hai: Đánh dấu yêu cầu truy xuất dữ liệu, phân chia thời gian, người nào có yêu cầu trước thì có quyền truy xuất dữ liệu trước, Yếu tố 4: Hệ quản trị cơ sở dữ liệu cũng phải có cơ chế sao lưu (backup) và phục hồi (restore) dữ liệu khi có sự cố xảy ra. Điều này có thể thực hiện sau một thời gian nhất định hệ quản trị cơ sở dữ liệu sẽ tự động tạo ra một bản sao cơ sở dữ liệu, cách này hơi tốn kém, nhất là đối với cơ sở dữ liệu lớn. Yếu tố 5: Hệ quản trị CSDL phải cung cấp một giao diện thân thiện, dễ sử dụng. Yếu tố 6: Tính độc lập giữa dữ liệu và chương trình: Khi có sự thay đổi dữ liệu (như sửa đổi cấu trúc lưu trữ các bảng dữ liệu, thêm các chỉ mục (Index) ) thì các chương trình ứng dụng (Application) đang chạy trên Cơ sở dữ liệu đó vẫn không cần phải được viết lại, hay cũng không làm ảnh hưởng đến những người sử dụng khác. * Các mức biểu diễn một cơ sở dữ liệu: - Mức trong: (mức vật lý – Physical) là mức lưu trữ cơ sở dữ liệu. Thể hiện vấn để cần giải quyết, dữ liệu gì, lưu trữ như thế nào, ở đâu, cần các chỉ mục gì, Truy xuất tuần tự hay ngẫu nhiên. Mức này dành cho người quản trị và người sử dụng chuyên môn. - Mức quan niệm: (Conception hay Logical) cần phải lưu trữ bao nhiêu loại dữ liệu, là dữ liệu gì, mối quan hệ - Mức ngoài: của người sử dụng và các chương trình ứng dụng. 2. Các mô hình dữ liệu Mô hình dữ liệu là sự trừu tượng hoá môi trường thực. Mỗi loại mô hình dữ liệu đặc trưng cho một cách tiếp cận dữ liệu khác nhau của những nhà phân tích thiết kế cơ sở dữ liệu. Mỗi loại mô hình dữ liệu đều có những ưu điểm và những mặt hạn chế của nó, nhưng vẫn có những mô hình dữ liệu nổi trội và được nhiều người quan tâm nghiên cứu. 12
  13. 2.1. Mô hình dữ liệu mạng Mô hình dữ liệu mạng (Network Data Model) - còn được gọi tắt là mô hình mạng hoặc mô hình lưới (Network Model) là mô hình được biểu diễn bởi một đồ thị có hướng. Trong mô hình này người ta đưa vào các khái niệm: mẫu tin hay bản ghi (Record), loại mẫu tin (Record Type) và loại liên hệ (Set Type). * Mẫu tin: mô tả 1 đối tượng trong thế giới thực. Ví dụ: (‘NV001’,’Nguyen Lam’,’Nam’,’10/10/1970’,’Dong Nai’) * Loại mẫu tin: Là 1 tập các mẫu tin có cùng tính chất. Ví dụ: Tập hợp các mẫu tin về nhân viên trong công ty tạo thành NHANVIEN Ký hiệu: * Loại liên hệ: Mô tả sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên - Ví dụ: Nhân viên (tham gia) công việc - Ký hiệu: Hình elip bên trong được ghi tên * Bản số: chỉ ra số lượng các mẫu tin tham gia trong mối liên hệ - (1:1) (one-to-one): mỗi mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên. - (1:n) (one-to-many): mỗi mẫu tin của loại mẫu tin chủ kết hợp với 1 hay nhiều mẫu tin thành viên. - (n:1) (many-to-one): nhiều mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên. - Recursive: một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó. Loại liên hệ này là Đệ quy - Ví dụ: Hình 2: Mô hình dữ liệu mạng Đặc điểm mô hình dữ liệu mạng: 13
  14. - Tương đối đơn giản - Dễ sử dụng - Không thích hợp biểu diễn CSDL có quy mô lớn - Khả năng diễn đạt ngữ nghĩa kém 2.2. Mô hình phân cấp Mô hình dữ liệu phân cấp (Hierachical Data Model) - được gọi tắt là mô hình phân cấp (Hierachical Model): Mô hình là một cây (Tree), trong đó mỗi nút của cây biểu diễn một thực thể, giữa nút con và nút cha được liên hệ với nhau theo một mối quan hệ xác định. * Loại mẫu tin: (Recorde Type) là mẫu đặc trưng cho 1 loại đối tượng riêng biệt. Chẳng hạn như trong việc quản lý nhân sự tại một đơn vị, đối tượng cần phản ảnh của thế giới thực có thể là Phòng, Nhân viên, Công việc, lý lịch do đó có các loại mẫu tin đặc trưng cho từng đối tượng này. Trong đồ thị biểu diễn mô hình mạng mỗi loại mẫu tin được biểu diễn bởi một hình chữ nhật, một thể hiện (Instance) của một loại mẫu tin được gọi là bản ghi. Trong ví dụ trên loại mẫu tin Phòng có các mẫu tin là các phòng, ban trong đơn vị; loại mẫu tin nhân viên có các mẫu tin là các nhân viên đang làm việc tại các phòng ban của cơ quan * Loại mối liên hệ: Kiểu liên hệ là phân cấp, theo cách: - Mẫu tin thành viên chỉ đóng vai trò thành viên của một mối liên hệ duy nhất, tức là nó thuộc một chủ duy nhất. Như vậy, mối liên hệ từ mẫu tin chủ tới các mẫu tin thành viên là 1¸n, và từ mẫu tin (hay bản ghi - record) thành viên với mẫu tin chủ là 1¸1. - Giữa 2 loại mẫu tin chỉ tồn tại 1 mối liên hệ duy nhất. * Ví dụ Dưới đây là một ví dụ về mô hình phân cấp quản lý nhân sự của một công ty Hình.3: Mô hình phân cấp quản lý nhân sự 14
  15. 2.3. Mô hình quan hệ Mô hình này đượcc E.F Codd đưa vào đầu những năm 70, mô hình này dựa trên lý thuyết tập hợp và đại số quan hệ. Vì tính chất chặt chẽ của toán học về lí thuyết tập hợp nên mô hình này đã mô tả dữ liệu một cách rõ ràng, mềm dẻo và là mô hình thông dụng nhất hiện nay. Hầu hết các hệ QT cơ sở dữ liệu đều tổ chức dữ liệu theo mô hình dữ liệu quan hệ. Trong đó dữ liệu được tổ chức dưới dạng bảng các phép toán thao tác trên dữ liệu dựa trên lý thuyết tập hợp của toán học. Tập dữ liệu được tổ chức theo cấu trúc của mô hình dữ liệu quan hệ gọi là cơ sở dữ liệu quan hệ. Dữ liệu bảng được thể hiện như sau: Hình 4: Thể hiện dữ liệu trong bảng Ví dụ: Mô hình cơ sở dữ liệu quan hệ SINHVIEN (MASV, HOTENSV, NU, NGAYSINH, NOISINH, TINH, MALOP) LOP (MALOP,TENLOP, MAKHOA) 2.4. Mô hình thực thể mối kết hợp (Entity Relationship Diagram ERD) Mối liên hệ giữa các tập thực thể là một danh sách có thứ tự của các tập thực thể. Một tập thực thể đặc biệt có thể xuất hiện nhiều lần trong danh sách. Danh sách các tập thực thể này là khái niệm ở mức lược đồ của một mối liên hệ. Mô hình thực thể quan hệ được CHEN giới thiệu năm 1976 và được ANSI công nhận mô hình chuẩn năm 1988. Mô hình này được sử dụng nhiều trong thiết kế dữ liệu mức khái niệm, dùng để mô hình hoá dữ liệu Các khái niệm trong ERD gồm: Loại thực thể, thực thể, thuộc tính, mối kết hợp, vai trò, bản số a. Loại thực thể (Entity Type) là những loại đối tượng, sự vật của thế giới thực tồn tại cụ thể cần được quản lý. Bắt buộc phải được đặt tên bằng Danh từ hoặc cụm danh từ. Được biểu diễn bằng hình chữ nhật hoặc hình chữ nhật được bo góc. b. Thực thể (Entity) là một thể hiện của loại thực thể. Ví dụ: Trong loại thực thể HOCSINH có thực thể: - (HS001, ‘Nguyễn Văn A’, ’20/11/1993’, ‘Nam’). - (HS002, ‘Trần Thị C’, ’02/10/1992’, ‘Nữ’). 15
  16. * Lưu ý: Khái niệm Loại thực thể được sử dụng nhiều hơn hẳn khái niệm Thực thể trong mô hình này. Vì vậy, một số tài liệu sử dụng tên Thực thể thay cho Loại thực thể để rút gọn. c. Loại kết hợp (Mối quan hệ): là mối kết hợp, sự liên kết giữa hai hay nhiều loại thực thể. Được biểu diễn bằng hình thoi. Tên mối quan hệ là Động từ hoặc Cụm động từ Ví dụ: Hình 5: Minh hoạ mối kết hợp giữa thực thể Khachhang và nuocgiaikhat Khách hàng và nước giải khát là Loại thực thể (Thực thể) Đặt: Là mối quan hệ giữa 2 thực thể này Có các loại mối quan hệ như sau: MQH đa phân, MDQ phản thân Phản thân Đa phân Hình 6: Minh hoạ mối kết hợp đa phân và phản thân d. Bản số của nhánh là số lượng tối thiểu và số lượng tối đa mà thực thể tham gia vào mối kết hợp. Ký hiệu (min,max) – (1,n). Hình 7: Minh hoạ mối kết hợp có bản số e. Thuộc tính: là những tính chất đặc trưng của một loại thực thể/mối kết hợp. Ký hiệu: Ví dụ: Hình 8: Minh hoạ thuộc tính của thực thể - Thuộc tính nhận diện: là thuộc tính để phân biệt thực thể này với thực thể kia trong tập thực thể. - Thuộc tính mô tả: là thuộc tính cung cấp thông tin chi tiết hơn về thực thể trong tập thực thể. - Đơn trị (Simple): mỗi thực thể chỉ có một giá trị ứng với thuộc tính. Ví dụ: MAHV, HOTEN 16
  17. - Đa trị (Multi Value): thuộc tính có thể có nhiều giá trị đối với một thực thể. Với những thuộc tính này cần sử dụng bản số Ví dụ: Hình 9: Minh hoạ thuộc tính đa trị Học vị là thuộc tính đa trị, một người có thể có nhiều học vị như tiến sĩ, giáo sư, thạc sĩ, - Đa hợp (Composite): thuộc tính được tạo từ nhiều thành phần. Ví dụ: DIACHI (Sonha, tenduong, phuong, quan) Chú ý: các thuộc tính đa trị và đa hợp có thể lồng nhau tùy ý. Ví dụ: {BANGCAP(TRUONGCAP, KETQUA, CHUYENNGANH)} - Thuộc tính kết hợp: Là nhóm thuộc tính có liên hệ Hình 10: Minh hoạ thuộc tính kết hợp f. Khóa: Khóa của loại thực thể là thuộc tính để nhận dạng thực thể.Căn cứ vào đó để xác định duy nhất một thực thể. Ví dụ: Mỗi HOCSINH có một mã duy nhất để phân biệt học sinh này với học sinh kia. Việc thành lập mô hình thực thể kết hợp cho một ứng dụng tin học có thể tiến hành theo các bước sau: Bước 1.Xác định danh sách các loại thực thể Bước 2.Xác định các mối kết hợp giữa các loại thực thể để phác thảo mô hình. Bước 3.Lập bản số của các mối kết hợp. Ví dụ: Bài toán quản lý điểm của sinh viên được phát biểu sơ bộ như sau: Mỗi sinh viên cần quản lý các thông tin như: họ và tên (HOTENSV),ngày tháng 17
  18. năm sinh (NGAYSINH), giới tính (NU), nơi sinh(NƠISINH), hộ khẩu thường trú (TINH). Mỗi sinh viên được cấp một mã số sinh viên duy nhất (MASV) để phân biệt với mọi sinh viên khác của trường, mỗi sinh viên chỉ thuộc về một lớp nào đó. Mỗi lớp học có một mã số lớp (MALOP) duy nhất để phân biệt với tất cả các lớp học khác trong trường: có một tên gọi (TENLOP) của lớp, mỗi lớp chỉ thuộc về một khoa. Mỗi khoa có một tên gọi (TENKHOA) và một mã số duy nhất (MAKHOA) để phân biệt với các khoa khác. Mỗi môn học có một tên gọi (TENMH) cụ thể, được học trong một số đơn vị học trình (DONVIHT) ) và ứng với môn học là một mã số duy nhất (MAMH) để phân biệt với các môn học khác. Mỗi giảng viên cần quản lý các thông tin: họ và tên (HOTENGV), cấp học vị (HOCVI), thuộc một chuyên ngành (CHUYENNGANH) và được gán cho một mã số duy nhất gọi là mã giảng viên(MAGV) để phân biệt với các giảng viên khác. Mỗi giảng viên có thể dạy nhiều môn ở nhiều khoa, nhưng chỉ thuộc về sự quản lý hành chính của một khoa. Mỗi sinh viên với một môn học được phép thi tối đa 3 lần, mỗi lần thi (LANTHI), điểm thi (DIEMTHI). Mỗi môn học ở mỗi lớp học chỉ phân công cho một giảng viên dạy (tất nhiên là một giảng viên thì có thể dạy nhiều môn ở một lớp). Lập mô hình thực thể kết hợp cho bài toán trên. Bài hướng dẫn giải 2.5. Cách chuyển đổi từ mô hình thực thể kết hợp sang mô hình quan hệ Mỗi thực thể chuyển thành một quan hệ cùng tên và danh sách thuộc tính. Thuộc tính khoá trở thành khoá chính của quan hệ 18
  19. Hình 11: Minh hoạ chuyển đổi tập thực thể. - Mối kết hợp 1 – 1 Thuộc tính khoá bên này làm khoá ngoại bên kia hoặc ngược lại. Bên dưới là ví dụ chuyển mối kết hợp 1 – 1 Hình 12: Minh hoạ mối quan hệ 1 – 1 - Mối kết hợp 1 – n Hình 13: Minh hoạ mối quan hệ 1 – n 19
  20. - Mối kết hợp n – n Chuyển thành quan hệ mới có khoá chính gồm 2 thuộc tính khoá của 2 quan hệ; thuộc tính mối kết hợp (nếu có) trở thành thuộc tính của quan hệ mới. Ví dụ Hình 14: Minh hoạ mối quan hệ n – n - Mối kết hợp 3 ngôi (Ba thực thể tham gia vào mối kết hợp) Chuyển thành quan hệ mới, có khoá chính gồm 3 thuộc tính khoá của 3 thực thể tham gia mối kết hợp. Thuộc tính mối kết hợp (nếu có) trở thành thuộc tính của quan hệ mới. Ví dụ Hình 15: Minh hoạ mối quan hệ 3 ngôi - Thuộc tính đa trị (Thuộc tính có nhiều giá trị cho một thể hiện) - Chuyển thành quan hệ mới có khoá chính gồm thuộc tính đa trị và thuộc tính khoá của thực thể. Sau khi chuyển thành quan hệ mới, thuộc tính đa trị sẽ biến mất khỏi thực thể cũ. Ví dụ 20
  21. Hình 16: Minh hoạ thuộc tính đa trị 2.6. Mô hình hướng đối tượng Mô hình dữ liệu hướng đối tượng (Object Oriented Data Model) ra đời từ cuối những năm 80 và đầu những năm 90. Đây là loại mô hình tiên tiến nhất hiện nay dựa trên cách tiếp cận hướng đối tượng đã quen thuộc trong các phương pháp lập trình hướng đối tượng, nó sử dụng các khái niệm như lớp (class), sự kế thừa (inheritance), kế thừa bội (tức là kết thừa từ nhiều lớp cơ sở multi-inheritance). Đặc trưng cơ bản của cách tiếp cận này là tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính tái sử dụng (Reusability). Lớp (class) là một kiểu dữ liệu có cấu trúc bao gồm các thành phần dữ liệu và các phương thức xử lý thao tác trên cấu trúc dữ liệu đó. Nó là một kiểu (hay cấu trúc) dữ liệu được trừu tượng hóa, bởi vì các tác động (còn gọi là các phương thức - method) là để phục vụ hoặc thao tác trên kiểu dữ liệu này. Dữ liệu và phương thức hòa quyện vào nhau thành một thể thống nhất: dữ liệu cần có những cách thức xử lý thỏa đáng, và phương thức xử lý được đưa vào trong kiểu dữ liệu đó là để phục vụ cho các đối tượng có cấu trúc như thế. Người ta gọi sự thống nhất đó là sự đóng gói. Phương pháp tiếp cận hướng đối tượng trong mô hình dữ liệu mặc dù còn mới mẻ nhưng hiện nay đang được nhiều người quan tâm nghiên cứu phát triển và áp dụng. Các hệ quản trị cơ sở dữ liệu hướng đối tượng hiện nay vẫn chưa nhiều, một số còn chưa thuần nhất (nghĩa là việc lập trình là hướng đối tượng nhưng cơ sở dữ liệu vẫn chủ yếu dựa trên mô hình quan hệ). CÂU HỎI - BÀI TẬP: Câu hỏi: 1.1. Định nghĩa các thuật ngữ : cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ liệu, từ điển cơ sở dữ liệu, mô hình cơ sở dữ liệu. 1.2. Nêu các tính chất của một cơ sở dữ liệu 1.3. Nêu các chức năng của một hệ quản trị cơ sở dữ liệu 1.4. Nêu các mô hình dữ liệu. 1.5. Liệt kê những người có liên quan đến hệ cơ sở dữ liệu 21
  22. 1.6. Xây dựng mô hình ER cho cơ sở dữ liệu: 1.7. Nêu quy tắc chuyển từ mô hình ER sang mô hình quan hệ. Bài tập: Bài số 1: QUẢN LÝ HỌC VIÊN Ở MỘT TRUNG TÂM TIN HỌC Trung tâm tin học KTCT thường xuyên mở các lớp tin học ngắn hạn và dài hạn. Mỗi lớp ngắn hạn có một hoặc nhiều môn học (chẳng hạn như lớp Tin học văn phòng thì có các môn : Word, Power Point, Excel, còn lớp lập trình Pascal thì chỉ học một môn Pascal). Các lớp dài hạn (chẳng hạn như lớp kỹ thuật viên đồ hoạ đa truyền thông, lớp kỹ thuật viên lập trình, lớp kỹ thuật viên phần cứng và mạng, ) thì có thể học nhiều học phần và mỗi học phần có thể có nhiều môn học. Mỗi học viên có một mã học viên(MAHV) duy nhất và chỉ thuộc về một lớp duy nhất (nếu học viên cùng lúc học nhiều lớp thì ứng với mỗi lớp, học viên đó có một MAHV khác nhau). Mỗi học viên xác định họ tên (HOTEN), ngày sinh (NGAYSINH),nơi sinh (NOISINH), phái nam hay nữ (PHAI), nghề nghiệp (NGHENGHIEP) - nghề nghiệp là SINH VIÊN, GIÁO VIÊN, KỸ SƯ Trung tâm KTCT có nhiều lớp, mỗi lớp có một mã lớp duy nhất (MALOP), mỗi lớp xác định các thông tin: tên lớp (TENLOP), thời khoá biểu, ngày khai giảng (NGAYKG), học phí (HOCPHI).Chú ý rằng tại một thời điểm, trung tâm có thể mở nhiều lớp cho cùng một chương trình học. Với các lớp dài hạn thì ngày khai giảng được xem là ngày bắt đầu của mỗi học phần và HỌC PHÍ là học phí của mỗi học phần, với lớp ngắn hạn thì HỌC PHÍ là học phí của toàn khoá học đó. Trung tâm có nhiều môn học, mỗi môn học có mã môn học (MAMH) duy nhất, mỗi môn học xác định tên môn học(TENMH), số tiết lý thuyết (SOTIETLT), số tiết thực hành (SOTIETTH). Mỗi học viên ứng với mỗi môn học có một điểm thi(DIEMTHI) duy nhất. Mỗi lần đóng học phí, học viên sẽ được trung tâm giao cho một phiếu biên lai thu tiền, mỗi biên lai có một số biên lai duy nhất để quản lý. Bài số 2: QUẢN LÝ VIỆC MƯỢN/TRẢ SÁCH Ở MỘT THƯ VIỆN Một thư viện tổ chức việc cho mượn sách như sau: Mỗi quyển sách được đánh một mã sách (MASH) dùng để phân biệt với các quyển sách khác (giả sử nếu một tác phẩm có nhiều bản giống nhau hoặc có nhiều tập thì cũng xem là có mã sách khác nhau), mỗi mã sách xác định các thông tin khác như : tên sách (TENSACH), tên tác giả (TACGIA), nhà xuất bản (NHAXB), năm xuất bản (NAMXB). Mỗi độc giả được thư viện cấp cho một thẻ thư viện, trong đó có ghi rõ mã độc giả (MAĐG), cùng với các thông tin khác như : họ tên (HOTEN), ngày sinh (NGAYSINH), địa chỉ (ĐIACHI), nghề nghiệp(NGHENGHIEP). Cứ mỗi lượt mượn sách, độc giả phải đăng ký các quyển sách cần mượn vào một phiếu mượn, mỗi phiếu mượn có một số phiếu mượn (SOPM) khác nhau, mỗi phiếu mượn xác định các thông tin như: ngày mượn sách (NGAYMUON), mã 22
  23. độc giả. Các các quyển sách trong cùng một phiếu mượn không nhất thiết phải trả trong một lần. Mỗi quyển sách có thể thuộc nhiều phiếu mượn khác nhau (tất nhiên là tại các thời điểm khác nhau). Bài số 3: QUẢN LÝ TỔ CHỨC THI TỐT NGHIỆP Việc tổ chức kỳ thi tốt nghiệp của một khoa như sau: Mỗi thí sinh có một Mã số sinh viên duy nhất (MASV), mỗi MASV xác định được các thông tin: họ và tên (HOTEN), ngày sinh (NGAYSINH), nơi sinh, nữ,phái, dân tộc. Mỗi lớp có một mã lớp (MALOP) duy nhất , mỗi mã lớp xác định các thông tin: tên lớp (TENLOP), mỗi lớp chỉ thuộc sự quản lý của một khoa nào đó. Mỗi khoa có một mã khoa duy nhất (MAKHOA), mỗi mã khoa xác định tên khoa (TENKHOA). Mỗi thí sinh đều phải dự thi tốt nghiệp ba môn. Mỗi môn thi có một mã môn thi (MAMT) duy nhất, mỗi mã môn thi xác định các thông tin: tên môn thi (TENMT), thời gian làm bài – được tính bằng phút (PHUT), ngày thi (NGAYTHI), buổi thi (BUOITHI), môn thi này là môn lý thuyết hay thực hành (LYTHUYET). Chú ý rằng, nếu một môn học được cho thi ở nhiều hệ thì được đặt MAMT khác nhau (chẳng hạn cả trung cấp và cao đẳng ngành công nghệ thông tin đều thi môn Cơ Sở Dữ Liệu), để diễn tả điều này, mỗi mã môn học cần phải được ghi chú (GHICHU) để cho biết môn thi đó dành cho khối nào trung cấp, hay cao đẳng). Mỗi thí sinh ứng với một môn thi có một điểm thi (DIEMTHI) duy nhất. Trong một phòng thi có thể có thí sinh của nhiều lớp. Trong một kỳ thi, mỗi thí sinh có thể thi tại những phòng thi (PHONGTHI) khác nhau, chẳng hạn một thí sinh thi tốt nghiệp ba môn là Cơ sở dữ liệu, Lập trình C và Visual Basic thì môn Cơ Sở Dữ Liệu và Lập Trình C thi tại phòng A3.4, còn môn thực hành Visual Basic thi tại phòng máy H6.1. Bài số 4: Cho mô hình thực thể kết hợp sau. Yêu cầu: Chuyển ERD sang mô hình dữ liệu quan hệ 23
  24. BÀI 1: CÁC KHÁI NIỆM CƠ BẢN TRONG MÔ HÌNH CƠ SỞ DỮ LIỆU QUAN HỆ Mã bài: 11.01 Giới thiệu: Mô hình dữ liệu quan hệ (Ralational Data Model)- gọi tắt là mô hình quan hệ, do EF.Codd đề xuất năm 1970. Nền tảng lý thuyết của nó là khái niệm lý thuyết tập hợp trên các quan hệ, tức là tập của các bộ giá trị. Mô hình dữ liệu quan hệ là mô hình được nghiên cứu nhiều nhất, và thực tiễn đã cho thấy rằng nó có cơ sở lý thuyết vững chắc nhất. Mô hình dữ liệu này cùng với mô hình thực thể kết hợp đang được sử dụng rộng rãi trong việc phân tích và thiết kế cơ sở dữ liệu hiện nay. Bài này sẽ giới thiệu một cách tổng quan về các khái niệm cơ bản trong mô hình cơ sở dữ liệu quan hệ như: Thuộc tính, khóa, quan hệ, bộ giá trị, phụ thuộc hàm. Mục tiêu: - Nêu được khái niệm về quan hệ, thuộc tính, các loại khóa, lược đồ quan hệ, bộ giá trị và phụ thuộc hàm. - Lấy được ví dụ trong thực tế để minh họa. Nội dung chính: 1. Thuộc tính Thuộc tính là các đặc điểm riêng của một đối tượng (đối tượng được hiểu như là một loại thực thể ở mô hình thực thể kết hợp), mỗi thuộc tính có một tên gọi và phải thuộc về một kiểu dữ liệu nhất định. Kiểu dữ liệu (data type) Các thuộc tính được phân biệt qua tên gọi và phải thuộc một kiểu dữ liệu nhất định (số, chuỗi, ngày tháng, logic, hình ảnh, ). Kiểu dữ liệu ở đây có thể là kiểu vô hướng hoặc là kiểu có cấu trúc. Nếu thuộc tính có kiểu dữ liệu là vô hướng thì nó được gọi là thuộc tính đơn hay thuộc tính nguyên tố, nếu thuộc tính có kiểu dữ liệu có cấu trúc thì ta nói rằng nó không phải là thuộc tính nguyên tố Chẳng hạn với sinh viên Nguyễn Văn Thành thì các thuộc tính họ và tên, mã số sinh viên thuộc kiểu chuỗi, thuộc tính ngày sinh thuộc kiểu ngày tháng, hộ khẩu thường trú kiểu chuỗi, thuộc tính hình ảnh kiểu hình ảnh, Miền giá trị (domain of values) Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu và tập hợp con đó gọi là miền giá trị của thuộc tính đó. Chẳng hạn thuộc tính NỮ có miền giá trị là {nam, nữ}, thuộc tính màu da có miền giá trị là {da trắng, da vàng, da đen, da đỏ}, thuộc tính điểm thi là các số thuộc tập {0; 1; 2; ,10]. Lưu ý rằng nếu không lưu ý đến ngữ nghĩa thì tên của các thuộc tính thường được ký hiệu bằng các chữ cái in hoa đầu tiên trong bảng chữ cái la tinh: A,B,C,D, 24
  25. Những chữ cái in hoa X,Y,Z,W, thường dùng thay cho một nhóm nhiều thuộc tính. Đôi khi còn dùng các ký hiệu chữ cái với các chỉ số A1,A2, ,An để chỉ các thuộc tính trong trường hợp tổng quát hay muốn đề cập đến số lượng các thuộc tính. Tên thuộc tính phải được đặt một cách gợi nhớ, không nên đặt tên thuộc tính quá dài (vì như thế sẽ làm cho việc viết các câu lệnh truy vấn trở nên vất vả hơn), nhưng cũng không nên đặt tên thuộc tính quá ngắn (vì nó sẽ không cho thấy ngữ nghĩa của thuộc tính), đặc biệt không đặt trùng tên hai thuộc tính mang ngữ nghĩa khác nhau thuộc hai đối tượng khác nhau. Trong nhiều hệ quản trị cơ sở dữ liệu, người ta thường đưa thêm vào miền giá trị của các thuộc tính một giá trị đặc biệt gọi là giá trị rỗng (NULL). Tuỳ theo ngữ cảnh mà giá trị này có thể đặc trưng cho một giá trị không thể xác định được hoặc một giá trị chưa được xác định ở vào thời điểm nhập tin nhưng có thể được xác định vào một thời điểm khác. Ví dụ: Hình 1.1. Thuộc tính của một quan hệ + Tất cả các dữ liệu trong cùng 1 một cột đều có dùng kiểu dữ liệu 2. Lược đồ quan hệ Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với các mối liên hệ giữa chúng được gọi là lược đồ quan hệ. Lược đồ quan hệ Q với tập thuộc tính {A1,A2, ,An} được viết là Q(A1,A2, ,An). Ví dụ: Sinhvien (MASV, HOTENSV, NGAYSINH, NOISINH,TINH, MALOP). Khái niệm lược đồ quan hệ ứng với khái niệm loại thực thể ở mô hình thực thể kết hợp. Nhiều lược đồ quan hệ cùng nằm trong một hệ thống thông tin được gọi là một lược đồ cơ sở dữ liệu. 3. Quan hệ Sự thể hiện của lược đồ quan hệ ở một thời điểm nào đó được gọi là quan hệ, rõ ràng là trên một lược đồ quan hệ có thể xác định nhiều quan hệ. Thường ta dùng các ký hiệu như R,S,Q để chỉ các lược đồ quan hệ, còn quan hệ thường được dùng bởi các ký hiệu là r, s,q, Về trực quan thì quan hệ (hay bảng quan hệ) như là một bảng hai chiều gồm các dòng và các cột. Một quan hệ có n thuộc tính được gọi là quan hệ n ngôi. 25
  26. Để chỉ quan hệ r xác định trên lược đồ quan hệ Q ta có thể viết r(Q). 4. Bộ giá trị Mỗi bộ là những thông tin về một đối tượng thuộc một quan hệ, bộ cũng còn được gọi là mẫu tin. Quan hệ là một bảng (table) với các cột là các thuộc tính và mỗi dòng được gọi là bộ. Ví dụ: HOCVIEN(Mahv, Hoten, Ngsinh, Noisinh) có q=(1003,Nguyen Van Lam, 1/1/1987,Dong Nai) nghĩa là học viên có mã số là 1003, họ tên là Nguyen Van Lam, sinh ngày 1/1/1987 ở Dong Nai. 5. Tân từ Diễn tả ý nghĩa của quan hệ, mối liên hệ giữa các thuộc tính với nhau. Dựa vào tân từ này, người ta xác định được tập khoá, siêu khoá của lược đồ quan hệ Ký hiệu ║Q║ Ví dụ: Tân từ của lược đồ quan hệ Sinhvien (MASV, HOTENSV, NGAYSINH, NOISINH,TINH, MALOP) là: ”Mỗi sinh viên có mỗi MASV duy nhất. Mỗi MASV xác định các thuộc tính còn lại của sinh viên đó như HOTENSV,NGAYSINH, NOISINH,TINH,MALOP. 6. Khóa, siêu khóa, khóa chỉ định, khóa chính, khóa ngoại Siêu khóa: Là một tập con các thuộc tính của Q mà giá trị của chúng có thể phân biệt 2 bộ khác nhau trong cùng một thể hiện TQ bất kỳ. Một quan hệ có thể có ít nhất một siêu khóa hay nhiều siêu khóa. Ví dụ: Các siêu khóa của lược đồ quan hệ HOCVIEN là:{Mahv}; {Mahv,Hoten}; {Mahv, Noisinh, Hoten} Hình 1.2. Lược đồ quan hệ HOCVIEN và siêu khoá Khóa: - Định nghĩa: K là khóa của quan hệ R, thỏa mãn 2 điều kiện: - K là một siêu khóa. - K là siêu khóa “nhỏ nhất” (chứa ít thuộc tính nhất và khác rỗng) nghĩa là K1  K, K1  sao cho K1 là siêu khóa. -Thuộc tính tham gia vào một khóa gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa. 26
  27. Ví dụ 1: Các siêu khóa của quan hệ HOCVIEN là: {Mahv}; {Mahv,Hoten}; {Hoten};{Hoten,Gioitinh};{Noisinh,Hoten}; {Mahv,Hoten,Gioitinh,Noisinh}  thì khóa của quan hệ HOCVIEN có thể là {Mahv}; {Hoten} Ví dụ 2: khóa của quan hệ GIANGDAY (Malop, Mamh, Magv, HocKy, Nam) là K={Malop,Mamh}. Thuộc tính khóa sẽ là: Mamh, Malop. Thuộc tính không khóa sẽ là Magv, HocKy, Nam. Khóa chính (primary key) Là một học nhiều trường trong lược đồ mà dữ liệu tại cột này phải không rỗng và duy nhất. Từ giá trị của khóa chính xác định được duy nhất một bộ giá trị trong lược đồ. - Ký hiệu: các thuộc tính nằm trong khóa chính khi liệt kê trong quan hệ phải được gạch dưới. - VD: HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop) GIANGDAY(Mamh,Malop,Magv,Hocky,Nam) Khóa tương đương: - Các khóa còn lại (không được chọn làm khóa chính) gọi là khóa tương đương. - Ví dụ: trong hai khóa {Mahv},{Hoten} thì khóa chính là {Mahv}, khóa tương đương là {Hoten} Khóa ngoại: Là một hoặc nhiều trường trong một lược đồ mà các trường này là khóa chính của một lược đồ khác Ví dụ, cho 2 quan hệ LOP (Malop,Tenlop,Siso,Khoahoc) HOCVIEN (Mahv, Hoten, Gioitinh,Noisinh,Malop) Thuộc tính Malop trong quan hệ LOP là khóa chính của quan hệ LOP. Thuộc tính Malop trong quan hệ HOCVIEN là khóa ngoại, tham chiếu đến Malop trong quan hệ LOP 7. Phụ thuộc hàm Cho R={a1,a2, ,an} là tập các thuộc tính ,r ={h1,h2, ,hn}là 1 quan hệ trên R, và A,B là tập con của R. Khi đó ta nói :A xác định hàm cho B hay B phụ thuộc hàm vào A trong r. Ký hiệu: A→B 8. Ràng buộc toàn vẹn 27
  28. 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. Hay nói cách khác Ràng buộc toàn vẹn là các quy định điều kiện từ ứng dụng thực tế, các điều kiện này là bất biến. Vì thế phải luôn đảm bảo cơ sở dữ liệu thỏa ràng buộc toàn vẹn sau mỗi thao tác làm thay đổi tình trạng của cơ sở dữ liệu. 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ày. 9. Các phép tính trên cơ sở dữ liệu quan hệ Nội dung của cơ sở dữ liệu có thể được cập nhật bằng các thao tác - Thêm (insertion) - Xóa (deletion) - Sửa (updating) 9.1. Phép thêm Phép chèn thêm một bộ vảo quan hệ r{A1, ,An}. Insert(r; A1=d1, A2=d2, ,An=dn) Trong đó Ai(i=1, , n) là tên các thuộc tính và di dom(Ai). 9.2.Phép loại bỏ Phép loại bỏ (DEL) là phép xóa, một bộ ra khỏi một quan hệ cho trước. Giống như phép chèn, phép loại bỏ có dạng biểu diễn hình thức toán học: r=r-t. DEL(r; A1=d1, A2=d2, ,An=dn) hoặc ngắn gọn hơn có thể viết: DEL(r;d1, d2, , dn). 9.3. Phép sửa đổi Khi cần điều chỉnh một số giá trị nào đó tại một số thuộc tính, lúc đó ta sử dụng phép thay đổi. Gọi tập {C1, , Cp}{A1, , An} là tập các thuộc tính mà tại đó các giá trị của bộ cần thay đổi; CH(r; A1=d1, A2=d2, , An=dn; C1=e1, C2=e2, , Cp=ep). Nếu K={B1, , Bm} là khóa của quan hệ, khi đó ta chỉ cần viết: CH(r; B1=b1, B2=b2, , Bm=bm; C1=e1, C2=e2, , Cp=ep). CÂU HỎI - BÀI TẬP 1.1. Nêu khái niệm : Thuộc tính, quan hệ, lược đồ quan hệ, bộ giá trị, khóa, ràng buộc toàn vẹn, phụ thuộc hàm. 1.2. Các thao tác trên quan hệ: Trả lời các câu hỏi sau: INSERT: Thao tác gì? 28
  29. DELETE: Thao tác gì? UPDATE: Thao tác gì? Bài tập: Bài số 1: Cho mô hình quan hệ: - Xác định tên quan hệ, thuộc tính, khóa chính, khóa ngoại của các quan hệ Bài số 2: Dựa vào mẫu hoá đơn bán hàng hãy thiết kế mô hình dữ liệu quan hệ - Trong đó: Số hoá đơn xác định được ngày tạo lập; Mã khách hàng xác định được tên khách hàng, địa chỉ; Mã hàng xác định được tên hàng hoá, đơn vị tính, đơn giá và số lượng 29
  30. Bài số 3: Thiết kế mô hình dữ liệu quan hệ dựa vào mẫu phiếu mượn sách trong thư viện. - Trong đó: Số phiếu xác định được ngày mượn; Mã sinh viên xác định được tên sinh viên, mã lớp; Mã sách xác định được tên sách, nhà xuất bản, ghi chú 30
  31. BÀI 2: PHÉP HỘI, PHÉP GIAO, PHÉP TRỪ TRÊN ĐẠI SỐ QUAN HỆ Mã bài: 11.02 Giới thiệu: Đại số quan hệ (ĐSQH) có nền tảng toán học (cụ thể là lý thuyết tập hợp) để mô hình hóa CSDL quan hệ. Đối tượng xử lý là các quan hệ trong cơ sở dữ liệu quan hệ. Bài này cung cấp các kiến thức cơ bản về các phép toán hội, giao, trừ trên đại số quan hệ. Các phép toán thực hiện trên 2 quan hệ xuất phát từ lý thuyết tập hợp của toán học: phép hội (RS), phép giao (RS), phép trừ (R-S), phép tích (R S). Qua đó, giúp người học thực hiện được các phép toán trên để cho kết quả là một quan hệ mới theo yêu cầu. Mục tiêu: - Nêu được các khái niệm về phép hội, phép giao, phép trừ trên đại số tập hợp. - Lấy được ví dụ trong thực tế để minh họa. - Thực hiện được các phép toán trên trong bài tập cụ thể. - Nghiêm túc, tự giác trong học tập - Đảm bảo an toàn cho nguời và thiết bị Nội dung chính: 1. Giới thiệu về đại số quan hệ 1.1. Định nghĩa Đại số quan hệ (ĐSQH) có nền tảng toán học (cụ thể là lý thuyết tập hợp) để mô hình hóa CSDL quan hệ. Đối tượng xử lý là các quan hệ trong cơ sở dữ liệu quan hệ. 1.2. Chức năng - Cho phép mô tả các phép toán rút trích dữ liệu từ các quan hệ trong cơ sở dữ liệu quan hệ. - Cho phép tối ưu quá trình rút trích bằng các phép toán có sẵn của lý thuyết tập hợp. 1.3. Biểu thức đại số quan hệ - Biểu thức ĐSQH là một biểu thức gồm các phép toán ĐSQH - Biểu thức ĐSQH được xem như một quan hệ (không có tên) - Có thể đặt tên cho quan hệ được tạo từ một biểu thức quan hệ. - Có thể đổi tên các thuộc tính của quan hệ được tạo từ một biểu thức ĐSQH. 1.4. Phép toán trên Đại số quan hệ - Đại số quan hệ gồm một tập các phép toán tác động trên các quan hệ và cho kết quả là một quan hệ. Các phép toán thực hiện trên 2 quan hệ xuất phát từ lý thuyết tập hợp của toán học: phép hội (RS), phép giao (RS), phép trừ (R-S), phép tích (R S). - Đối với các phép hội, giao, trừ, các quan hệ R và S phải tương thích hay khả hợp nếu chúng được định nghĩa trên cùng một lược đồ quan hệ hay trên cùng một tập các miền giá trị. (Được xác định trên cùng một tập các thuộc tính), nghĩa là: Số lượng thuộc tính của R và S phải bằng nhau: R(A1,A2, An) và S(B1,B2, Bn) 31
  32. Miền giá trị của thuộc tính phải tương thích dom(Ai)=dom(Bi) Quan hệ kết quả của phép hội, giao, trừ có cùng tên thuộc tính với quan hệ đầu tiên. VD: Hai quan hệ tương thích khả hợp 2. Phép hội (hợp) 2 quan hệ (Union) Cho hai quan hệ R và S khả hợp. Hội (hợp) của hai quan hệ R và S ký hiệu là RS là một quan hệ trên lược đồ quan hệ Q gồm các phần tử thuộc R hoặc thuộc S, hoặc thuộc cả hai (các bộ trùng lắp sẽ bị loại bỏ), tức là: R  S = {t / t R hoặc t S} - Phép hội (hợp) của hai quan hệ là phép gộp các bộ của hai bảng của một quan hệ thành một bảng và bỏ đi các bộ trùng. Ví dụ: Cho 2 quan hệ R và S khả hợp và kết quả phép hội của R và S * Tính chất. + Giao hoán: R  S = S  R + Kết hợp: R  (S  T) = (R  S)  T 3. Phép giao 2 quan hệ (Intersection) Cho hai quan hệ tương thích R và S. Giao của hai quan hệ R và S ký hiệu là RS là một quan hệ trên lược đồ quan hệ Q gồm các phần tử vừa thuộc R vừa thuộc S, tức là: R  S = {t / t R và t S} 32
  33. Phép giao của hai quan hệ là lấy ra các bộ cùng có mặt ở cả hai bảng của một quan hệ. * Tính chất. + Giao hoán: R  S = S  R + Kết hợp: R  (S  T) = (R  S)  T 4. Phép Trừ 2 quan hệ (Minus) Cho hai quan hệ tương thích R và S. Hiệu của hai quan hệ R và S ký hiệu là R-S là một quan hệ trên lược đồ quan hệ Q gồm các phần tử chỉ thuộc R mà không thuộc S, tức là: R - S = {t / t r và t s} Phép trừ của hai quan hệ A và B là lấy các bộ có trong bảng A mà không có trong bảng B Lưu ý: Phép trừ không có tính chất giao hoán. (R - S S - R) 33
  34. CÂU HỎI - BÀI TẬP 3.1. Cho hai quan hệ R, S Hãy thực hiện R  S , R  S , R – S , S-R. 3.2. Cho hai quan hệ r,s trên lược đồ quan hệ R = (ABC) : Hãy thực hiện: R  S , R  S , R – S , S – R 3.3. Cho hai quan hệ sau: Hãy thực hiện: R  S , R  S , R – S , S – R Nội dung chính cần ghi nhớ: - Khái niệm về phép hội, phép giao, phép trừ trên đại số tập hợp. - Thực hiện được các phép toán trên. 34
  35. BÀI 3: PHÉP TÍCH ĐỀ CÁC VÀ PHÉP CHIA TRÊN ĐẠI SỐ QUAN HỆ Mã bài: 11.03 Giới thiệu: Bài này sẽ giới thiệu một cách tổng quan về: các phép toán tích Đề các, phép chia, phép gán trên đại số tập hợp. Qua đó, giúp người học thực hiện được các phép toán trên để cho kết quả là một quan hệ mới theo yêu cầu. Mục tiêu: - Nêu được các khái niệm về phép tích đề các, phép chia trên đại số tập hợp. - Lấy được ví dụ trong thực tế để minh họa. - Thực hiện được các phép toán trên trong bài tập cụ thể. - Nghiêm túc, tự giác trong học tập - Đảm bảo an toàn cho nguời và thiết bị Nội dung chính: 1. Tích Decac của 2 quan hệ (Cartesian Product) Cho quan hệ r(R), R={A1,A2, ,An} và quan hệ s(U), U={B1,B2, ,Bm}. Tích Descartes (decac) của r và s ký hiệu là r x s. r x s ={t=(a1,a2, ,an, b1,b2, ,bm) /a1,a2, ,an r và b1,b2, ,bm s } - Kết quả trả về là một quan hệ Q. - Mỗi bộ của Q là tổ hợp giữa 1 bộ trong r và 1 bộ trong s. - Nếu r có u bộ và s có v bộ thì Q sẽ có u v bộ. - Nếu r có n thuộc tính và s có m thuộc tính thì Q sẽ có n + m thuộc tính (R+  Q+  ) (R+: Tập thuộc tính của R, Q+: Tập thuộc tính của Q). Ví dụ 1.1: Cho quan hệ r và s, kết quả r x s 35
  36. Ví dụ 1.2: Cho quan hệ NHANVIEN và PHONGBAN Kết quả NHANVIEN x PHONGBAN Phép tích Decartes NHANVIEN x PHONGBAN là tổ hợp tất cả các bộ từ bảng Nhanvien tới bảng phongban. Điều này dẫn tới những sai sót dữ liệu trong thực tế. Dễ dàng nhìn thấy trong ví dụ 1.2, một nhân viên làm việc ở cả 2 phòng ban, hay 1 phòng ban có đến 2 trưởng phòng. Để giải quyết vấn đề này trong thực tế, phép tích Decas thường được kết hợp với điều kiện chọn. Tức là chỉ thực hiện phép tích khi thoả mãn điều kiện (thường là ràng buộc khoá ngoại) Trong ví dụ này, điều kiện chọn sẽ là: giá trị tại thuộc tính phong trong bảng Nhanvien trùng với giá trị tại thuộc tính mapb trong bảng Phongban. Điều này tương đương với việc: chỉ thực hiện phép tích decas nếu phong trùng mapb và được biểu diễn: phong = mapb Lúc này kết quả sẽ là: 36
  37. 2. Phép chia 2 quan hệ: Cho 2 lược đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm), r là quan hệ xác định trên Q1; s là quan hệ xác định trên Q2 (n>m và s khác rỗng), có m thuộc tính chung (giống nhau về mặt ngữ nghĩa, hoặc các thuộc tính có thể so sánh được) giữa r và s. Phép chia 2 quan hệ r và s ký hiệu r ÷ s , là một quan hệ q có n - m thuộc tính được định nghĩa như sau: q= r ÷ s={t/  u s, (t,u) r} Phép chia được dùng để lấy ra một số bộ trong quan hệ r sao cho thỏa với tất cả các bộ trong quan hệ s. Ví dụ 2.1: Ví dụ 2.2: CÂU HỎI - BÀI TẬP 4.1. Cho hai quan hệ NHANVIEN và PHONG như sau: Hãy thực hiện phép tích Đề các trên 2 quan hệ trên. Cho biết ràng buộc (điều kiện lọc) để phép tích Đề các trên đúng với thực tế 37
  38. BÀI 4: PHÉP CHIẾU VÀ PHÉP CHỌN TRONG ĐẠI SỐ QUAN HỆ Mã bài: 11.04 Giới thiệu: Bài này sẽ giới thiệu một cách tổng quan về: các phép toán chiếu, phép chọn, trên đại số quan hệ. Qua đó, giúp người học thực hiện được các phép toán trên để cho kết quả là một quan hệ mới theo yêu cầu. Mục tiêu: - Nêu được các khái niệm về phép chiếu, phép chọn trên đại số quan hệ. - Nêu được cú pháp của phép chiếu, phép chọn. - Lấy được ví dụ trong thực tế để minh họa. - Thực hiện được các phép toán trên trong bài tập cụ thể. - Nghiêm túc, tự giác trong học tập - Đảm bảo an toàn cho người và thiết bị Nội dung chính: 1. Phép chiếu ( Project) Dùng để trích giá trị của một số thuộc tính trong danh sách các thuộc tính của quan hệ Phép chiếu được ký hiệu là:  ( R) hoặc Quan hệ [cột1, cột2, cột3, ] Trong đó  là ký hiệu dùng để biểu diễn phép chiếu và là một danh sách con các thuộc tính của quan hệ R. R là một biểu thức đại số quan hệ, trong trường hợp đơn giản nhất nó là tên của một quan hệ. Kết quả của phép chiếu là một quan hệ chỉ có các thuộc tính nằm trong và có cùng thứ tự như thứ tự của chúng có trong danh sách. Như vậy, cấp của quan hệ kết quả là số các thuộc tính có trong . Ví dụ: Cho biết họ tên nhân viên và giới tính ? Cách 1: ℎ표푡푒푛, ℎ 푖( ) Cách 2: NHANVIEN [HoTen, Phai] 38
  39. Hình 4.1: Kết quả phép chiếu Hoten, phai của quan hệ NHANVIEN Số các bộ trong quan hệ kết quả từ một phép chiếu luôn luôn nhỏ hơn hoặc bằng số các bộ trong R. Nếu danh sách chiếu là một siêu khoá của R (nghĩa là nó chứa một khoá nào đó của R) thì quan hệ kết quả có cùng một số bộ như R. Ngoài ra, nếu chứa tất cả các thuộc tính có trong thì  ( ( R)) =  ( R) Nếu chỉ bao gồm các thuộc tính không phải thuộc tính khoá của R thì Phép chiếu sẽ loại bỏ mọi bộ trùng lặp. + Mở rộng phép chiếu bằng cách cho phép sử dụng các phép toán số học trong danh sách thuộc tính. Ký hiệu: F1, F2, , Fn (E) trong đó : E là biểu thức ĐSQH F1, F2, , Fn là các biểu thức số học liên quan đến • Hằng số • Thuộc tính trong E Ví dụ: Cho biết họ tên của các nhân viên và lương của họ sau khi tăng 10% ℎ표푛푣,푡푒푛푛푣,푙 표푛 ∗1.1( ) Chúng ta có thể áp dụng nhiều phép toán quan hệ liên tiếp nhau. Trong trường hợp đó hoặc chúng ta có thể viết các phép toán như là một biểu thức đại số quan hệ đơn bằng cách xếp lồng các phép toán lại với nhau, hoặc chúng ta có thể áp dụng mỗi phép toán tại một thời điểm và tạo ra các quan hệ kết quả trung gian. 2. Phép chọn (Selection) Phép chọn được sử dụng để chọn ra các dòng (bộ) trong quan hệ thỏa điều kiện chọn. Phép chọn được ký hiệu là:  (R) hoặc (Quan hệ: ) trong đó ký hiệu  được dùng để ký hiêu phép chọn, còn là một biểu thức lôgic được chỉ ra trên các thuộc tính của R. Chú ý rằng Quan hệ nói chung là một biểu thức đại số quan hệ. Kết quả của một biểu thức đại số quan hệ là một R. Biểu thức đơn giản nhất chính là tên của một quan hệ của một cơ sở dữ liệu. Quan hệ kết quả của phép chọn có cùng thuộc tính như Quan hệ. Biểu thức logic chỉ ra trong được tạo nên từ một số hạng mục có dạng : hoặc 39
  40. trong đó là tên của một thuộc tính trong quan hệ, là một trong các phép toán so sánh { =, >, ≠} còn là một giá trị hằng từ miền giá trị của thuộc tính. Các hạng mục có thể được nối với nhau bằng các phép toán lôgic AND (^), OR (v), NOT để tạo ra một điều kiện chọn chung. Kết quả một phép chọn được xác định như sau: được áp dụng cho mỗi bộ t trong R một cách độc lập. Điều đó được thực hiện bằng cách thay thế mỗi thuộc tính Ai trong điều kiện chon bằng giá trị t[Ai] của nó trong bộ. Nếu điều kiện chọn cho giá trị đúng thì bộ t sẽ được chọn. Tất cả các bộ được chọn xuất hiện trong kết quả của phép chọn. Các phép toán logic AND, OR, NOT được thực hiện theo quy tắc bình thường của chúng. Phép chọn là phép toán một ngôi, nghĩa là nó được áp dụng cho một quan hệ. Hơn nữa, phép chọn được áp dụng cho từng bộ một cách độc lập, vì vậy, các điều kiện chọn không thể liên quan đến nhiều bộ. Quan hệ kết quả của phép chọn có cấp giống như cấp của R. Số các bộ trong quan hệ kết quả luôn luôn nhỏ hơn hoặc bằng số các bộ trong R. Ví dụ 1: Cho biết các nhân viên nam Cách 1: σphai=Nam(Nhanvien) Cách 2: (NhanVien:Phai= “Nam’) Hình 4.2: Kết quả phép chọn những nhân viên có giới tính nam Ví dụ 2: Cho biết các nhân viên nam sinh sau năm 1975. Cách 1: σphai="Nam"^Year(NTNS)>1975 (Nhanvien) Cách 2: (NhanVien: Phai=‘Nam’  Year(NTNS)>1975) Hình 4.3: Kết quả phép chọn những nhân viên có giới tính nam, sinh sau 1975 + Phép chọn là một phép toán có tính chất giao hoán, nghĩa là σ (σ (R)) = σ (σ (R)) Hơn nữa ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn giản bằng cách sử dụng phép toán AND. Ví dụ: σ (σ (R)) = σ AND (R) 40
  41. Ví dụ: Tìm tên những lớp có sĩ số từ 30 học viên trở lên thuộc k14 hoặc k15 nhưng sĩ số từ 40 trở lên Cách 1: 푡푒푛푙표 휎(푠푖푠표≥30ℎ표 ℎ표 = 14) (푠푖푠표≥40ℎ표 ℎ표 = 15)( ) Cách 2: HOCVIEN: ((SISO>=30) ^ (KHOAHOC=14) V (SISO>=40) ^ (KHOAHOC=1)) [TENLOP] Lưu ý: khi thực hiện phép chọn hãy xác định điều kiện của phép chọn là gì? Có mấy điều kiện, Sử dụng toán tử nào 3. Phép gán. Trong trường hợp tạo các quan hệ trung gian khi viết các phép toán như là một biểu thức đại số quan hệ đơn, phải đặt tên cho quan hệ đó. Ký hiệu:  Ví dụ: Để đưa ra Hoten và Luong của các nhân viên làm việc ở đơn vị có Maso là 4 chúng ta phải áp dụng một phép chọn và một phép chiếu. Chúng ta có thể viết một biểu thức đại số quan hệ đơn như sau: ℎ표푡푒푛,푙 표푛 휎 푠표=4( ) Một cách khác, chúng ta có thể tạo ra kết quả trung gian và viết biểu thức trên thành dãy các phép toán như sau: KQTG 휎 푠표=4( ) Ketqua  ℎ표푡푒푛,푙 표푛 (퐾푄 ) Thông thường việc phân tích một dãy phức tạp các phép toán bằng cách chỉ ra các quan hệ kết quả trung gian là dễ hơn việc viết một biểu thức đại số quan hệ đơn. Để đặt lại tên cho các thuộc tính của một quan hệ, chúng ta liệt kê các tên mới của các thuộc tính trong cặp dấu ngoặc. Ví dụ: R(Hovaten, Luong)  ℎ표푡푒푛,푙 표푛 (퐾푄 ) Cho kết quả là quan hệ R, trong đó thuộc tính Hoten được đặt lại tên thành Hovaten Nếu không có việc đặt lại tên thì tên của các thuộc tính trong quan hệ kết quả của một phép chọn là giống như các tên trong quan hệ ban đầu và có cùng một thứ tự như thứ tự của các thuộc tính đó. Đối với phép chiếu, nếu không có việc đặt lại tên thì quan hệ kết quả có các tên thuộc tính giống như các tên trong danh sách chiếu và có cùng thứ tự như chúng xuất hiện trong danh sách. Chúng ta có thể định nghĩa một phép toán đặt lại tên , nó có thể đặt lại tên cho một tên quan hệ hoặc các tên thuộc tính hoặc cả hai. 4. Phép gom nhóm và các hàm nhóm. Các hàm hay áp dụng để thu thập các giá trị số là hàm Tổng (SUM), Trungbình (AVERAGE), Tính giá trị lớn nhất (MAX), Giá trị bé nhất (MIN). Hàm Đếm (COUNT) được sử dụng để đếm các bộ giá trị. 41
  42. Nhóm các bộ trong một quan hệ theo một giá trị của một số các thuộc tính của chúng và sau đó áp dụng các hàm nhóm một cách độc lập cho từng nhóm. Định nghĩa một phép toán nhóm như sau:  (R) trong đó  là ký hiệu phép toán hàm nhóm, là một danh sách các thuộc tính của quan hệ được chỉ ra trong R, là danh sách các cặp ( ). Trong các cặp như vậy, là một trong các hàm cho phép như SUM, AVERAGE, MAX, MIN, COUNT, và là một thuộc tính của quan hệ được chỉ ra trong R. Quan hệ kết quả có các thuộc tính nhóm cộng với một thuộc tính cho mỗi phần tử trong danh sách hàm. Ví dụ: 1. Để lấy ra theo MaSoĐV các nhân viên và lương trung bình của các nhân viên theo từng đơn vị, ta có thể viết: MaSoDV COUNT ( ), AVERAGE(Luong)( NhanVien) 2. Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL?  max( Diem ), min( Diem ), agv( Diem )Mamh 'CSDL' (KETQUATHI) 3. Điểm thi cao nhất, thấp nhất, trung bình của từng môn? Mamh  max( Diem ), min( Diem ), avg( Diem ) (KETQUATHI) CÂU HỎI - BÀI TẬP Bài số 1: Cho lược đồ cơ sở dữ liệu SinhVien (MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) Lop (MALOP,TENLOP, MAKHOA) Khoa(MAKHOA,TENKHOA) Monhoc(MAMH,TENMH,DONVIHT) GiangVien (MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) KetQua (MASV, MAMH, LANTHI, DIEMTHI) Phancong(MALOP,MAMH,MAGV) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 1. Lập danh sách những sinh viên có hộ khẩu thường trú ở tỉnh “LONG AN”, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP 2. Lập danh sách các sinh viên của lớp có MALOP là CDTH2A, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TINH. 3. Lập danh sách các giảng viên có cấp học vị là THAC SY của khoa có MAKHOA là “CNTT”, danh sách cần: MAGV,HOTENGV, CHUYENNGANH. Bài số 2: Cho lược đồ cơ sở dữ liệu KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) 42
  43. CTHD (SOHD,MASP,SL) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 1. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất. 2. In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tính là “cay”, ”quyen”. 3. In ra danh sách các sản phẩm (MASP,TENSP) có mã sản phẩm bắt đầu là “B” và kết thúc là “01”. 4. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000. 5. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” hoặc “Thai Lan” sản xuất có giá từ 30.000 đến 40.000. 6. In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2007 và ngày 2/1/2007. 7. In ra các số hóa đơn, trị giá hóa đơn trong tháng 1/2007, sắp xếp theo ngày (tăng dần) và trị giá của hóa đơn (giảm dần). 8. In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007. 9. In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Nguyen Van B” lập trong ngày 28/10/2006. 10. In ra danh sách các sản phẩm (MASP,TENSP) được khách hàng có tên “Nguyen Van A” mua trong tháng 10/2006. 11. Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”. 12. Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”, mỗi sản phẩm mua với số lượng từ 10 đến 20. Bài số 3: Cho lược đồ cơ sở dữ liệu với các lược đồ quan hệ như sau: KHACHHANG(MAKH, TEN, DCHI, DTHOAI) NHANVIEN(MANV,TEN, DCHI, DTHOAI, LUONG, LOAINV) LOAIMB(MALOAI, HANGSX) MAYBAY(SOHIEU, MALOAI) CHUYENBAY(MACB, SBDI, SBDEN, GIODI, GIODEN) LICHBAY(NGAYDI, MACB, SOHIEU, MALOAI) DATCHO(MAKH, NGAYDI, MACB) KHANANG(MANV, MALOAI) PHANCONG(MANV, NGAYDI, MACB) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 1. Cho biết mã số, tên phi công, địa chỉ, điện thoại của các phi công đã từng lái máy bay loại B747. 2. Cho biết mã số và ngày đi của các chuyến bay xuất phát từ sân bay DCA trong khoảng thời gian từ 14 giờ đến 18 giờ. 3. Cho biết tên những nhân viên được phân công trên chuyến bay có mã số 100 xuất phát tại sân bay SLC. Các dòng dữ liệu xuất ra không được phép trùng lắp. 4. Cho biết mã loại và số hiệu máy bay đã từng xuất phát tại sân bay MIA. Các dòng dữ liệu xuất ra không được phép trùng lắp. 43
  44. 5. Cho biết mã chuyến bay, ngày đi, cùng với tên, địa chỉ, điện thoại của tất cả các hành khách đi trên chuyến bay đó. Sắp xếp theo thứ tự tăng dần của mã chuyến bay và theo ngày đi giảm dần. 6. Cho biết mã chuyến bay, ngày đi, cùng với tên, địa chỉ, điện thoại của tất cả những nhân viên được phân công trong chuyến bay đó. Sắp xếp theo thứ tự tăng dần của mã chuyến bay và theo ngày đi giảm dần. 7. Cho biết mã chuyến bay, ngày đi, mã số và tên của những phi công được phân công vào chuyến bay hạ cánh xuống sân bay ORD. 8. Cho biết các chuyến bay (mã số chuyến bay, ngày đi và tên của phi công) trong đó phi công có mã 1001 được phân công lái. 9. Cho biết thông tin (mã chuyến bay, sân bay đi, giờ đi, giờ đến, ngày đi) của những chuyến bay hạ cánh xuống DEN. Các chuyến bay được liệt kê theo ngày đi giảm dần và sân bay xuất phát (SBDI) tăng dần . 10.Với mỗi phi công, cho biết hãng sản xuất và mã loại máy bay mà phi công này có khả năng bay được. Xuất ra tên phi công, hãng sản xuất và mã loại máy bay. 11. Cho biết mã phi công, tên phi công đã lái máy bay trong chuyến bay mã số 100 vào ngày 11/01/2000. 12. Cho biết mã chuyến bay, mã nhân viên, tên nhân viên được phân công vào chuyến bay xuất phát ngày 10/31/2000 tại sân bay MIA vào lúc 20:30 13. Cho biết thông tin về chuyến bay (mã chuyến bay, số hiệu, mã loại, hãng sản xuất) mà phi công “Quang” đã lái. 14. Cho biết tên của những phi công chưa được phân công lái chuyến bay nào. 15. Cho biết tên khách hàng đã đi chuyến bay trên máy bay của hãng “Boeing” 16. Cho biết mã các chuyến bay chỉ bay với máy bay số hiệu 10 và mã loại B747. GOM NHÓM + HÀM 17.Với mỗi sân bay (SBDEN), cho biết số lượng chuyến bay hạ cánh xuống sân bay đó. Kết quả được sắp xếp theo thứ tự tăng dần của sân bay đến. 18.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát từ sân bay đó, sắp xếp theo thứ tự tăng dần của sân bay xuất phát. 19.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát theo từng ngày. Xuất ra mã sân bay đi, ngày và số lượng. 20.Với mỗi sân bay (SBDEN), cho biết số lượng chuyến bay hạ cánh theo từng ngày. Xuất ra mã sân bay đến, ngày và số lượng. 21.Với mỗi lịch bay, cho biết mã chuyến bay, ngày đi cùng với số lượng nhân viên không phải là phi công của chuyến bay đó. 22.Số lượng chuyến bay xuất phát từ sân bay MIA vào ngày 11/01/2000. 23.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, số lượng nhân viên được phân công trên chuyến bay đó, sắp theo thứ tự giảm dần của số lượng. 24.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, cùng với số lượng hành khách đã đặt chỗ của chuyến bay đó, sắp theo thứ tự giảm dần của số lượng. 25.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, tổng lương của phi hành đoàn (các nhân viên được phân công trong chuyến bay), sắp xếp theo thứ tự tăng dần của tổng lương. 26. Cho biết lương trung bình của các nhân viên không phải là phi công. 44
  45. 27. Cho biết mức lương trung bình của các phi công. 28.Với mỗi loại máy bay, cho biết số lượng chuyến bay đã bay trên loại máy bay đó hạ cánh xuống sân bay ORD. Xuất ra mã loại máy bay, số lượng chuyến bay. 29. Cho biết sân bay (SBDI) và số lượng chuyến bay có nhiều hơn 2 chuyến bay xuất phát trong khoảng 10 giờ đến 22 giờ. 30. Cho biết tên phi công được phân công vào ít nhất 2 chuyến bay trong cùng một ngày. 31. Cho biết mã chuyến bay và ngày đi của những chuyến bay có ít hơn 3 hành khách đặt chỗ. 32. Cho biết số hiệu máy bay và loại máy bay mà phi công có mã 1001 được phân công lái trên 2 lần. 33.Với mỗi hãng sản xuất, cho biết số lượng loại máy bay mà hãng đó đã sản xuất. Xuất ra hãng sản xuất và số lượng. TRUY VẤN LỒNG + HÀM 34. Cho biết hãng sản xuất, mã loại và số hiệu của máy bay đã được sử dụng nhiều nhất. 35. Cho biết tên nhân viên được phân công đi nhiều chuyến bay nhất. 36. Cho biết thông tin của phi công (tên, địa chỉ, điện thoại) lái nhiều chuyến bay nhất. 37. Cho biết sân bay (SBDEN) và số lượng chuyến bay của sân bay có ít chuyến bay đáp xuống nhất. 38. Cho biết sân bay (SBDI) và số lượng chuyến bay của sân bay có nhiều chuyến bay xuất phát nhất. 39. Cho biết tên, địa chỉ, và điện thoại của khách hàng đã đi trên nhiều chuyến bay nhất. 40. Cho biết mã số, tên và lương của các phi công có khả năng lái nhiều loại máy bay nhất. 41. Cho biết thông tin (mã nhân viên, tên, lương) của nhân viên có mức lương cao nhất. 42. Cho biết tên, địa chỉ của các nhân viên có lương cao nhất trong phi hành đoàn (các nhân viên được phân công trong một chuyến bay) mà người đó tham gia. 43. Cho biết mã chuyến bay, giờ đi và giờ đến của chuyến bay bay sớm nhất trong ngày. 44. Cho biết mã chuyến bay có thời gian bay dài nhất. Xuất ra mã chuyến bay và thời gian bay (tính bằng phút). 45. Cho biết mã chuyến bay có thời gian bay ít nhất. Xuất ra mã chuyến bay và thời gian bay. 46. Cho biết mã chuyến bay và ngày đi của những chuyến bay bay trên loại máy bay B747 nhiều nhất. 47.Với mỗi chuyến bay có trên 3 hành khách, cho biết mã chuyến bay và số lượng nhân viên trên chuyến bay đó. Xuất ra mã chuyến bay và số lượng nhân viên. 48.Với mỗi loại nhân viên có tổng lương trên 600000, cho biết số lượng nhân viên trong từng loại nhân viên đó. Xuất ra loại nhân viên, và số lượng nhân viên tương ứng. 45
  46. 49.Với mỗi chuyến bay có trên 3 nhân viên, cho biết mã chuyến bay và số lượng khách hàng đã đặt chỗ trên chuyến bay đó. 50.Với mỗi loại máy bay có nhiều hơn một chiếc, cho biết số lượng chuyến bay đã được bố trí bay bằng loại máy bay đó. Xuất ra mã loại và số lượng. PHÉP CHIA 51. Cho biết mã những chuyến bay đã bay tất cả các máy bay của hãng “Boeing”. 52. Cho biết mã và tên phi công có khả năng lái tất cả các máy bay của hãng “Airbus”. 53. Cho biết tên nhân viên (không phải là phi công) được phân công bay vào tất cả các chuyến bay có mã 100. 54. Cho biết ngày đi nào mà có tất cả các loại máy bay của hãng “Boeing” tham gia. 55. Cho biết loại máy bay của hãng “Boeing” nào có tham gia vào tất cả các ngày đi. 56. Cho biết mã và tên các khách hàng có đặt chổ trong tất cả các ngày từ 31/10/2000 đến 1/1/2000 57. Cho biết mã và tên phi công không có khả năng lái được tất cả các máy bay của hãng “Airbus” 58. Cho biết sân bay nào đã có tất cả các loại máy bay của hãng “Boeing” xuất phát 46
  47. BÀI 5: PHÉP KẾT NỐI TRONG ĐẠI SỐ QUAN HỆ Mã bài: 11.05 Giới thiệu: Bài này sẽ giới thiệu một cách tổng quan về: phép kết, phép kết tự nhiên trên đại số quan hệ. Qua đó, giúp người học thực hiện được các phép toán trên để cho kết quả là một quan hệ mới theo yêu cầu. Mục tiêu: - Nêu được các khái niệm về phép kết, phép kết tự nhiên trên đại số quan hệ. - Nêu được cú pháp của phép kết, phép kết tự nhiên. - Lấy được ví dụ trong thực tế để minh họa. - Thực hiện được các phép toán trên trong bài tập cụ thể. - Nghiêm túc, tự giác trong học tập - Đảm bảo an toàn cho nguời và thiết bị Nội dung chính: 1. Phép kết ( phép nối) Phép kết (nối) được dùng kết hợp các bộ có liên hệ với nhau từ hai quan hệ thành một bộ. Phép toán này rất quan trọng đối với cơ sở dữ liệu quan hệ có nhiều bảng bởi vì nó cho phép ta xử lý các mối liên kết giữa các quan hệ. Dạng tổng quát của phép kết trên hai quan hệ R(A1, A2, ,An) và S(B1,B2, , Bm) là Kết quả của phép kết là một quan hệ Q(A1,A2, ,An,B1,B2, ,Bm) có n+m thuộc tính. Mỗi bộ của Q là một sự kết nối giữa một bộ của R và một bộ của S khi chúng thoả mãn điều kiện nối. Sự khác nhau giữa tích Đề các và phép nối là ở chỗ trong phép nối, chỉ có các bộ thoả mãn điều kiện nối mới xuất hiện trong kết quả, trong khi đó trong tích Đề các mọi tổ hợp của các bộ đều có trong kết quả. Điều kiện nối được chỉ ra trên các thuộc tính của hai quan hệ R và S và được tính toán cho mỗi tổ hợp các bộ. Mọi tổ hợp bộ mà điều kiện nối là đúng được chứa trong quan hệ kết quả Q như là một bộ đơn. Một điều kiện nối tổng quát có dạng AND AND AND Trong đó mỗi điều kiện có dạng A i, Bj, Ai là một thuộc tính của R, Bj là một thuộc tính của S, Ai và Bj có cùng miền và là một trong các dấu phép toán so sánh { =, >, ≠}. Một phép toán nối với điều kiện tổng quát như vậy gọi là một phép nối tê-ta. Các bộ có các thuộc tính nối là null không xuất hiện trong kết quả. Theo nghĩa đó, phép toán không nhất thiết phải xử lý mọi thông tin trong các quan hệ tham gia. 47
  48. Ví dụ : Giả sử ta có hai quan hệ R và S như sau: Khi đó kết quả của phép nối tê-ta R và S với điều kiện A3 = B1 sẽ cho kết quả là: Phần lớn các phép nối chỉ cho phép các điều kiện nối với các so sánh bằng. Những phép nối chỉ sử dụng phép so sánh bằng được gọi là nối bằng. Ví dụ trên là một phép nối bằng. Ví dụ 2: 2. Phép kết tự nhiên Trong kết quả của phép nối bằng luôn luôn có một hoặc nhiều cặp thuộc tính có các giá trị như nhau trong mỗi bộ. Việc có các cặp thuộc tính có giá trị như nhau là thừa, vì vậy người ta đề nghị một phép nối mới gọi là nối tự nhiên, ký hiệu là *. Phép nối tự nhiên nhằm loại bỏ thuộc tính thứ hai (thuộc tính thừa) trong điều kiện nối bằng. Định nghĩa chuẩn của nối tự nhiên đòi hỏi hai thuộc tính nối (hoặc mỗi cặp thuộc tính nối) phải có tên như nhau trong cả hai quan hệ. Nếu các thuộc tính đó không cùng tên thì trước khi nối phải áp dụng phép toán đặt lại tên. 48
  49. Ví dụ: Kết tự nhiên hai quan hệ R(A1,A2,A3) và S(B1,B2,B3) như trong ví dụ trên. Để có thể thực hiện được phép nối tự nhiên với điều kiện so sánh bằng, ta phải đổi tên thuộc tính B1 thành A3. Phép nối sẽ có kết quả như sau: Nếu các thuộc tính mà trên đó nối tự nhiên được chỉ ra có tên như nhau thì việc đặt lại tên là không cần thiết. Chú ý rằng nếu không có một tổ hợp các bộ nào thoả mãn điều kiện nối thì kết quả của một phép nối là một quan hệ rỗng không chứa bộ nào. Nói chung, nếu R có nR bộ và S có nS bộ thì kết quả của phép nối R với S sẽ có số các bộ lớn hơn 0 và nhỏ hơn nR.nS. Cỡ của một kết quả nối chia cho cỡ cực đại nR.nS tạo nên một tỷ lệ gọi là chọn lựa nối, đó là một tính chất của mỗi điều kiện nối. Nếu không có điều kiện nối, mọi tổ hợp các bộ sẽ được chọn và phép nối trở thành một tích Đề các. Phép nối được sử dụng để kết hợp các dữ liệu từ nhiều quan hệ sao cho các thông tin có liên hệ với nhau có thể được biểu diễn trong một bảng. Đôi khi phép nối được áp dụng nối một bảng với chính nó. Chúng ta có thể áp dụng phép nối tự nhiên và nối bằng để nối nhiều bảng với nhau. Nếu ta nối n bảng với nhau thì phải chỉ ra n-1 điều kiện nối. 3. Phép kết ngoài (outer join) Các phép toán nối mô tả ở trên liên kết các bộ thoả mãn điều kiện nối. Như vậy, các bộ không có bộ liên kết sẽ bị loại khỏi kết quả nối. Các bộ với giá trị null trong các thuộc tính nối cũng bị loại. Một tập hợp các phép toán gọi là nối ngoài có thể được sử dụng khi chúng ta muốn giữ các bộ trong R hoặc S hoặc trong cả hai quan hệ trong kết quả của phép nối dù chúng có những bộ liên kết trong quan hệ kia hay không. - Phép kết ngoài để mở rộng phép kết để tránh mất thông tin - Thực hiện phép kết và sau đó thêm vào kết quả của phép kết các bộ của quan hệ mà không phù hợp với các bộ trong quan hệ kia. - Có 3 loại: + Left outer join + Right outer join 49
  50. + Full outer join Phép nối ngoài trái giữ lại mọi bộ trong quan hệ bên trái R trong phép nối. Nếu không có bộ liên kết nào được tìm thấy trong S thì các thuộc tính của S trong kết quả phép nối được “làm đầy” bằng các giá trị null. Ví dụ: In ra danh sách tất cả các học viên và điểm số của các môn học mà học viên đó thi (nếu có) CÂU HỎI - BÀI TẬP Cho lược đồ cơ sở dữ liệu Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) Lop(MALOP,TENLOP, MAKHOA) Khoa(MAKHOA,TENKHOA) Monhoc(MAMH,TENMH,DONVIHT) Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) Ketqua(MASV, MAMH, LANTHI, DIEMTHI) Phancong(MALOP,MAMH,MAGV) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 4. Lập bảng điểm thi lần 1 môn học “869” cho tất cả sinh viên thuộc hai lớp có MALOP là “CĐTH2A” và “CĐTH2B”, danh sách cần: MASV,HOTENSV,DIEMTHI. 5. Lập danh sách các giảng viên đã dạy lớp CĐTH2A, danh sách cần các thông tin: MAGV, HOTENGV,TENKHOA,HOCVI,TENMH. 6. Lập danh sách các môn mà lớp CDTH2A đã học, danh sách cần các thông tin: MAMH,TENMH,DONVIHT,HOTENGV. 7. Lập danh sách những giảng viên đã dạy sinh viên có MASV là “00CDTH189“, danh sách cần MAGV, HOTENGV, HOCVI, CHUYENNGANH, TENKHOA, TENMH 8. Lập danh sách các sinh viên có mã khoa “CNTT” có điểm thi lần 1 môn học “869” lớn hơn hoặc bằng 8, danh sách cần MASV, HOTENSV, DIEMTHI, TENLOP. Bài số 2: Cho lược đồ cơ sở dữ liệu KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) 50
  51. HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 13. Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”, mỗi sản phẩm mua với số lượng từ 10 đến 20. 14. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007. 15. In ra danh sách các sản phẩm (MASP,TENSP) không bán được. 16. In ra danh sách các sản phẩm (MASP,TENSP) không bán được trong năm 2006. 17. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong năm 2006. 18. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất. 19. Tìm số hóa đơn trong năm 2006 đã mua ít nhất tất cả các sản phẩm do Singapore sản xuất. 20. Có bao nhiêu hóa đơn không phải của khách hàng đăng ký thành viên mua? 21. Có bao nhiêu sản phẩm khác nhau được bán ra trong năm 2006. 22. Cho biết trị giá hóa đơn cao nhất, thấp nhất là bao nhiêu ? 23. Trị giá trung bình của tất cả các hóa đơn được bán ra trong năm 2006 là bao nhiêu? 24. Tính doanh thu bán hàng trong năm 2006. 25. Tìm số hóa đơn có trị giá cao nhất trong năm 2006. 26. Tìm họ tên khách hàng đã mua hóa đơn có trị giá cao nhất trong năm 2006. 27. In ra danh sách 3 khách hàng (MAKH, HOTEN) có doanh số cao nhất. 28. In ra danh sách các sản phẩm (MASP, TENSP) có giá bán bằng 1 trong 3 mức giá cao nhất. 29. In ra danh sách các sản phẩm (MASP, TENSP) do “Thai Lan” sản xuất có giá bằng 1 trong 3 mức giá cao nhất (của tất cả các sản phẩm). 30. In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quoc” sản xuất có giá bằng 1 trong 3 mức giá cao nhất (của sản phẩm do “Trung Quoc” sản xuất). 31. * In ra danh sách 3 khách hàng có doanh số cao nhất (sắp xếp theo kiểu xếp hạng). 32. Tính tổng số sản phẩm do “Trung Quoc” sản xuất. 33. Tính tổng số sản phẩm của từng nước sản xuất. 34. Với từng nước sản xuất, tìm giá bán cao nhất, thấp nhất, trung bình của các sản phẩm. 35. Tính doanh thu bán hàng mỗi ngày. 36. Tính tổng số lượng của từng sản phẩm bán ra trong tháng 10/2006. 37. Tính doanh thu bán hàng của từng tháng trong năm 2006. 38. Tìm hóa đơn có mua ít nhất 4 sản phẩm khác nhau. 39. Tìm hóa đơn có mua 3 sản phẩm do “Viet Nam” sản xuất (3 sản phẩm khác nhau). 51
  52. 40. Tìm khách hàng (MAKH, HOTEN) có số lần mua hàng nhiều nhất. 41. Tháng mấy trong năm 2006, doanh số bán hàng cao nhất ? 42. Tìm sản phẩm (MASP, TENSP) có tổng số lượng bán ra thấp nhất trong năm 2006. 43. *Mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất. 44. Tìm nước sản xuất sản xuất ít nhất 3 sản phẩm có giá bán khác nhau. 45. *Trong 10 khách hàng có doanh số cao nhất, tìm khách hàng có số lần mua hàng nhiều nhất. Bài số 3: Cho lược đồ cơ sở dữ liệu với các lược đồ quan hệ như sau: KHACHHANG(MAKH, TEN, DCHI, DTHOAI) NHANVIEN(MANV,TEN, DCHI, DTHOAI, LUONG, LOAINV) LOAIMB(MALOAI, HANGSX) MAYBAY(SOHIEU, MALOAI) CHUYENBAY(MACB, SBDI, SBDEN, GIODI, GIODEN) LICHBAY(NGAYDI, MACB, SOHIEU, MALOAI) DATCHO(MAKH, NGAYDI, MACB) KHANANG(MANV, MALOAI) PHANCONG(MANV, NGAYDI, MACB) Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ: 8. Cho biết các chuyến bay (mã số chuyến bay, ngày đi và tên của phi công) trong đó phi công có mã 1001 được phân công lái. 9. Cho biết thông tin (mã chuyến bay, sân bay đi, giờ đi, giờ đến, ngày đi) của những chuyến bay hạ cánh xuống DEN. Các chuyến bay được liệt kê theo ngày đi giảm dần và sân bay xuất phát (SBDI) tăng dần . 10.Với mỗi phi công, cho biết hãng sản xuất và mã loại máy bay mà phi công này có khả năng bay được. Xuất ra tên phi công, hãng sản xuất và mã loại máy bay. 11. Cho biết mã phi công, tên phi công đã lái máy bay trong chuyến bay mã số 100 vào ngày 11/01/2000. 12. Cho biết mã chuyến bay, mã nhân viên, tên nhân viên được phân công vào chuyến bay xuất phát ngày 10/31/2000 tại sân bay MIA vào lúc 20:30 13. Cho biết thông tin về chuyến bay (mã chuyến bay, số hiệu, mã loại, hãng sản xuất) mà phi công “Quang” đã lái. 14. Cho biết tên của những phi công chưa được phân công lái chuyến bay nào. 15. Cho biết tên khách hàng đã đi chuyến bay trên máy bay của hãng “Boeing” 16. Cho biết mã các chuyến bay chỉ bay với máy bay số hiệu 10 và mã loại B747. GOM NHÓM + HÀM 17.Với mỗi sân bay (SBDEN), cho biết số lượng chuyến bay hạ cánh xuống sân bay đó. Kết quả được sắp xếp theo thứ tự tăng dần của sân bay đến. 18.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát từ sân bay đó, sắp xếp theo thứ tự tăng dần của sân bay xuất phát. 19.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát theo từng ngày. Xuất ra mã sân bay đi, ngày và số lượng. 52
  53. 20.Với mỗi sân bay (SBDEN), cho biết số lượng chuyến bay hạ cánh theo từng ngày. Xuất ra mã sân bay đến, ngày và số lượng. 21.Với mỗi lịch bay, cho biết mã chuyến bay, ngày đi cùng với số lượng nhân viên không phải là phi công của chuyến bay đó. 22.Số lượng chuyến bay xuất phát từ sân bay MIA vào ngày 11/01/2000. 23.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, số lượng nhân viên được phân công trên chuyến bay đó, sắp theo thứ tự giảm dần của số lượng. 24.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, cùng với số lượng hành khách đã đặt chỗ của chuyến bay đó, sắp theo thứ tự giảm dần của số lượng. 25.Với mỗi chuyến bay, cho biết mã chuyến bay, ngày đi, tổng lương của phi hành đoàn (các nhân viên được phân công trong chuyến bay), sắp xếp theo thứ tự tăng dần của tổng lương. 26. Cho biết lương trung bình của các nhân viên không phải là phi công. 27. Cho biết mức lương trung bình của các phi công. 28.Với mỗi loại máy bay, cho biết số lượng chuyến bay đã bay trên loại máy bay đó hạ cánh xuống sân bay ORD. Xuất ra mã loại máy bay, số lượng chuyến bay. 29. Cho biết sân bay (SBDI) và số lượng chuyến bay có nhiều hơn 2 chuyến bay xuất phát trong khoảng 10 giờ đến 22 giờ. 30. Cho biết tên phi công được phân công vào ít nhất 2 chuyến bay trong cùng một ngày. 31. Cho biết mã chuyến bay và ngày đi của những chuyến bay có ít hơn 3 hành khách đặt chỗ. 32. Cho biết số hiệu máy bay và loại máy bay mà phi công có mã 1001 được phân công lái trên 2 lần. 33.Với mỗi hãng sản xuất, cho biết số lượng loại máy bay mà hãng đó đã sản xuất. Xuất ra hãng sản xuất và số lượng. TRUY VẤN LỒNG + HÀM 34. Cho biết hãng sản xuất, mã loại và số hiệu của máy bay đã được sử dụng nhiều nhất. 35. Cho biết tên nhân viên được phân công đi nhiều chuyến bay nhất. 36. Cho biết thông tin của phi công (tên, địa chỉ, điện thoại) lái nhiều chuyến bay nhất. 37. Cho biết sân bay (SBDEN) và số lượng chuyến bay của sân bay có ít chuyến bay đáp xuống nhất. 38. Cho biết sân bay (SBDI) và số lượng chuyến bay của sân bay có nhiều chuyến bay xuất phát nhất. 39. Cho biết tên, địa chỉ, và điện thoại của khách hàng đã đi trên nhiều chuyến bay nhất. 40. Cho biết mã số, tên và lương của các phi công có khả năng lái nhiều loại máy bay nhất. 41. Cho biết thông tin (mã nhân viên, tên, lương) của nhân viên có mức lương cao nhất. 42. Cho biết tên, địa chỉ của các nhân viên có lương cao nhất trong phi hành đoàn (các nhân viên được phân công trong một chuyến bay) mà người đó tham gia. 53
  54. 43. Cho biết mã chuyến bay, giờ đi và giờ đến của chuyến bay bay sớm nhất trong ngày. 44. Cho biết mã chuyến bay có thời gian bay dài nhất. Xuất ra mã chuyến bay và thời gian bay (tính bằng phút). 45. Cho biết mã chuyến bay có thời gian bay ít nhất. Xuất ra mã chuyến bay và thời gian bay. 46. Cho biết mã chuyến bay và ngày đi của những chuyến bay bay trên loại máy bay B747 nhiều nhất. 47.Với mỗi chuyến bay có trên 3 hành khách, cho biết mã chuyến bay và số lượng nhân viên trên chuyến bay đó. Xuất ra mã chuyến bay và số lượng nhân viên. 48.Với mỗi loại nhân viên có tổng lương trên 600000, cho biết số lượng nhân viên trong từng loại nhân viên đó. Xuất ra loại nhân viên, và số lượng nhân viên tương ứng. 49.Với mỗi chuyến bay có trên 3 nhân viên, cho biết mã chuyến bay và số lượng khách hàng đã đặt chỗ trên chuyến bay đó. 50.Với mỗi loại máy bay có nhiều hơn một chiếc, cho biết số lượng chuyến bay đã được bố trí bay bằng loại máy bay đó. Xuất ra mã loại và số lượng. PHÉP CHIA 51. Cho biết mã những chuyến bay đã bay tất cả các máy bay của hãng “Boeing”. 52. Cho biết mã và tên phi công có khả năng lái tất cả các máy bay của hãng “Airbus”. 53. Cho biết tên nhân viên (không phải là phi công) được phân công bay vào tất cả các chuyến bay có mã 100. 54. Cho biết ngày đi nào mà có tất cả các loại máy bay của hãng “Boeing” tham gia. 55. Cho biết loại máy bay của hãng “Boeing” nào có tham gia vào tất cả các ngày đi. 56. Cho biết mã và tên các khách hàng có đặt chổ trong tất cả các ngày từ 31/10/2000 đến 1/1/2000 57. Cho biết mã và tên phi công không có khả năng lái được tất cả các máy bay của hãng “Airbus” 58. Cho biết sân bay nào đã có tất cả các loại máy bay của hãng “Boeing” xuất phát Bài số 4: PhongThi (SoPT, Diachi, SucChua) ThiSinh(SoBD, Hoten, NgaySinh, DiaChi, GioiTinh, SoPT) MonThi (MaMT, Buoi, NgayThi) KetQua(,SoBD, MaMT , DiemThi, VangThi) 1. Liệt kê tất cả các thí sinh bao gồm: Sobd, HoTen, NgaySinh, Diachi, GiớiTinh) 2. Liệt kê các thi sinh là Nữ ở BRVT 3. Liệt kê tất cả các phòng thi ở cơ sở 2 và có sức chứa >30 4. Liệt kê môn thi có MaMT là ‘CSDL’ và MaMT là ‘LTCB’ thi trong buổi sáng 6. Liệt kê Sobd có điểm đậu 54
  55. 7. In ra HoTen, SoBD học viên có năm sinh 2003 và 2004 8. In ra học viên có tên “Tran Anh Tuan” hoặc ở BRVT 9. In ra các số báo danh có điểm thi từ 5 đến 10 10. In ra các số báo đanh có điểm thi từ 5 đến 10 của môn thi có MaMT=‘CSDL’ 11. In ra số báo danh, họ tên của các thí sinh thi ở những phòng thi có sức chứa từ 30 người chở lên 12. In ra kết quả thi ( Sobd, hoten, tenmonthi, diemthi) của những thí sinh thuộc phòng thi có sức chứa từ 30 người chở lên 13. Tìm họ tên các thí sinh đạt điểm 9, 10 môn CSDL hoặc điểm 9, 10 môn ‘LTCB’ 14. In ra họ tên những thí sinh thuộc phòng thi=‘101’ hoặc họ tên những thí sinh đạt điểm 10 môn CSDL 15. Tìm những thí sinh đạt điểm 10 môn CSDL hoặc điểm 10 môn LTCB 16. Tìm họ tên, số báo danh của những thí sinh vắng thi môn ‘CSDL’ 17. Tìm môn thi mà tất cả các thí sinh thi đều đậu 18. Tìm tất cả các thi sinh thi tất cả các môn đều đậu 19. In ra kết quả của các thí sinh thuộc phòng thi có số phòng thi = ‘101’, chỉ in ra 20. In ra kết quả thi (SoBD, HoTen, TenMT, DiemThi) của những thí sinh thuộc phòng thi có sức chứa từ 30 người trở lên. Những môn thi trong ngày 3/3/1019 và những thí sinh có đi thi (VangThi=0) 55
  56. BÀI 6: XÁC ĐỊNH RÀNG BUỘC TOÀN VẸN CÓ BỐI CẢNH MỘT QUAN HỆ Mã bài: 11.06 Giới thiệu: Ràng buộc toàn vẹn (Integrity Constraint / Rule viết tắt là: RBTV) và kiểm tra sự vi phạm ràng buộc toàn vẹn là hai trong những vấn đề rất quan trọng trong quá trình phân tích, thiết kế và khai thác CSDL. Trong quá trình phân tích - thiết kế cơ sở dữ liệu, nếu không quan tâm đúng mức đến những vấn đề trên, thì có thể dẫn đến những hậu quả rất nghiêm trọng về tính an toàn và toàn vẹn dữ liệu, đặc biệt trong những CSDL tương đối lớn. Bài này sẽ giới thiệu một cách tổng quan về: ràng buộc toàn vẹn trên bối cảnh 1 quan hệ. Qua đó, giúp người học phát hiện càng đầy đủ các ràng buộc toàn vẹn càng tốt và mô tả chúng một cách chính xác trong hồ sơ phân tích thiết kế - đó là một việc làm rất quan trọng Mục tiêu: - Trình bày được khái niệm RBTV và các yếu tố của RBTV - Phân loại được các loại ràng buộc toàn vẹn trên 1 quan hệ. - Lấy được ví dụ trong thực tế để minh họa. - Phát biểu được các RBTV trong bài tập cụ thể. Nội dung chính: 1. Khái niệm và các yếu tố của ràng buộc toàn vẹn 1.1. Khái niệm Ràng buộc toàn vẹn là một điều kiện bất biến không được vi phạm trong một cơ sở dữ liệu. Trong mỗi cơ sở dữ liệu luôn tồn tại nhiều mối liên hệ giữa các thuộc tính, giữa các bộ; sự liên hệ này có thể xảy ra trong cùng một quan hệ hoặc trong các quan hệ của một lược đồ cơ sở dữ liệu. Các mối liên hệ này là những điều kiện bất biến mà tất cả các bộ của những quan hệ có liên quan trong cơ sở dữ liệu đều phải thoả mãn ở mọi thời điểm. Những điều kiện bất biến đó được gọi là ràng buộc toàn vẹn Trong thực tế ràng buộc toàn vẹn là các quy tắc quản lý được áp đặt trên các đối tượng của thế giới thực. Chẳng hạn mỗi sinh viên phải có một mã sinh viên duy nhất, hai thí sinh dự thi vào một trường phải có số báo danh khác nhau, một sinh viên dự thi một môn học không quá 3 lần, Trong một cơ sở dữ liệu, ràng buộc toàn vẹn được xem như một công cụ để diễn đạt ngữ nghĩa của cơ sở dữ liệu đó. Trong suốt quá trình khai thác cơ sở dữ liệu, các RBTV đều phải được thỏa mãn ở bất kỳ thời điểm nào nhằm đảm bảo cho cơ sở dữ liệu luôn luôn ở trạng thái an toàn và nhất quán về dữ liệu. Các hệ quản trị cơ sở dữ liệu thường có các cơ chế tự động kiểm tra các RBTV về miền giá trị của Khóa nội, Khóa ngoại, giá trị NOT NULL qua khai báo cấu trúc các bảng (mô hình dữ liệu của quan hệ) hoặc thông qua những thủ tục kiểm 56
  57. tra và xử lý vi phạm RBTV do những người phân tích - thiết kế cài đặt. Việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau: -Kiểm tra ngay khi thực hiện một thao tác cập nhật cơ sở dữ liệu (thêm, sửa, xóa). Thao tác cập nhật chỉ được xem là hợp lệ nếu như nó không vi phạm bất cứ một RBTV nào, nghĩa là nó không làm mất tính toàn vẹn dữ liệu của cơ sở dữ liệu. Nếu vi phạm RBTV, thao tác cập nhật bị coi là không hợp lệ và sẽ bị hệ thống hủy bỏ (hoặc có một xử lý thích hợp nào đó). -Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra RBTV được tiến hành một cách độc lập đối với thao tác cập nhật dữ liệu. Đối với những trường hợp vi phạm RBTV, hệ thống sẽ có những xử lý ngầm định hoặc yều cầu người sử dụng xử lý những sai sót một cách tường minh. 1.2. Các yếu tố của ràng buộc toàn vẹn. 1.2.1. Nội dung ( Điều kiện) - Mô tả chặt chẽ ý nghĩa của ràng buộc toàn vẹn. Nội dung được phát biểu bằng ngôn ngữ tự nhiên hoặc ngôn ngữ hình thức (ngôn ngữ tân từ, đại số quan hệ, mã giả). - Ngôn ngữ tự nhiên: dễ hiểu, nhưng không chặt chẽ, logic. - Ngôn ngữ hình thức: chặt chẽ, cô đọng. Ví dụ: Giả sử có một CSDL quản lý hóa đơn bán hàng gồm các bảng sau: HÓAĐƠN (Số-hóa-đơn, Số-chủng-loại-mặt-hàng, Tổng-trị-giá). DM_HÀNG (Mã-hàng, Tên-hàng, Đơn-vị-tính). CHITIẾT-HĐ (Số-hóa-đơn, Mã-hàng, Số-lượng-đặt, Đơn-giá, Trị-giá). Điều kiện của ràng buộc toàn vẹn có thể biểu diễn như sau: R1 : “Mỗi hóa đơn có một Số hóa đơn riêng biệt, không trùng với hóa đơn khác”: hd1,hd2 HÓAĐƠN: Nếu hd1 hd2 thì hd1. Số-hóa-đơn hd2.Số-hóa-đơn 1.2.2. Bối cảnh - Là tập các quan hệ khi thao tác trên những quan hệ đó có khả năng làm cho ràng buộc bị vi phạm. - Đó là những quan hệ có thể vi phạm ràng buộc toàn vẹn khi thực hiện các thao tác thêm, xoá, sửa. Ví dụ: Bối cảnh của ràng buộc toàn vẹn R1 chỉ là một quan hệ HÓAĐƠN; 1.2.3. Bảng tầm ảnh hưởng - Nhằm xác định khi nào cần tiến hành kiểm tra ràng buộc toàn vẹn. Thao tác nào thực hiện có thể vi phạm ràng buộc toàn vẹn. - Phạm vi ảnh hưởng của một ràng buộc toàn vẹn được biểu diễn bằng bảng 2 chiều gọi là bảng tầm ảnh hưởng. Một số quy định chung: - Những thuộc tính là khóa chính không được sửa giá trị. - Trước khi xét thao tác thực hiện có thể vi phạm ràng buộc hay không thì cơ sở dữ liệu phải thỏa mãn ràng buộc toàn vẹn trước. - Thêm xét trên một bộ của quan hệ. Sửa và xóa xét trên từng thuộc tính của quan hệ. 57
  58. + : Ảnh hưởng đến RBTV - : Không ảnh hưởng. + (A): Ảnh hưởng khi sửa thuộc tính A. - (*): Không ảnh hưởng do thao tác không thực hiện được. Ví dụ: Bảng tầm ảnh hưởng của ràng buộc toàn vẹn R1 2. Ràng buộc miền giá trị trên bối cảnh một quan hệ Là một tập các giá trị mà thuộc tính có thể nhận được. Ví dụ: Cho Lược đồ CSDL quản lý giáo vụ như sau: HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP) LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN) KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA) MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA) DIEUKIEN (MAMH, MAMH_TRUOC) GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH, NGVL,HESO, MUCLUONG, MAKHOA) GIANGDAY(MALOP, MAMH, MAGV, HOCKY, NAM, TUNGAY, DENNGAY ) KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA) Ràng buộc miền giá trị R1: Điểm của học viên chỉ có thể từ 1→ 10 + Nội dung: hv KETQUATHI: hv.DIEM {1 10} + Bối cảnh: quan hệ KETQUATHI + Bảng tầm ảnh hưởng: R1 Thêm Xóa Sửa KETQUATHI + - +(Diem) 3. Ràng buộc toàn vẹn liên thuộc tính Là ràng buộc giữa các thuộc tính với nhau trong cùng một bộ của quan hệ. R2: Ngày bắt đầu (TUNGAY) giảng dạy một môn học cho một lớp luôn nhỏ hơn ngày kết thúc (DENNGAY). + Nội dung : gd GIANGDAY: gd.TUNGAY < gd.DENNGAY + Bối cảnh: quan hệ GIANGDAY 58
  59. + Bảng tầm ảnh hưởng: 4. Ràng buộc liên bộ - liên thuộc tính trên bối cảnh 1 quan hệ Là ràng buộc trên cũng nhiều bộ của quan hệ có thể liên quan đến nhiều thuộc tính. Ví dụ: R3: Tất cả các học viên phải có mã số phân biệt với nhau + Nội dung: h1,h2 HOCVIEN: Nếu h1 h2 thì h1.Mahv h2.Mahv + Bối cảnh: quan hệ HOCVIEN + Bảng tầm ảnh hưởng: R4: Các giáo viên có cùng học vị, cùng hệ số lương thì mức lương là như nhau. + Nội dung: gv1,gv2 GIAOVIEN: Nếu (gv1.Hocvi=gv2.Hocvi) Λ (gv1.Heso=gv2.Heso) Thì gv.Mucluong=gv.Mucluong + Bối cảnh: quan hệ GIAOVIEN + Bảng tầm ảnh hưởng: CÂU HỎI - BÀI TẬP 1. Nêu khái niệm và các đặc trưng của Ràng buộc toàn vẹn. 2. Nêu các Ràng buộc toàn vẹn có bối cảnh trên 1 quan hệ? Cho ví dụ? 3. Tìm tất cả các ràng buộc toàn vẹn có bối cảnh 1 quan hệ trong Lược đồ CSDL quản lý giáo vụ trên. Bài tập số 1: Cho lược đồ quan hệ: KHACHTV (MAKH,HOTEN, DCHI,SODT,NGSINH,DOANHSO,NGGN) NHANVIEN (MANV,HOTEN,NGSINH,NGVL,HESO,MUCLUONG) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) Nêu nội dung, bối cảnh và bảng tầm ảnh hưởng: 1. Mỗi hóa đơn có một số hóa đơn riêng biệt, không trùng với hóa đơn khác 2. Số chủng loại sản phẩm = số bộ CTHD có cùng số hóa đơn 59
  60. 3. Tổng các giá trị mặt hàng trong CTHD có cùng số hóa (SOHD) đơn phải bằng tổng trị giá (TONGTRIGIA) trong HOADON 4. Mỗi bộ của CTHD phải có MAMH thuộc về DANHMUCMH 5. Tất cả các sản phẩm có giá từ 1.000 đồng trở lên 6. Ngày gia nhập của khách hàng thành viên phải lớn hơn ngày sinh của người đó. 7. Các nhân viên có cùng hệ số lương thì phải cùng mức lương 8. Ngày nhân viên bán hàng phải lớn hơn hoặc bằng ngày đầu tiên vào làm của nhân viên đó. 9. Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn. 10. Doanh số của một khách hàng thành viên là tổng các trị giá hóa đơn mà khách hàng thành viên đó đã mua 60
  61. BÀI 7: XÁC ĐỊNH RÀNG BUỘC TOÀN VẸN CÓ BỐI CẢNH NHIỀU QUAN HỆ Mã bài: 11.07 Giới thiệu: Bài này sẽ giới thiệu một cách tổng quan về: ràng buộc toàn vẹn trên bối cảnh nhiều quan hệ. Qua đó, giúp người học phát hiện càng đầy đủ các ràng buộc toàn vẹn càng tốt và mô tả chúng một cách chính xác trong hồ sơ phân tích thiết kế - đó là một việc làm rất quan trọng Mục tiêu: - Trình bày được khái niệm RBTV và các yếu tố của RBTV - Phân loại được các loại ràng buộc toàn vẹn trên nhiều quan hệ. - Lấy được ví dụ trong thực tế để minh họa. - Phát biểu được các RBTV trong bài tập cụ thể. Nội dung chính: 1. Ràng buộc toàn vẹn tham chiếu Là ràng buộc quy định giá trị thuộc tính trong một bộ của quan hệ R (tập thuộc tính này gọi là khoá ngoại), phải phụ thuộc vào sự tồn tại của một bộ trong quan hệ S (tập thuộc tính này là khoá chính trong quan hệ S). RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc khóa ngoại. Ví dụ: Cho Lược đồ CSDL quản lý giáo vụ như sau: HOCVIEN (MAHV, HO, TEN, NGSINH, GIOITINH, NOISINH, MALOP) LOP (MALOP, TENLOP, TRGLOP, SISO, MAGVCN) KHOA (MAKHOA, TENKHOA, NGTLAP, TRGKHOA) MONHOC (MAMH, TENMH, TCLT, TCTH, MAKHOA) DIEUKIEN (MAMH, MAMH_TRUOC) GIAOVIEN(MAGV,HOTEN,HOCVI,HOCHAM,GIOITINH,NGSINH, NGVL,HESO, MUCLUONG, MAKHOA) GIANGDAY(MALOP, MAMH, MAGV, HOCKY, NAM, TUNGAY, DENNGAY ) KETQUATHI (MAHV, MAMH, LANTHI, NGTHI, DIEM, KQUA) R5: Học viên thi một môn học nào đó thì môn học đó phải có trong danh sách các môn học + Nội dung: k KETQUATHI, m MONHOC: k.Mamh = m.Mamh Hoặc: KETQUATHI[Mamh]  MONHOC[Mamh] + Bối cảnh: quan hệ KETQUATHI, MONHOC + Bảng tầm ảnh hưởng: 61
  62. 2. Ràng buộc toàn vẹn liên thuộc tính. Là ràng buộc giữa các thuộc tính trên những quan hệ khác nhau Ví dụ: R6: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặc bằng ngày giáo viên đó vào làm. + Nội dung: gd GIANGDAY Nếu gv GIAOVIEN: gd.Magv = gv.Magv thì gv.NGVL gd.TUNGAY + Bối cảnh: GIANGDAY, GIAOVIEN + Bảng tầm ảnh hưởng: R7: Ngày thi một môn học phải lớn hơn ngày kết thúc học môn học đó. + Nội dung: kq KETQUATHI Nếu gd GIANGDAY, hv HOCVIEN: (gd.Malop=hv.Malop)(kq.Mamh=gd.Mamh) Thì gd.Denngay < kq.Ngthi + Bối cảnh: GIANGDAY, HOCVIEN, KETQUATHI + Bảng tầm ảnh hưởng: 3. Ràng buộc toàn vẹn do thuộc tính tổng hợp. - Là ràng buộc giữa các thuộc tính, các bộ trên những quan hệ khác nhau. - Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị của các thuộc tính khác, các bộ khác. Ví dụ 1: R8: Sỉ số của một lớp là số lượng học viên thuộc lớp đó + Nội dung: lp LOP, lp.Siso = Count(hv HOCVIEN: hv.Malop = lp.Malop)(*) 62
  63. + Bối cảnh: quan hệ LOP, HOCVIEN + Bảng tầm ảnh hưởng: Ví dụ 2: Cho lược đồ CSDL quản lý bán hàng như sau: SANPHAM(Masp,Tensp, Nuocsx, Gia) KHACHHANG(Makh, Hoten, Doanhso) HOADON(Sohd, Nghd,Makh,Trigia) CTHD(Sohd,Masp,Soluong,Gia) Ràng buộc toàn vẹn do thuộc tính tổng hợp: Doanh số của một khách hàng bằng tổng trị giá các hoá đơn mà khách hàng đó đã mua + Nội dung: kh KHACHHANG, kh.Doanhso = (hd HOADON: hd.Makh=kh.Makh)(hd.Trigia) + Bối cảnh: KHACHHANG, HOADON + Bảng tầm ảnh hưởng: CÂU HỎI – BÀI TẬP 1. Nêu các Ràng buộc toàn vẹn có bối cảnh trên nhiều quan hệ? Cho ví dụ? 2. Tìm tất cả các ràng buộc toàn vẹn có bối cảnh nhiều quan hệ trong Lược đồ CSDL quản lý giáo vụ và lược đồ CSDL quản lý bán hàng trên. Bài tập: Bài số 1: Cho lược đồ CSDL Quản lý bán hàng KHACHTV (MAKH,HOTEN, DCHI,SODT,NGSINH,DOANHSO,NGGN) NHANVIEN (MANV,HOTEN,NGSINH,NGVL,HESO,MUCLUONG) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) 1. Mỗi hóa đơn có một số hóa đơn riêng biệt, không trùng với hóa đơn khác 2. Số chủng loại mặt hàng = số bộ CTHD có cùng số hóa đơn 3. Tổng các giá trị mặt hàng trong CTHD có cùng số hóa (SOHD) đơn phải bằng tổng trị giá (TONGTRIGIA) trong HOADON 4. Mỗi bộ của CTHD phải có MAMH thuộc về DANHMUCMH 5. Tất cả các sản phẩm có giá từ 1.000 đồng trở lên 63
  64. 6. Ngày gia nhập của khách hàng thành viên phải lớn hơn ngày sinh của người đó. 7. Các nhân viên có cùng hệ số lương thì phải cùng mức lương 8. Ngày nhân viên bán hàng phải lớn hơn hoặc bằng ngày đầu tiên vào làm của nhân viên đó. 9. Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn. 10. Doanh số của một khách hàng thành viên là tổng các trị giá hóa đơn mà khách hàng thành viên đó đã mua 64
  65. BÀI 8: PHỤ THUỘC HÀM VÀ HỆ TIÊN ĐỀ AMSTRONG CHO CÁC PHỤ THUỘC HÀM Mã bài: 11.08 Giới thiệu: Phụ thuộc hàm (functional dependancy - FD) là một công cụ dùng để biểu diễn một cách hình thức các ràng buộc toàn vẹn. Phương pháp biểu diễn này có rất nhiều ưu điểm, và đây là một công cực kỳ quan trọng, gắn chặt với lý thuyết thiết kế cơ sở dữ liệu. Trong bài này chúng ta sẽ định nghĩa hình thức khái niệm này và cách sử dụng. Mục tiêu: - Trình bày được khái niệm phụ thuộc hàm. - Trình bày được các luật của hệ tiên đề Amstrong. - Lấy được ví dụ trong thực tế để minh họa. - Áp dụng được các luật của hệ tiên đề Amstrong trong bài tập cụ thể. Nội dung chính: 1. Định nghĩa phụ thuộc hàm Cho lược đồ quan hệ Q{A1,A2, ,An}. X,Y là hai tập con khác rỗng của Q+. Ta nói X xác định Y (hay Y phụ thuộc hàm vào X) nếu với r là một quan hệ nào đó trên Q, t1,t2 ∈ r mà t1.X = t2.X ⇒ t1.Y = t2.Y (nghĩa là không thể tồn tại hai bộ trong r giống nhau ở các thuộc tính trong tập X mà lại khác nhau ở một hay nhiều thuộc tính nào đó trong tập Y). Khi đó ta ký hiệu là X → Y. Như vậy, X xác định hàm Y trong lược đồ quan hệ R khi và chỉ khi nếu hai bộ của r(R) bằng nhau trên các giá trị của X thì chúng nhất thiết phải bằng nhau trên các giá trị của Y. Ta có các nhận xét sau: Nếu có một ràng buộc trên các trạng thái của R là chỉ có một bộ giá trị duy nhất của X trong mọi thể hiện quan hệ r(R) thì điều đó kéo theo X Y với mọi tập con các thuộc tính Y của R. Nếu X Y thì không thể nói gì về Y X. Phụ thuộc hàm được viết tắt là FD (functional dependency). Tập thuộc tính X được gọi là vế trái của FD, tập thuộc tính Y được gọi là vế phải của FD. Chẳng hạn như phụ thuộc hàm của thuộc tính họ tên của sinh viên (HOTENSV) vào mã số sinh viên (MASV) và ta có thể diễn tả bằng phụ thuộc MASV→ HOTENSV. MaSV xác định HoTenSV Phụ thuộc hàm X → X được gọi là phụ thuộc hàm hiển nhiên. người ta thường dùng F để chỉ tập các phụ thuộc hàm định nghĩa trên Q. Vì Q hữu hạn nên F cũng hữu hạn, ta có thể đánh số các phụ thuộc hàm của F là f1,f2, ,fm. Quy ước: chỉ cần mô tả các phụ thuộc hàm không hiển nhiên trong tập F, các phụ thuộc hàm hiển nhiên được ngầm hiểu là đã có trong F. Ví dụ: Cho lược dồ quan hệ Q(ABCDE), r là quan hệ xác định trên Q được cho như sau: 65