Nhập môn Cơ sở dữ liệu - Chương 1: Tổng quan về cơ sở dữ liệu

Tài liệu Nhập môn Cơ sở dữ liệu - Chương 1: Tổng quan về cơ sở dữ liệu: Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 1 1 khai.hq@ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Tham khảo tài liệu [A]: Chapter 1: Introduction to Databases 2 khai.hq@ou.edu.vn Nội dung chương 1 (1) 1. Một số ví dụ sử dụng hệ thống CSDL 2. Đặc điểm của hệ thống lưu DL theo file 3. Nhược điểm của hệ thống lưu DL theo file 4. Ý nghĩa của thuật ngữ CSDL (database) 5. Ý nghĩa của thuật ngữ hệ quản trị CSDL (DBMS) (DBMS: Database Management System) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 2 3 khai.hq@ou.edu.vn Nội dung chương 1 (2) 6. Các chức năng chính của DBMS 7. Các thành phần chính của môi trường DBMS 8. Vai trò của con người trong môi trường DBMS 9. Lịch sử phát triển của các hệ DBMS 10. Ưu điểm và nhược điểm của DBMS 4 khai.hq@ou.edu.vn Ví dụ về các ứng dụng CSDL ‹Mua bán ở siêu thị ‹Mua bán dùng thẻ tín dụng ‹ Đặt vé đi nghỉ mát tại trạm giao dịch du lịch ‹ Đọc, mượn sá...

pdf188 trang | Chia sẻ: Khủng Long | Lượt xem: 1146 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Nhập môn Cơ sở dữ liệu - Chương 1: Tổng quan về cơ sở dữ liệu, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 1 1 khai.hq@ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Tham khảo tài liệu [A]: Chapter 1: Introduction to Databases 2 khai.hq@ou.edu.vn Nội dung chương 1 (1) 1. Một số ví dụ sử dụng hệ thống CSDL 2. Đặc điểm của hệ thống lưu DL theo file 3. Nhược điểm của hệ thống lưu DL theo file 4. Ý nghĩa của thuật ngữ CSDL (database) 5. Ý nghĩa của thuật ngữ hệ quản trị CSDL (DBMS) (DBMS: Database Management System) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 2 3 khai.hq@ou.edu.vn Nội dung chương 1 (2) 6. Các chức năng chính của DBMS 7. Các thành phần chính của môi trường DBMS 8. Vai trò của con người trong môi trường DBMS 9. Lịch sử phát triển của các hệ DBMS 10. Ưu điểm và nhược điểm của DBMS 4 khai.hq@ou.edu.vn Ví dụ về các ứng dụng CSDL ‹Mua bán ở siêu thị ‹Mua bán dùng thẻ tín dụng ‹ Đặt vé đi nghỉ mát tại trạm giao dịch du lịch ‹ Đọc, mượn sách tại thư viện ‹ Thanh lý hợp đồng bảo hiểm ‹ Sử dụng mạng internet ‹Học tập, nghiên cứu tại trường đại học Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 3 5 khai.hq@ou.edu.vn Hệ thống lưu DL theo file (File-based System) ‹ Là tập hợp một số chương trình ứng dụng để phục vụ cho các người dùng cuối (end users), ví dụ chương trình giúp người dùng in ra các bảng báo cáo ‹Mỗi chương trình quản lý các dữ liệu có thiết kế riêng cho chương trình đó 6 khai.hq@ou.edu.vn Ví dụ về hệ thống lưu DL theo file: Hệ thống Quản lý cho thuê nhà (gồm 2 chương trình) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 4 7 khai.hq@ou.edu.vn Hạn chế của phương pháp lưu DL theo file (1) 1. Dữ liệu riêng rẽ và cô lập – Mỗi chương trình sử dụng dữ liệu của riêng mình – Người dùng một chương trình khó thấy được những thông tin có ích cho mình khi thông tin này nằm trong dữ liệu của các chương trình khác 2. Dữ liệu bị trùng lắp – Các dữ liệu giống nhau có thể được lưu ở các chương trình khác nhau -> bị dư thừa DL – Các dữ liệu giống nhau có thể được lưu không cùng giá trị, hay không cùng format -> bị mâu thuẫn DL 8 khai.hq@ou.edu.vn Hạn chế của phương pháp lưu DL theo file (2) 3. Dữ liệu lệ thuộc vào chương trình – Cấu trúc của file lưu DL do code của chương trình tạo ra 4. Chương trình lệ thuộc dữ liệu (không tương thích các format file DL khác nhau) – Các chương trình được viết bằng các ngôn ngữ LT khác nhau nên không thể dễ dàng truy xuất các file DL của các chương trình khác 5. Chức năng của chương trình là cố định, không linh hoạt – Các chương trình được viết theo các chức năng định sẳn, nếu có yêu cầu chức năng nào mới thì phải viết một chương trình mới Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 5 9 khai.hq@ou.edu.vn Phương pháp lưu dữ liệu bằng CSDL ‹ Lý do phát sinh phương pháp này: – Không nên đưa việc định nghĩa DL vào chương trình – Nên lưu DL riêng và không phụ thuộc vào chương trình – Nên có sự kiểm soát khi truy xuất và xử lý DL, và việc kiểm soát này không nên đặt trong một chương trình ‹Kết quả: – Hệ quản trị CSDL (DBMS) 10 khai.hq@ou.edu.vn Cơ sở dữ liệu (Database) ‹ Là tập hợp có tính chia sẽ của các DL có quan hệ logic với nhau (và sự miêu tả của các DL này), được thiết kế để đáp ứng nhu cầu về thông tin cho một tổ chức (Shared collection of logically related data (and a description of this data), designed to meet the information needs of an organization) ‹ System catalog (metadata): cung cấp thông tin miêu tả DL, giúp cho chương trình và DL có thể độc lập với nhau ‹ Các DL quan hệ logic với nhau bao gồm: các thực thể, các thuộc tính, và các mối quan hệ của các thông tin trong một tổ chức Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 6 11 khai.hq@ou.edu.vn Hệ quản trị CSDL (DBMS) ‹ Là một hệ thống phần mềm cho phép ngưới dùng có thể định nghĩa, tạo, và duy trì CSDL, cho phép truy xuất CSDL theo cách có kiểm soát 12 khai.hq@ou.edu.vn Ví dụ về hệ quản trị CSDL (DBMS) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 7 13 khai.hq@ou.edu.vn Phương pháp lưu dữ liệu bằng CSDL ‹ Ngôn ngữ định nghĩa dữ liệu (DDL: Data definition language) – Cho phép đặc tả kiểu DL, cấu trúc DL và ràng buộc DL – Tất cả các đặc tả DL được lưu trong CSDL ‹ Ngôn ngữ thao tác dữ liệu (DML: Data manipulation language). – Là công cụ để truy vấn DL 14 khai.hq@ou.edu.vn Phương pháp lưu dữ liệu bằng CSDL ‹ Việc truy xuất CSDL có kiểm soát có thể bao gồm các hệ thống sau: – Hệ thống bảo mật DL – Hệ thống nhất quán DL – Hệ thống kiểm soát đồng thời – Hệ thống kiểm soát việc phục hồi DL – Bảng ghi quyền truy xuất của các users ‹ Dùng cơ chế khung nhìn dữ liệu (view mechanism) – Cung cấp cho người dùng chính xác các DL mà người dùng đang cần Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 8 15 khai.hq@ou.edu.vn Khung nhìn dữ liệu (View) (1) ‹ Cho phép mỗi user có cái nhìn riêng về CSDL ‹Khung nhìn dữ liệu được xem là một phần cơ bản của CSDL 16 khai.hq@ou.edu.vn Khung nhìn dữ liệu (View) (2) ‹Lợi ích của việc dùng view: – Làm giảm sự phức tạp của CSDL – Cung cấp thêm một mức độ an toàn – Cung cấp một cơ chế tùy biến để có thể thay đổi cách trình bày CSDL – Giúp ta có một cái nhìn không thay đổi đối với cấu trúc của một CSDL, cho dù bản thân CSDL đó có thể bị thay đổi Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 9 17 khai.hq@ou.edu.vn Các thành phần của môi trường dùng DBMS (1) 18 khai.hq@ou.edu.vn Các thành phần của môi trường dùng DBMS (2) ‹ Phần cứng (Hardware) – Có thể là một máy PC hay là một mạng máy tính ‹ Phần mềm (Software) – Hệ DBMS, hệ điều hành, phần mềm mạng (nếu cần) và các chương trình ứng dụng ‹ Dữ liệu (Data) – Là DL được dùng và sự miêu tả về DL đó (được gọi là lược đồ DL (schema)) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 10 19 khai.hq@ou.edu.vn Các thành phần của môi trường dùng DBMS (3) ‹ Các thủ tục (Procedures) – Tài liệu hướng dẫn và các qui tắc được áp dụng khi thiết kế CSDL, sử dụng CSDL và DBMS ‹ Người dùng (People) 20 khai.hq@ou.edu.vn Vai trò của con người trong môi trường DBMS ‹ Người quản trị dữ liệu (Data Administrator (DA)) ‹ Người quản trị CSDL (Database Administrator (DBA)) ‹ Người thiết kế CSDL (Database Designers) Mức logic và vật lý (Logical and Physical) ‹ Người lập trình ứng dụng (Application Programmers) ‹ Người sử dụng chương trình (End Users) Mức cơ bản và mức thành thạo (naive and sophisticated) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 11 21 khai.hq@ou.edu.vn Lịch sử các hệ thống cơ sở dữ liệu ‹ Thế hệ đầu tiên (First generation) – Hệ thống CSDL phân cấp (Hierarchical) – Hệ thống CSDL mạng (Network) ‹ Thế hệ thứ hai (Second generation) – Hệ thống CSDL quan hệ (Relational) ‹ Thế hệ thứ ba (Third generation) – Hệ thống CSDL quan hệ - đối tượng (Object Relational) – Hệ thống CSDL hướng đối tượng (Object-Oriented) 22 khai.hq@ou.edu.vn Ưu điểm của DBMS (1) ‹ Có kiểm soát sự dư thừa dữ liệu ‹ Có tính nhất quán dữ liệu (data consistency) ‹ Chứa được nhiều thông tin hơn với cùng số lượng dữ liệu như nhau ‹ Cho phép chia sẽ dữ liệu ‹ Tăng cường sự toàn vẹn của dữ liệu (data integrity) ‹ Tăng độ bảo mật (security) ‹ Có tuân theo các tiêu chuẩn ‹ Tiết kiệm về kích cỡ Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 1: Tổng quan về cơ sở dữ liệu Trang 12 23 khai.hq@ou.edu.vn Ưu điểm của DBMS (2) ‹ Cân đối các yêu cầu có tính xung đột ‹ Tăng cường khả năng truy xuất và đáp ứng của dữ liệu (accessibility and responsiveness) ‹ Nâng cao hiệu suất (productivity) ‹ Bảo trì tốt hơn nhờ dữ liệu độc lập với chương trình ‹ Tăng khả năng sử dụng đồng thời ‹ Cải thiện chức năng sao lưu và phục hồi dữ liệu 24 khai.hq@ou.edu.vn Nhược điểm của DBMS ‹ Phức tạp (Complexity) ‹ Nhược điểm về kích thước (Size) ‹ Nhược điểm về chi phí (Cost of DBMS) ‹ Phải tốn chi phí thêm cho phần cứng ‹ Tốn chi phí vào việc chuyển đổi (Cost of conversion) ‹ Nhược điểm về tốc độ thực hiện ‹ Dễ bị hư hỏng hơn HẾT CHƯƠNG 1 Chương 2: Môi trường của cơ sở dữ liệu Trang 1 Nhập môn cơ sở dữ liệu www.ou.edu.vn 1 khai.hq@ou.edu.vn Chương 2: Môi trường của cơ sở dữ liệu Tham khảo tài liệu [A]: Chapter 2: Database Environment 2 khai.hq@ou.edu.vn Nội dung chương 2 (1) ‹Mục đích của kiến trúc CSDL 3 mức ‹ Nội dung của mức ngoài, mức ý niệm và mức trong (external, conceptual, and internal levels) ‹Mục đích của việc ánh xạ mức ngoài/mức ý niệm và mức ý niệm/mức trong ‹ Ý nghĩa của sự độc lập dữ liệu giữa logic và vật lý ‹ Phân biệt DDL và DML ‹ Phân loại các mô hình dữ liệu Chương 2: Môi trường của cơ sở dữ liệu Trang 2 Nhập môn cơ sở dữ liệu www.ou.edu.vn 3 khai.hq@ou.edu.vn Nội dung chương 2 (2) ‹Mục đích và tầm quan trọng của việc mô hình hóa mức ý niệm ‹ Các chức năng và dịch vụ chính yếu của DBMS ‹ Các thành phần phần mềm của DBMS ‹ Ý nghĩa của kiến trúc client–server và sự tiện lợi của kiến trúc này đối với DBMS ‹ Chức năng và các trường hợp dùng Bộ giám sát việc xử lý giao tác (Transaction Processing Monitor) ‹ Chức năng và tầm quan trọng của catalog hệ thống (system catalog) 4 khai.hq@ou.edu.vn Mục tiêu của kiến trúc 3 mức ‹ Tất cả users có thể truy xuất dữ liệu như nhau ‹ View của một user không bị thay đổi khi các view khác bị thay đổi ‹ Users không cần phải biết chi tiết ở mức vật lý cơ sở dữ liệu được lưu như thế nào Chương 2: Môi trường của cơ sở dữ liệu Trang 3 Nhập môn cơ sở dữ liệu www.ou.edu.vn 5 khai.hq@ou.edu.vn Mục tiêu của kiến trúc 3 mức ‹ Người quản trị CSDL (DBA) có thể thay đổi cấu trúc lưu trữ CSDL nhưng không làm ảnh hưởng đến views của các users ‹ Cấu trúc mức trong của CSDL không bị ảnh hưởng bởi sự thay đổi các yếu tố mức vật lý ‹ DBA có thể thay đổi cấu trúc mức ý niệm nhưng không làm ảnh hưởng đến tất cả các users 6 khai.hq@ou.edu.vn Kiến trúc 3 mức ANSI-SPARC (ANSI-SPARC Three-level Architecture) Chương 2: Môi trường của cơ sở dữ liệu Trang 4 Nhập môn cơ sở dữ liệu www.ou.edu.vn 7 khai.hq@ou.edu.vn Kiến trúc 3 mức ANSI-SPARC ‹Mức ngoài (External Level) – gồm các views của các users – miêu tả từng phần của CSDL có liên quan đến từng user ‹Mức ý niệm (Conceptual Level) – là một view tổng quát cho cả CSDL – miêu tả dữ liệu gì được lưu trong CSDL và mối quan hệ giữa các dữ liệu đó ra sao 8 khai.hq@ou.edu.vn Kiến trúc 3 mức ANSI-SPARC ‹Mức trong (Internal Level) – là sự thể hiện ở mức vật lý của CSDL trên máy tính – miêu tả dữ liệu được lưu như thế nào trong CSDL Chương 2: Môi trường của cơ sở dữ liệu Trang 5 Nhập môn cơ sở dữ liệu www.ou.edu.vn 9 khai.hq@ou.edu.vn Sự khác nhau giữa 3 mức 10 khai.hq@ou.edu.vn Sự độc lập về dữ liệu (Data Independence) (1) ‹ Độc lập về mặt logic: – Loại trừ sự thay đổi của lược đồ mức ngoài khi lược đồ mức ý niệm thay đổi – Cho phép lược đồ mức ý niệm thay đổi (ví dụ khi thêm/bớt thực thể) – Không yêu cầu thay đổi của lược đồ mức ngoài hay viết lại chương trình ứng dụng Chương 2: Môi trường của cơ sở dữ liệu Trang 6 Nhập môn cơ sở dữ liệu www.ou.edu.vn 11 khai.hq@ou.edu.vn Sự độc lập về dữ liệu (Data Independence) (2) ‹ Độc lập về mặt vật lý: – Loại trừ sự thay đổi của lược đồ mức ý niệm khi lược đồ mức trong thay đổi – Cho phép lược đồ mức trong thay đổi (ví dụ khi dùng cách tổ chức file khác nhau, các thiết bị hay các cấu trúc lưu trữ khác nhau) – Không yêu cầu thay đổi lược đồ mức ý niệm hay mức ngoài 12 khai.hq@ou.edu.vn Độc lập dữ liệu của kiến trúc ANSI-SPARC 3 mức Chương 2: Môi trường của cơ sở dữ liệu Trang 7 Nhập môn cơ sở dữ liệu www.ou.edu.vn 13 khai.hq@ou.edu.vn Ngôn ngữ cho CSDL (Database Languages) (1) ‹ Ngôn ngữ định nghĩa dữ liệu (DDL) – Cho phép người quản trị CSDL (DBA) hoặc user miêu tả và đặt tên cho các thực thể, các thuộc tính, và các mối quan hệ cần thiết của ứng dụng – Ngoài ra còn tạo sự toàn vẹn trong kết hợp DL (associated integrity) và sự ràng buộc an toàn DL (security constraints) 14 khai.hq@ou.edu.vn Ngôn ngữ cho CSDL (Database Languages) (2) ‹ Ngôn ngữ thao tác dữ liệu DML – Cung cấp các phép thực hiện thao tác cơ bản trên dữ liệu đang lưu trong CSDL ‹ Ngôn ngữ DML thủ tục (Procedural DML) – Cho phép user ra lệnh một cách chi tiết cho hệ thống phải làm như thế nào (HOW) để thao tác dữ liệu ‹ Ngôn ngữ DML phi thủ tục (Non-Procedural DML) – Cho phép user đưa ra yêu cầu về dữ liệu đang cần (WHAT), chứ không nói cách thức hệ thống phải truy xuất dữ liệu đó như thế nào Chương 2: Môi trường của cơ sở dữ liệu Trang 8 Nhập môn cơ sở dữ liệu www.ou.edu.vn 15 khai.hq@ou.edu.vn Ngôn ngữ cho CSDL (Database Languages) (3) ‹ Ngôn ngữ thế hệ thứ 4 (Fourth Generation Language (4GL)) – Ngôn ngữ truy vấn (Query Languages) ví dụ ngôn ngữ SQL, ngôn ngữ QBE – Công cụ tạo cửa sổ giao diện (Forms Generators) – Công cụ tạo bảng báo cáo (Report Generators) – Công cụ tạo biểu đồ dữ liệu (Graphics Generators) – Công cụ tạo ứng dụng (Application Generators) 16 khai.hq@ou.edu.vn Mô hình dữ liệu (Data Model) (1) ‹ Là tập hợp các khái niệm có liên quan, dùng để miêu tả dữ liệu, mối quan hệ giữa các dữ liệu, và các ràng buộc trên dữ liệu của một tổ chức ‹Mô hình dữ liệu bao gồm: – Một phần cấu trúc (A structural part) – Một phần thao tác (A manipulative part) – Có thể có một tập các qui tắc toàn vẹn (integrity rules) Chương 2: Môi trường của cơ sở dữ liệu Trang 9 Nhập môn cơ sở dữ liệu www.ou.edu.vn 17 khai.hq@ou.edu.vn Mô hình dữ liệu (Data Model) (2) ‹Mục đích – Biểu diễn dữ liệu theo cách thức dể hiểu ‹ Các loại mô hình dữ liệu gồm: – Mô hình lấy đối tượng làm nền tảng (Object-based) – Mô hình lấy record làm nền tảng (Record-based) – Mô hình vật lý (Physical) 18 khai.hq@ou.edu.vn Các mô hình dữ liệu (Data Models) ‹Object-based Data Models – Mô hình thực thể-mối kết hợp (Entity-Relationship) – Mô hình ngữ nghĩa (Semantic) – Mô hình chức năng (Functional) – Mô hình hướng đối tượng (Object-Oriented) ‹ Record-based Data Models – Mô hình quan hệ (Relational Data Model) – Mô hình mạng (Network Data Model) – Mô hình phân cấp (Hierarchical Data Model) ‹ Physical Data Models Chương 2: Môi trường của cơ sở dữ liệu Trang 10 Nhập môn cơ sở dữ liệu www.ou.edu.vn 19 khai.hq@ou.edu.vn Mô hình hóa mức ý niệm (Conceptual modeling) ‹ Lược đồ ý niệm là cốt lõi của hệ thống, nó hỗ trợ tất cả các view của user ‹ Lược đồ phải thể hiện đầy đủ và chính xác các dữ liệu của một tổ chức ‹Mô hình hóa mức ý niệm là quá trình xây dựng một mô hình thông tin, mô hình này độc lập với mức hiện thực chi tiết ‹Kết quả là một mô hình dữ liệu mức ý niệm (conceptual data model) 20 khai.hq@ou.edu.vn Các chức năng của DBMS (1) 1. Lưu, truy xuất và cập nhật dữ liệu 2. Có phân quyền truy xuất cho các user 3. Hỗ trợ giao tác (giao dịch) 4. Có dịch vụ kiểm soát đồng thời 5. Có dịch vụ phục hồi dữ liệu Chương 2: Môi trường của cơ sở dữ liệu Trang 11 Nhập môn cơ sở dữ liệu www.ou.edu.vn 21 khai.hq@ou.edu.vn Các chức năng của DBMS (2) 6. Có dịch vụ kiểm tra quyền truy xuất dữ liệu 7. Hỗ trợ việc giao tiếp dữ liệu (kết hợp được với các software khác để thực hiện) 8. Có dịch vụ toàn vẹn dữ liệu 9. Hỗ trợ việc độc lập dữ liệu giữa CSDL và chương trình 10.Có các dịch vụ tiện ích khác: import, export, thống kê, giám sát, 22 khai.hq@ou.edu.vn Các thành phần của DBMS Chương 2: Môi trường của cơ sở dữ liệu Trang 12 Nhập môn cơ sở dữ liệu www.ou.edu.vn 23 khai.hq@ou.edu.vn Các thành phần của Database Manager (DM) 24 khai.hq@ou.edu.vn Các kiến trúc DBMS đa người dùng ‹ Xử lý từ xa (Teleprocessing) ‹Máy phục vụ file (File-server) ‹Máy khách - máy phục vụ (Client-server) Chương 2: Môi trường của cơ sở dữ liệu Trang 13 Nhập môn cơ sở dữ liệu www.ou.edu.vn 25 khai.hq@ou.edu.vn Kiến trúc xử lý từ xa (Teleprocessing) (1) ‹ Là kiến trúc truyền thống ‹Một máy chính mạnh nối với một số máy đầu cuối (Single mainframe with a number of terminals attached) ‹Khuynh hướng hiện nay ít dùng kiến trúc này, vì máy mainframe rất đắc tiền và các máy đầu cuối ngày càng mạnh hơn 26 khai.hq@ou.edu.vn Kiến trúc xử lý từ xa (Teleprocessing) (2) Chương 2: Môi trường của cơ sở dữ liệu Trang 14 Nhập môn cơ sở dữ liệu www.ou.edu.vn 27 khai.hq@ou.edu.vn Kiến trúc File-Server (1) ‹ Máy File-server được kết nối với nhiều máy trạm (workstation) nhờ mạng máy tính ‹ Database nằm ở máy file-server. ‹ DBMS và applications chạy trên các máy workstation. ‹ Các nhược điểm: – Chiếm đường truyền trên mạng nhiều – Nhiều bảng sao DBMS trên các máy workstation – Phức tạp trong việc kiểm soát đồng thời, phục hồi dữ liệu và toàn vẹn dữ liệu 28 khai.hq@ou.edu.vn Kiến trúc File-Server (2) Chương 2: Môi trường của cơ sở dữ liệu Trang 15 Nhập môn cơ sở dữ liệu www.ou.edu.vn 29 khai.hq@ou.edu.vn Kiến trúc Client-server (1) ‹Máy Server chứa database và chạy DBMS. ‹Máy Client quản lý giao diện với user và chạy các ứng dụng ‹ Các ưu điểm: – Truy xuất rộng hơn đến các database – Tăng tốc độ – Có thể giảm giá thành phần cứng – Giảm chi phí truyền dữ liệu – Tăng tính nhất quán dữ liệu 30 khai.hq@ou.edu.vn Kiến trúc Client-server (2) Chương 2: Môi trường của cơ sở dữ liệu Trang 16 Nhập môn cơ sở dữ liệu www.ou.edu.vn 31 khai.hq@ou.edu.vn Các sơ đồ kết nối của kiến trúc Client-server 32 khai.hq@ou.edu.vn Bộ giám sát việc xử lý giao tác (Transaction Processing Monitor) (1) ‹ Là chương trình kiểm soát việc truyền dữ liệu giữa máy client và máy server ‹ Nhằm tạo ra một môi trường có tính nhất quán ‹ Đặc biệt dùng cho việc xử lý giao tác trực tuyến (Online Transaction Processing (OLTP)) Chương 2: Môi trường của cơ sở dữ liệu Trang 17 Nhập môn cơ sở dữ liệu www.ou.edu.vn 33 khai.hq@ou.edu.vn Bộ giám sát việc xử lý giao tác (2) ‹ Là lớp giữa của kiến trúc Client-Server 3 lớp 34 khai.hq@ou.edu.vn Catalog hệ thống (System Catalog) ‹ Là nơi chứa thông tin metadata (metadata là thông tin miêu tả dữ liệu trong database) ‹ Thường lưu: – Tên của các user hợp lệ – Tên của các mục dữ liệu trong database – Ràng buộc trên các mục dữ liệu (data items) – Các mục dữ liệu user có thể truy xuất được và kiểu truy xuất ‹ Được dùng bởi modules Kiểm soát quyền hợp lệ (Authorization Control) và kiểm tra sự toàn vẹn (Integrity Checker) HẾT CHƯƠNG 2 Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 1 Chương 3: Mô hình Thực thể - Mối kết hợp Tham khảo tài liệu [A]: Chapter 11: Entity-Relationship model 2 khai.hq@ou.edu.vn Nội dung chương 3 ‹ Cách dùng mô hình Entity–Relationship (ER) trong tkiết kế database ‹ Các khái niệm cơ bản liên quan đến mô hình ER ‹Kỹ thuật tạo mô hình ER dùng ngôn ngữ UML (Unified Modeling Language) ‹ Nhận diện và xử lý các lỗi của mô hình ER ‹ Xây dựng mô hình ER theo nhu cầu Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 2 3 khai.hq@ou.edu.vn ER diagram of Branch view of DreamHome 4 khai.hq@ou.edu.vn Các khái niệm của mô hình ER ‹Kiểu của thực thể (Entity types) ‹Kiểu của mối kết hợp (Relationship types) ‹ Thuộc tính (Attributes) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 3 5 khai.hq@ou.edu.vn Kiểu của thực thể (Entity type) ‹Kiểu của thực thể – Là nhóm các đối tượng có cùng các thuộc tính, các đối tượng tồn tại độc lập nhau ‹ Thể hiện của thực thể (Entity occurrence) – Là đối tượng của một thực thể, được xác định là tồn tại duy nhất (không trùng lắp với các đối tượng khác) 6 khai.hq@ou.edu.vn ER diagram of Staff and Branch entity types Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 4 7 khai.hq@ou.edu.vn Kiểu của mối kết hợp (Relationship type) ‹Kiểu của mối kết hợp – Là tập hợp các mối liên kết có ý nghĩa của các kiểu thực thể ‹ Thể hiện của mối kết hợp (Relationship occurrence) – Là mối liên kết cụ thể được xác định là tồn tại duy nhất. Mối liên kết này bao gồm các phần tham gia vào liên kết từ các thực thể 8 khai.hq@ou.edu.vn Mạng ngữ nghĩa của kiểu mối kết hợp “HAS” (Semantic net of Has relationship type) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 5 9 khai.hq@ou.edu.vn ERD của mối kết hợp “Branch Has Staff” 10 khai.hq@ou.edu.vn Các loại mối kết hợp ‹ Cấp của mối kết hợp (Degree of a Relationship) – Là số các thực thể tham gia vào mối kết hợp ‹ Tên của mối kết hợp theo cấp: – Cấp 2: mối kết hợp binary – Cấp 3: mối kết hợp ternary – Cấp 4: mối kết hợp quaternary. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 6 11 khai.hq@ou.edu.vn Mối kết hợp binary “POwns” 12 khai.hq@ou.edu.vn Mối kết hợp Ternary “Registers” Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 7 13 khai.hq@ou.edu.vn Mối kết hợp Quaternary “Arranges” 14 khai.hq@ou.edu.vn Các loại mối kết hợp ‹Mối kết hợp hồi quy (Recursive Relationship) – Là mối kết hợp có một kiểu thực thể tham gia vào hơn một lần với các vai trò khác nhau ‹Mối kết hợp hồi quy nên được đặt tên theo vai trò của thực thể khi tham gia vào mối kết hợp đó Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 8 15 khai.hq@ou.edu.vn Mối kết hợp hồi quy “Supervises” 16 khai.hq@ou.edu.vn Hai thực thể có 2 mối kết hợp khác nhau Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 9 17 khai.hq@ou.edu.vn Thuộc tính (Attribute) ‹ Thuộc tính – Là đặc tính của một kiểu thực thể hay một kiểu mối kết hợp ‹Miền của thuộc tính – Là tập các giá trị có thể có được của thuộc tính 18 khai.hq@ou.edu.vn Khóa (Key) ‹Khóa ứng viên (Candidate Key) – Là tập nhỏ nhất các thuộc tính, tập này xác định được duy nhất từng thể hiện của thực thể ‹Khóa chính (Primary Key) – Là một khóa được chọn ra từ các khóa ứng viên ‹Khóa ghép (Composite Key) – Là khóa có từ 2 thuộc tính trở lên Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 10 19 khai.hq@ou.edu.vn ER diagram of Staff and Branch entities and their attributes 20 khai.hq@ou.edu.vn Kiểu thực thể mạnh và yếu ‹Kiểu thực thể mạnh (Strong Entity Type) – Là kiểu thực thể không phụ thuộc vào kiểu thực thể khác ‹Kiểu thực thể yếu (Weak Entity Type) – Là kiểu thực thể phụ thuộc vào kiểu thực thể khác Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 11 21 khai.hq@ou.edu.vn Strong entity type called Client and weak entity type called Preference 22 khai.hq@ou.edu.vn Relationship called Advertises with attributes Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 12 23 khai.hq@ou.edu.vn Ràng buộc thuộc về cấu trúc (Structural Constraints) (1) ‹ Ràng buộc chính trên các mối kết hợp gọi là mức tham gia kết hợp (multiplicity) ‹Mức tham gia kết hợp: là (đoạn) số lượng các thể hiện của một kiểu thực thể có thể kết hợp với một thể hiện của một kiểu thực thể khác trên một mối kết hợp ‹ Ràng buộc theo các quy tắc nghiệp vụ (business rules) 24 khai.hq@ou.edu.vn Ràng buộc thuộc về cấu trúc (Structural Constraints) (2) ‹ Các mối kết hợp có cấp (degree) phổ biến là 2 (binary), tức là các mối kết hợp trên 2 kiểu thực thể ‹ Các mối kết hợp cấp 2 thường thấy là: – một – một one-to-one (1:1) – một – nhiều one-to-many (1:*) – nhiều – nhiều many-to-many (*:*) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 13 25 khai.hq@ou.edu.vn Mạng ngữ nghĩa của kiểu mối kết hợp “Staff Manages Branch” 26 khai.hq@ou.edu.vn Mức tham gia kết hợp (Multiplicity) của mối kết hợp “Staff Manages Branch” (1:1) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 14 27 khai.hq@ou.edu.vn Mạng ngữ nghĩa của kiểu mối kết hợp “Staff Oversees PropertyForRent” 28 khai.hq@ou.edu.vn Mức tham gia kết hợp (Multiplicity) của “Staff Oversees PropertyForRent” (1:*) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 15 29 khai.hq@ou.edu.vn Mạng ngữ nghĩa của kiểu mối kết hợp “Newspaper Advertises PropertyForRent” 30 khai.hq@ou.edu.vn Mức tham gia kết hợp (Multiplicity) của “Newspaper Advertises PropertyForRent” (*:*) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 16 31 khai.hq@ou.edu.vn Ràng buộc thuộc về cấu trúc (Structural Constraints) (3) ‹Mức tham gia kết hợp của mối kết hợp ghép cấp n – là (đoạn) số lượng các thể hiện của một kiểu thực thể trong mối kết hợp cấp n khi (n-1) giá trị còn lại giữ cố định 32 khai.hq@ou.edu.vn Mạng ngữ nghĩa của kiểu mối kết hợp cấp 3 (ternary) “Registers” với các giá trị Staff và Branch giữ cố định Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 1 33 khai.hq@ou.edu.vn Mức tham gia kết hợp (Multiplicity) của mối kết hợp cấp 3 “Registers” 34 khai.hq@ou.edu.vn Bảng tổng kết Ràng buộc theo mức tham gia mối kết hợp Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 2 35 khai.hq@ou.edu.vn Ràng buộc thuộc về cấu trúc (Structural Constraints) (4) ‹Multiplicity (mức tham gia) dựa vào 2 giá trị giới hạn của mối kết hợp là: cardinality and participation. ‹ Cardinality (Số tham gia tối đa) – Là số luợng lớn nhất các thể hiện của kiểu thực thể tham gia vào mối kết hợp ‹ Participation (Số tham gia) – Là số xác định xem tất cả thể hiện hay chỉ một vài thể hiện của một kiểu thực thể tham gia vào mối kết hợp 36 khai.hq@ou.edu.vn Multiplicity, Cardinality và Participation Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 3 37 khai.hq@ou.edu.vn Các lỗi có thể có ở mô hình ER (1) ‹ Các lỗi có thể xảy ra khi thiết kế mô hình ý niệm, các lỗi có tên “bẫy kết nối” (connection traps.) ‹ Lỗi xảy ra thường do hiểu chưa đúng ý nghĩa của mối kết hợp ‹ 2 lỗi bẫy kết nối chính là: lỗi bẫy mơ hồ (fan traps) và lỗi bẫy lỗ hổng (chasm traps) 38 khai.hq@ou.edu.vn Các lỗi có thể có ở mô hình ER (2) ‹ Fan Trap (lỗi bẫy mơ hồ) – Khi mối quan hệ giữa một số thể hiện của thực thể có tính mơ hồ (ambiguous), không rõ nghĩa. ‹ Chasm Trap (lỗi bẫy lỗ hổng) – Khi không có đủ các mối quan hệ giữa các thể hiện của thực thể Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 4 39 khai.hq@ou.edu.vn Một ví dụ Fan Trap (lỗi bẫy mơ hồ) ‹ At which branch office does staff number SG37 work? 40 khai.hq@ou.edu.vn Cấu trúc lại mô hình ER để loại bỏ lỗi Fan Trap Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 5 41 khai.hq@ou.edu.vn Mạng ngữ nghĩa của mô hình ER đã cấu trúc lại để bỏ lỗi Fan Trap ‹ SG37 works at branch B003. 42 khai.hq@ou.edu.vn Một ví dụ Chasm Trap (lỗi bẫy lỗ hổng) ‹ At which branch office is property PA14 available? Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 3: Mô hình thực thể - Mối kết hợp Trang 6 43 khai.hq@ou.edu.vn Cấu trúc lại mô hình ER để loại bỏ lỗi Chasm Trap 44 khai.hq@ou.edu.vn Mạng ngữ nghĩa của mô hình ER đã cấu trúc lại để bỏ lỗi Chasm Trap HẾT CHƯƠNG 3 Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 1 Chương 4: Mô hình Quan hệ Tham khảo tài liệu [A]: Chapter 3: The Relational Model 2 khai.hq@ou.edu.vn Nội dung chương 4 ‹ Các thuật ngữ của mô hình quan hệ ‹ Cách dùng bảng để miêu tả dữ liệu ‹ Sự tương đồng giữa mối quan hệ trong toán học và mối quan hệ trong mô hình quan hệ ‹ Thuộc tính của mối quan hệ trong cơ sở dữ liệu ‹ Cách xác định khóa ứng viên, khóa chính, và khóa ngoại ‹ Ý nghĩa của “sự toàn vẹn của thực thể” và “sự toàn vẹn trong tham khảo” ‹Mục đích và sự tiện lợi của view Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 2 3 khai.hq@ou.edu.vn Các thuật ngữ của mô hình quan hệ (1) ‹Một quan hệ (relation) là một bảng, gồm có các cột và các hàng – Khái niệm này chỉ áp dụng cho cấu trúc mức logic của cơ sở dữ liệu, chứ không phải cho cấu trúc mức vật lý của cơ sở dữ liệu ‹Một thuộc tính (attribute) là một cột của quan hệ ‹Miền (domain) là tập hợp các giá trị có thể có của một hay nhiều thuộc tính 4 khai.hq@ou.edu.vn Các thuật ngữ của mô hình quan hệ (2) ‹ Bộ (tuple) là một hàng của quan hệ ‹ Cấp (hay mức–degree) là số lượng thuộc tính của quan hệ ‹ Số thể hiện (hay số lượng, hay lực lượng – cardinality) là số bộ của một quan hệ ‹ Cơ sở dữ liệu quan hệ (Relational Database) là một tập các quan hệ đã được chuẩn hóa (normalized relations), mỗi quan hệ có tên khác nhau Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 3 5 khai.hq@ou.edu.vn Một phần các thể hiện của quan hệ “Branch and Staff” 6 khai.hq@ou.edu.vn Ví dụ về miền của thuộc tính (Attribute Domains) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 4 7 khai.hq@ou.edu.vn Các dạng thuật ngữ khác nhau của mô hình quan hệ 8 khai.hq@ou.edu.vn Định nghĩa toán học của mô hình quan hệ (1) ‹ Xét 2 tập hợp D1 và D2, với D1 = {2, 4} và D2 = {1, 3, 5} ‹ Tích Đề-các (Cartesian product) D1 × D2 là tập hợp tất cả các cặp có thứ tự, phần tử đầu là của tập D1 và phần tử sau là của tập D2 D1 × D2 = {(2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)} ‹ Tích Đề-các đã liệt kê ra tất cả các kết hợp có thứ tự có thể có của các phần tử của D1 với các phần tử của D2 Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 5 9 khai.hq@ou.edu.vn Định nghĩa toán học của mô hình quan hệ (2) ‹Một quan hệ là một tập con của tích Đề-các ví dụ: quan hệ R = {(2, 1), (4, 1)} ‹Quan hệ có thể được đặc tả bằng điều kiện chọn ra các cặp của quan hệ, ví dụ: – phần tử sau là số 1: R = {(x, y) | x ∈D1, y ∈D2, and y = 1} – phần tử đầu luôn gấp đôi phần tử sau: S = {(x, y) | x ∈D1, y ∈D2, and x = 2y} 10 khai.hq@ou.edu.vn Định nghĩa toán học của mô hình quan hệ (3) ‹ 3 tập hợp D1, D2, D3 sẽ có tích Đế-các là D1 × D2 × D3 ví dụ: D1 = {1, 3} D2 = {2, 4} D3 = {5, 6} D1 × D2 × D3 = {(1,2,5), (1,2,6), (1,4,5), (1,4,6), (3,2,5), (3,2,6), (3,4,5), (3,4,6)} ‹ Bất kỳ tập con nào của tích Đế-các trên sẽ là một quan hệ, ví dụ: quan hệ R1 = {(1,4,6), (3,4,5)} quan hệ R2 = {(1,4,5), (1,4,6), (1,2,6), (3,4,5), (3,2,5)} Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 6 11 khai.hq@ou.edu.vn Định nghĩa toán học của mô hình quan hệ (4) ‹ Tích Đề-các của n tập hợp (D1, D2, . . ., Dn) là: D1 × D2 × . . . × Dn = {(d1, d2, . . . , dn) | d1 ∈D1, d2 ∈D2, . . . , dn∈Dn} thường được viết là: n X Di i = 1 ‹ Bất kỳ tập con nào của tích Đề-các trên sẽ là một quan hệ trên n tập hợp, mỗi bộ của quan hệ này sẽ có n thành phần 12 khai.hq@ou.edu.vn Khái niệm Quan hệ trong CSDL (Database Relations) ‹Lược đồ (của) quan hệ (Relation schema) – Tên của quan hệ – Tập các thuộc tính – Các miền giá trị tương ứng với mỗi thuộc tính ‹Lược đồ (của) cơ sở dữ liệu quan hệ (Relational database schema) – Là tập hợp các lược đồ quan hệ – Tên của các lược đồ quan hệ phải khác nhau Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 7 13 khai.hq@ou.edu.vn Các thuộc tính của quan hệ ‹ Tên của các quan hệ không được trùng nhau ‹Mỗi ô (cell) trong quan hệ chứa đúng một giá trị đơn trị ‹ Tên thuộc tính không được trùng nhau ‹ Tất cả giá trị của một thuộc tính phải có cùng một miền giá trị (cùng domain) ‹Không có 2 hay nhiều bộ (tuple) giống nhau ‹Không bắt buộc thứ tự của các thuộc tính trong quan hệ ‹Không bắt buộc thứ tự của các bộ của quan hệ 14 khai.hq@ou.edu.vn Khóa của quan hệ (Relational Keys) (1) ‹ Siêu khóa (Superkey) – Là một thuộc tính, hay một tập các thuộc tính xác định duy nhất một bộ trong quan hệ ‹Khóa ứng viên (Candidate Key) – Là siêu khóa – Không có tập con thực sự là siêu khóa – Nếu bỏ bớt đi một thuộc tính thì không còn tính chất xác định duy nhất một bộ trong quan hệ Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 8 15 khai.hq@ou.edu.vn Khóa của quan hệ (Relational Keys) (2) ‹Khóa chính (Primary Key) – Là một khóa ứng viên được chọn để xác định duy nhất các bộ trong quan hệ ‹Khóa thay thế (Alternate Keys) – Là các khóa ứng viên không được chọn làm khóa chính ‹Khóa ngoại (Foreign Key) – Là một thuộc tính, hay một tập các thuộc tính của một quan hệ trùng với một khóa ứng viên của một quan hệ nào đó 16 khai.hq@ou.edu.vn Sự toàn vẹn của quan hệ (Relational Integrity) (1) ‹Giá trị Null – Là giá trị của thuộc tính mà giá trị đó chưa biết hoặc không thể áp dụng vào bộ nào được – Có liên quan đến các dữ liệu không đầy đủ, hay các dữ liệu ngoại lệ – Biểu diễn sự không có dữ liệu – Không phải là giá trị zero hay giá trị rỗng, vì các giá trị này không phải biểu diễn sự không có dữ liệu Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 9 17 khai.hq@ou.edu.vn Sự toàn vẹn của quan hệ (Relational Integrity) (2) ‹ Sự toàn vẹn của thực thể (Entity Integrity) – Không có thuộc tính nào của khóa chính được chứa giá trị NULL ‹ Sự toàn vẹn trong tham khảo (Referential Integrity) – Giá trị của khóa ngoại phải là 1 trong 2 trường hợp sau: * Trùng với một giá trị nơi nó làm khóa ứng viên * Chứa toàn giá trị NULL ‹ Các ràng buộc từ phía công ty (Enterprise Constraints) – Là các quy tắc ràng buộc dữ liệu được quy định bởi người dùng dữ liệu hay người quản trị cơ sở dữ liệu 18 khai.hq@ou.edu.vn Khung nhìn dữ liệu (Views) (1) ‹Quan hệ nền (Base Relation) – Là quan hệ tương ứng với một thực thể trong lược đồ mức ý niệm – Các bộ của quan hệ nền được lưu thật sự (mức vật lý) trong cơ sở dữ liệu ‹Khung nhìn dữ liệu (View) – Là các kết quả có được nhờ sử dụng các toán tử quan hệ áp dụng trên các quan hệ nền – Có vai trò như là các quan hệ mới Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 10 19 khai.hq@ou.edu.vn Khung nhìn dữ liệu (Views) (2) ‹Một view là một quan hệ ảo (virtual relation), quan hệ ảo đó không cần phải lưu vào cơ sở dữ liệu và chỉ được tạo ra khi có nhu cầu ‹ Nội dung của một view được định nghĩa như là một truy vấn (query) trên một hay nhiều quan hệ nền ‹ View có tính chất động, nghĩa là các thay đổi trên các quan hệ nền sẽ ảnh hưởng lập tức lên các view có liên quan 20 khai.hq@ou.edu.vn Mục đích của View ‹ Cung cấp một cơ chế dùng dữ liệu an toàn, mềm dẻo và mạnh mẽ bằng cách dấu bớt các phần không cần thiết đối với các người dùng khác nhau ‹ Cho phép user truy xuất dữ liệu theo cách thức có thể tùy biến được, nhờ vậy cùng một dữ liệu có thể được xem theo các cách khác nhau, bởi các user khác nhau, vào cùng một thời điểm ‹Giúp đơn giản hóa việc thực hiện các phép toán trên các quan hệ nền Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 4: Mô hình Quan hệ Trang 11 21 khai.hq@ou.edu.vn View và việc cập nhật dữ liệu (1) ‹ Việc cập nhật dữ liệu trên các quan hệ nền sẽ ảnh hưởng tức thời đến các view có tham khảo đến các quan hệ nền đó ‹ Nếu view cập nhật được dữ liệu thì các quan hệ nền phía dưới cũng sẽ chịu ảnh hưởng theo ‹ Phân view làm 3 lớp: – Không cập nhật dữ liệu được (not updateable) – Cập nhật dữ liệu được (updateable) – Cập nhật dữ liệu một phần (partially updateable) 22 khai.hq@ou.edu.vn View và việc cập nhật dữ liệu (2) ‹Các giới hạn dùng khi cập nhật dữ liệu với view: - Cho phép cập nhật nếu việc truy vấn chỉ trên 1 quan hệ nền và đã bao gồm khóa ứng viên của quan hệ nền - Không cho phép cập nhật nếu việc truy vấn liên quan đến nhiều quan hệ nền - Không cho phép cập nhật nếu có dùng các phép toán thống kê hay gom nhóm dữ liệu HẾT CHƯƠNG 4 Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 1 Chương 5: Đại số quan hệ & Phép toán quan hệ Tham khảo tài liệu [A]: Chapter 4: Relational Algebra and Relational Calculus 2 khai.hq@ou.edu.vn Nội dung chương 5 ‹ Ý nghĩa của khái niệm “relational completeness” ‹ Cách tạo query trong đại số quan hệ ‹ Cách tạo query trong phép toán quan hệ trên bộ ‹ Cách tạo query trong phép toán quan hệ trên miền ‹ Các loại ngôn ngữ thao tác dữ liệu quan hệ Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 2 3 khai.hq@ou.edu.vn Giới thiệu ‹ Đại số quan hệ và phép toán quan hệ là các ngôn ngữ chuẩn của mô hình quan hệ ‹ Có thể xem: đại số quan hệ là ngôn ngữ thủ tục (cấp cao), và phép toán quan hệ là ngôn ngữ phi thủ tục ‹ Tuy nhiên về mặt lý thuyết thì đại số quan hệ và phép toán quan hệ là tương đương nhau ‹ Ngôn ngữ tạo ra một quan hệ mà quan hệ đó có thể suy ra nhờ phép toán quan hệ thì được xem là ngôn ngữ có tính “relationally complete” 4 khai.hq@ou.edu.vn Đại số quan hệ ‹ Các toán tử của đại số quan hệ áp dụng trên một hay nhiều quan hệ để định nghĩa ra một quan hệ khác mà không làm thay đổi các quan hệ ban đầu ‹ Cả các toán hạng và các kết quả đều là các quan hệ, vì vậy đầu ra của một toán tử có thể là đầu vào của một toán tử khác ‹ Cho phép các biểu thức có thể lồng vào nhau giống như các biểu thức số học. Đặc tính này gọi là closure. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 3 5 khai.hq@ou.edu.vn Đại số quan hệ ‹ 5 toán tử cơ bản trong ĐS quan hệ: Chọn (Selection), Chiếu (Projection), Tích Đề- các (Cartesian product), Hội (Union), và Trừ (Set Difference) ‹ Các toán tử cơ bản thực hiện được hầu hết các thao tác truy xuất dữ liệu ‹ Các toán tử khác: Kết (Join), Giao (Intersection), và Chia (Division). Các toán tử này có thể được biểu diển bằng 5 toán tử cơ bản trên 6 khai.hq@ou.edu.vn Các phép toán trong đại số quan hệ Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 4 7 khai.hq@ou.edu.vn Các phép toán trong đại số quan hệ (tt) 8 khai.hq@ou.edu.vn Phép chọn (Selection or Restriction) ‹ σđiều kiện (R) – Kết quả phép chọn tạo ra một quan hệ trong đó chỉ chứa các bộ của R, mà các bộ đó thỏa mãn điều kiện đã nêu trong phép chọn Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 5 9 khai.hq@ou.edu.vn Ví dụ về phép chọn ‹ Liệt kê danh sách tất cả nhân viên có lương lớn hơn £10,000 σsalary > 10000 (Staff) 10 khai.hq@ou.edu.vn Phép chiếu (Projection) ‹Πcol1, . . . , coln(R) – Kết quả phép chiếu tạo ra một quan hệ trong đó chỉ chứa một tập con theo chiều dọc của R, tức trích ra theo chiều dọc các giá trị của dữ liệu của một số thuộc tính, và loại bỏ các dữ liệu trùng lắp Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 6 11 khai.hq@ou.edu.vn Ví dụ về phép chiếu ‹ Tạo danh sách lương của tất cả nhân viên, chỉ hiện các thuộc tính staffNo, fName, lName, và salary ΠstaffNo, fName, lName, salary(Staff) 12 khai.hq@ou.edu.vn Phép hội (Union) ‹ R ∪ S – Hội của 2 quan hệ R và S tạo ra một quan hệ mà các bộ của nó hoặc thuộc R, hoặc thuộc S, hoặc vừa thuộc R vừa thuộc S – R và S phải có tính tương thích mới hội với nhau được ‹ Nếu R có i bộ và S có j bộ thì phép hội có tối đa (i+j) bộ Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 7 13 khai.hq@ou.edu.vn Ví dụ về phép hội ‹ Liệt kê danh sách các thành phố mà ở đó có chi nhánh hay có tài sản cho thuê Πcity(Branch) ∪ Πcity(PropertyForRent) 14 khai.hq@ou.edu.vn Phép trừ (Set Difference) ‹ R – S – Tạo một quan hệ chứa các bộ thuộc R nhưng không thuộc S – R và S phải có tính tương thích Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 8 15 khai.hq@ou.edu.vn Ví dụ về phép trừ ‹ Liệt kê các thành phố có chi nhánh nhưng không có tài sản cho thuê Πcity(Branch) – Πcity(PropertyForRent) 16 khai.hq@ou.edu.vn Phép giao (Intersection) ‹ R ∩ S – Tạo ra một quan hệ chứa các bộ vừa thuộc R vừa thuộc S – R và S phải có tính tương thích nhau ‹ Biểu diễn phép giao bằng phép trừ: R ∩ S = R – (R – S) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 9 17 khai.hq@ou.edu.vn Ví dụ về phép giao ‹ Liệt kê các thành phố mà ở đó có chi nhánh và có cả tài sản cho thuê Πcity(Branch) ∩ Πcity(PropertyForRent) 18 khai.hq@ou.edu.vn Phép tích Đề-các (Cartesian product) ‹ R X S – Tạo một quan hệ trong đó các bộ của nó chính là sự nối kết của từng bộ của R với từng bộ của S Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 10 19 khai.hq@ou.edu.vn Ví dụ về phép tích Đề-các ‹ Liệt kê các tên và lời nhận xét của các khách hàng đã xem nhà (ΠclientNo, fName, lName(Client)) X (ΠclientNo, propertyNo,comment (Viewing)) 20 khai.hq@ou.edu.vn Ví dụ về phép tích Đề-các và phép chọn ‹ Dùng phép tích Đề-các, rồi phép chọn σClient.clientNo = viewing.clientNo((∏clientNo,fName,lName(Client)) Χ (∏clientNo,propertyNo,comment(Viewing))) ‹Phép tích Đề-các và phép chọn được làm chung lại gọi là phép kết (Join) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 11 21 khai.hq@ou.edu.vn Phép Kết (Join) ‹ Phép kết phát sinh từ phép tích Đề-các ‹ Phép kết thực hiện tương đương với phép chọn trên kết quả của phép tích Đề-các, với một điều kiện chọn phải thỏa 22 khai.hq@ou.edu.vn Phép Kết (Join) (tt) ‹ Các dạng khác nhau của phép kết: – Theta join (phép kết theta) – Equijoin (phép kết tương đương – là 1 trường hợp đặc biệt của phép kết theta) – Natural join (phép kết tự nhiên) – Outer join (phép kết ngoài) – Semijoin (phép nửa kết) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 12 23 khai.hq@ou.edu.vn Phép kết Theta (θ-join) ‹ R FS – Tạo ra 1 quan hệ có các bộ là kết quả từ phép chọn theo điều kiện F trên kết quả của phép tích Đề-các của R và S – Điều kiện F có dạng R.ai θ S.bi trong đó θ là 1 trong 6 phép so sánh , ≥, =, ≠ 24 khai.hq@ou.edu.vn Phép kết Theta (θ-join) (tt) ‹ Có thể biểu diễn phép kết Theta: R FS = σF(R Χ S) ‹ Cấp của phép kết Theta là tổng của cấp 2 quan hệ tham gia ‹ Nếu trong điều kiện F sử dụng dấu = thì có tên mới là phép kết tương đương Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 13 25 khai.hq@ou.edu.vn Ví dụ về phép kết tương đương ‹Liệt kê các tên và lời nhận xét của các khách hàng đã xem nhà (ΠclientNo,fName,lName(Client)) Client.clientNo = Viewing.clientNo (ΠclientNo,propertyNo,comment(Viewing)) 26 khai.hq@ou.edu.vn Phép kết tự nhiên (Natural Join) ‹ R S – Là phép kết tương đương của 2 quan hệ trên tất cả các thuộc tính chung – Trong kết quả sẽ bỏ bớt các thuộc tính chung trùng nhau Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 14 27 khai.hq@ou.edu.vn Ví dụ về phép kết tự nhiên ‹Liệt kê các tên và lời nhận xét của các khách hàng đã xem nhà (ΠclientNo,fName,lName(Client)) (ΠclientNo,propertyNo,comment(Viewing)) 28 khai.hq@ou.edu.vn Phép kết ngoài (Outer join) ‹ Để hiển thị trong kết quả của phép kết các hàng không có các cột kết bằng nhau ‹ R S – là phép kết ngoài bên trái: các bộ của R không trùng các giá trị trong các cột chung vẫn có mặt trong kết quả của phép kết Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 15 29 khai.hq@ou.edu.vn Ví dụ về phép kết ngoài bên trái ‹ Lập bảng báo cáo tình trạng các tài sản cho thuê ΠpropertyNo,street,city(PropertyForRent) Viewing 30 khai.hq@ou.edu.vn Phép nửa kết (Semijoin) ‹ R FS – Tạo ra 1 quan hệ có các bộ là kết quả từ R có tham gia vào phép kết với S ‹ Có thể viết lại phép nửa kết bằng phép Chiếu và phép kết: R FS = ΠA(R F S) A là các thuộc tính của R Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 16 31 khai.hq@ou.edu.vn Ví dụ phép nửa kết ‹ Lập danh sách chi tiết về các nhân viên làm việc ở chi nhánh ở Glasgow. Staff Staff.brancNo = Branch.branchNo and branch.city = ‘Glasgow’ Branch 32 khai.hq@ou.edu.vn Phép chia (Division) ‹ R ÷ S – Tạo ra 1 quan hệ có tập thuộc tính C, mà kết quả từ phép kết từng bộ của C kết hợp với từng bộ của S đều thuộc quan hệ R ‹ Biểu diễn cách khác: T1 ← ΠC(R) T2 ← ΠC((S X T1) – R) T ← T1 – T2 Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 17 33 khai.hq@ou.edu.vn Ví dụ phép chia ‹ Tìm tất cả các khách hàng đã xem tất cả các nhà có 3 phòng (ΠclientNo,propertyNo(Viewing)) ÷ (ΠpropertyNo(σrooms = 3 (PropertyForRent))) 34 khai.hq@ou.edu.vn Phép toán quan hệ (Relational Calculus) ‹ Phép toán quan hệ để diễn đạt “muốn gì?” (what) chứ không diễn đạt phải làm gì (how) để có được điều mong muốn ‹ Trong phép tóan luận lý tiền tố (hay phép toán vị từ), vị từ (predicate ) là 1 hàm có đối số nằm phía sau ‹ Phép toán vị từ có kết quả là đúng (true) hay sai (false) ‹ Phép toán vị từ trên CSDL có 2 loại: phép toán trên bộ và phép toán trên miền của thuộc tính Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 18 35 khai.hq@ou.edu.vn Phép toán quan hệ trên bộ ‹ Có mục đích tìm ra các bộ làm cho vị từ có giá trị true. Sử dụng các biến trên bộ để tìm ‹ Biến trên bộ là biến nhận giá trị là 1 bộ của quan hệ ‹ Ví dụ: giá trị của 1 biến S có thể là 1 bộ của quan hệ Staff: Staff(S) ‹ Tìm tất cả giá trị S: biểu thức sau phải thỏa (true) : {S | P(S)} 36 khai.hq@ou.edu.vn Ví dụ phép toán quan hệ trên bộ ‹ Lập danh sách chi tiết về các nhân viên có lương lớn hơn 10000 {S | Staff(S) ∧ S.salary > 10000} ‹ Lập danh sách 1 cột lương chỉ lấy giá trị lớn hơn 10000 {S.salary | Staff(S) ∧ S.salary > 10000} Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 19 37 khai.hq@ou.edu.vn Phép toán quan hệ trên bộ ‹ Có thể sử dụng lượng từ (quantifier) để cho biết vị từ sẽ áp dụng trên bao nhiêu thể hiện: – Lượng từ “tồn tại”: ∃ – Lượng từ “với mọi”: ∀ 38 khai.hq@ou.edu.vn Ví dụ phép toán quan hệ trên bộ ‹ Lượng từ tồn tại dùng trong công thức để bảo đảm có ít nhất 1 gía trị đúng: Staff(S) ∧ (∃B)(Branch(B) ∧ (B.branchNo = S.branchNo) ∧ B.city = ‘London’) ‹ Có nghĩa là: Tồn tại ít nhất 1 chi nhánh (1 bộ) trong bảng Branch có BranchNo bằng với BranchNo của bộ S đang xét, và Means ‘There exists a Branch tuple that has the same branchNo as the branchNo of the current Staff tuple, S, and is located in London’. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 20 39 khai.hq@ou.edu.vn Phép toán quan hệ trên bộ ‹ Lượng từ “với mọi” ∀ được dùng trên mỗi bộ như: (∀B) (B.city ≠ ‘Paris’) ‹ Có nghĩa ‘Các bộ dữ liệu của các chi nhánh, mà các chi nhánh đó có địa chỉ thành phố không thuộc Paris’ ‹ Ngược lại: ~(∃B) (B.city = ‘Paris’) có nghĩa “không có chi nhánh nào có địa chỉ ở Paris’. 40 khai.hq@ou.edu.vn Phép toán quan hệ trên bộ ‹ Các công thức phải tránh sự mơ hồ và có ý nghĩa ‹ Một công thức tốt được cấu thành từ các thành tố: » R(Si), với Si là 1 biến trên bộ và R là 1 quan hệ » Si.a1 θ Sj.a2 » Si.a1 θ c ‹ Một công thức có thể cấu thành bằng các công thức lồng nhau: » 1 thành tố là 1 công thức » Nếu F1 và F2 là công thức thì có các công thức: F1 ∧ F2, F1 ∨ F2 và ~F1 » Nếu F là công thức và X là 1 biến thì (∃X)(F) và (∀X)(F) cũng là công thức Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 21 41 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên bộ a) Liệt kê tên tất cả các giám đốc kiếm được hơn £25,000 trong 1 năm: {S.fName, S.lName | Staff(S) ∧ S.position = ‘Manager’ ∧ S.salary > 25000} b) Liệt kê các nhân viên quản lý tài sản ở Glasgow: {S | Staff(S) ∧ (∃P) (PropertyForRent(P) ∧ (P.staffNo = S.staffNo) ∧ P.city = ‘Glasgow’)} 42 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên bộ c) Liệt kê tên các nhân viên hiện không quản lý bất kỳ tài sản nào: {S.fName, S.lName | Staff(S) ∧ (~(∃P) (PropertyForRent(P)∧(S.staffNo = P.staffNo)))} Hoặc: {S.fName, S.lName | Staff(S) ∧ (∀P) (~PropertyForRent(P) ∨ ~(S.staffNo = P.staffNo)))} Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 22 43 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên bộ ‹ Liệt kê tên khách hàng đã xem nhà ở Glasgow: {C.fName, C.lName | Client(C) ∧ ((∃V)(∃P) (Viewing(V) ∧ PropertyForRent(P) ∧ ( C.clientNo = V.clientNo) ∧ (V.propertyNo=P.propertyNo)∧P.city =‘Glasgow’))} 44 khai.hq@ou.edu.vn Chú ý về Phép toán quan hệ trên bộ ‹Các biểu thức có thể tạo 1 tập vô hạn không xác định: {S | ~Staff(S)} ‹ Để tránh lỗi này, cần thêm giới hạn về miền giá trị của kết quả biểu thức Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 23 45 khai.hq@ou.edu.vn Phép toán quan hệ trên miền (Domain Relational Calculus) ‹ Dùng các biến có giá trị từ miền chứ không phải từ bộ của quan hệ ‹ Nếu F(d1, d2, . . . , dn) là công thức tạo thành từ các thành tố, và d1, d2, . . . , dn là các biến trên miền thì: {d1, d2, . . . , dn | F(d1, d2, . . . , dn)} Là biểu thức của phép toán quan hệ trên miền 46 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên miền a) Tìm tên của tất cả các giám đốc kiếm được hơn £25,000 trong 1 năm {fN, lN | ∃sN, posn, sex, DOB, sal, bN) (Staff (sN, fN, lN, posn, sex, DOB, sal, bN) ∧ posn = ‘Manager’ ∧ sal > 25000)} Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 24 47 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên miền b) Liệt kê các nhân viên quản lý tài sản ở Glasgow: {sN, fN, lN, posn, sex, DOB, sal, bN | (∃sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN) ∧ (PropertyForRent(pN, st, cty, pc, typ, rms, rnt,oN, sN1, bN1) ∧ (sN=sN1) ∧ cty=‘Glasgow’)} 48 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên miền c) Liệt kê tên các nhân viên hiện không quản lý bất kỳ tài sản nào: {fN, lN | (∃sN) (Staff(sN,fN,lN,posn,sex,DOB,sal,bN) ∧ (~(∃sN1) (PropertyForRent(pN, st, cty, pc, typ, rms, rnt,oN, sN1, bN1) ∧ (sN = sN1))))} Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 25 49 khai.hq@ou.edu.vn Ví dụ về Phép toán quan hệ trên miền d) Liệt kê tên khách hàng đã xem nhà ở Glasgow: {fN, lN | (∃cN, cN1, pN, pN1, cty) (Client(cN, fN, lN,tel, pT, mR) ∧ Viewing(cN1, pN1, dt, cmt) ∧ PropertyForRent(pN, st, cty, pc, typ, rms, rnt,oN, sN, bN) ∧ (cN = cN1) ∧ (pN = pN1) ∧ cty = ‘Glasgow’)} 50 khai.hq@ou.edu.vn Phép toán quan hệ trên miền ‹Mọi biểu thức đại số đều có biểu thức phép toán quan hệ tương đương và ngược lại Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 5: Đại số quan hệ và Phép toán quan hệ Trang 26 51 khai.hq@ou.edu.vn Các ngôn ngữ khác ‹ Các ngôn ngữ phi thủ tục dùng các quan hệ đưa vào đầu vào để lấy được đầu ra theo ý muốn (ví dụ ngôn ngữ SQL). ‹ Các ngôn ngữ đồ họa trình bày với người dùng cấu trúc của các quan hệ, người dùng sẽ thao tác trên đó như là làm ví dụ cho chương trình hiểu cần phải trả về kết quả dữ liệu như thế nào cho đúng với mong muốn (ví dụ ngôn ngữ QBE trong MS Access) 52 khai.hq@ou.edu.vn Các ngôn ngữ khác ‹ Ngôn ngữ thế hệ thứ tư (4GLs) ít dùng câu lệnh, thay vào đó là dùng giao diện trực quan. ‹ Ngôn ngữ thế hệ thứ năm (5GLs) sử dụng ngôn ngữ tự nhiên, nhưng ngôn ngữ này chưa hoàn thiện, còn đang nghiên cứu ở bước đầu. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 1 khai.hq@ou.edu.vn Chương 6: Thao tác dữ liệu với ngôn ngữ SQL Tham khảo tài liệu [A]: Chapter 5: SQL: Data Manipulation 2 khai.hq@ou.edu.vn Nội dung chương 6:  Mục đích và tầm quan trọng của SQL  Truy xuất DL từ CSDL với lệnh SELECT và: – Các điều kiện tại mệnh đề WHERE – Sắp xếp kết quả nhờ ORDER BY – Các hàm thống kê – Gom nhóm DL nhờ GROUP BY và HAVING – Các truy vấn con (Subqueries) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 2 3 khai.hq@ou.edu.vn Nội dung chương 6: (tt) – Kết các bảng với nhau – Thực hiện các phép toán trên tập hợp (UNION, INTERSECT, EXCEPT).  Cập nhật DL dùng INSERT, UPDATE, và DELETE. 4 khai.hq@ou.edu.vn Mục tiêu của ngôn ngữ SQL  Ngôn ngữ của CSDL dùng để: – Tạo CSDL và cấu trúc của các quan hệ – Thực hiện thao tác chèn, sửa, xóa dữ liệu của các quan hệ – Thực hiện các truy vấn dữ liệu  Ngôn ngữ của CSDL phải mạnh và dễ học  Ngôn ngữ của CSDL phải có tính cơ động (khả chuyển) Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 3 5 khai.hq@ou.edu.vn Mục tiêu của ngôn ngữ SQL  Ngôn ngữ SQL có 2 phần chính: – Ngôn ngữ DDL cho việc định nghĩa cấu trúc CSDL – Ngôn ngữ DML cho việc truy xuất và cập nhật dữ liệu  Ngôn ngữ SQL có định dạng mềm dẻo  Ngôn ngữ SQL thuộc loại ngôn ngữ phi thủ tục (chỉ cần miêu tả CÁI GÌ chúng ta muốn) 6 khai.hq@ou.edu.vn Mục tiêu của ngôn ngữ SQL  Ngôn ngữ SQL dùng tiếng Anh chuẩn, ví dụ: CREATE TABLE Staff(staffNo VARCHAR(5), lName VARCHAR(15), salary DECIMAL(7,2)); INSERT INTO Staff VALUES ('SG16', 'Brown', 8300); SELECT staffNo, lName, salary FROM Staff WHERE salary > 10000; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 4 7 khai.hq@ou.edu.vn Mục tiêu của ngôn ngữ SQL  Ngôn ngữ SQL có thể dùng cho các loại người sử dụng khác nhau như người quản trị CSDL, người phát triển ứng dụng, và các loại người dùng khác  Hiện nay, ngôn ngữ SQL đã đăng ký chuẩn ISO nên có tính chuẩn mực cao và trở thánh một ngôn ngữ chính thống cho CSDL quan hệ. 8 khai.hq@ou.edu.vn Lịch sử ngôn ngữ SQL  Vào 1974, D. Chamberlin (IBM San Jose Laboratory) định nghĩa ngôn ngữ 'Structured English Query Language' (SEQUEL).  Vào 1976 bảng nâng cấp là SEQUEL/2, nhưng đổi tên thành SQL cho hợp lệ (theo luật lúc đó)  Nhiều người còn phát âm là 'see-quel', mặc dầu cách phát âm chính thức là ‘S-Q-L'.  Vào 1992, ra đời phiên bản ISO standard tên là SQL2 hay SQL/92.  Vào 1999, SQL3 ra đời, có hỗ trợ quản trị dữ liệu hướng đối tượng Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 5 9 khai.hq@ou.edu.vn Viết lệnh SQL  SQL gồm các từ khóa và các từ do user định nghĩa – Từ khóa (Reserved words) là các từ qui định sẳn của ngôn ngữ SQL – Từ do user định nghĩa (User-defined words) như tên quan hệ, tên cột, tên view, 10 khai.hq@ou.edu.vn Viết lệnh SQL  Hầu hết các từ trong câu lệnh SQL không phân biệt chữ thường/chữ HOA, trừ một số hằng ký tự  Để dễ đọc, nên viết câu lệnh SQL theo cách có canh lề và xuống dòng hợp lý: - Mỗi mệnh đề nên viết một dòng - Dóng thẳng hàng lề trái các mệnh đề khi xuống dòng - Nếu một mệnh đề có nhiều phần thì mỗi phần nên viết trên một dòng Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 6 11 khai.hq@ou.edu.vn Viết lệnh SQL  Nên dùng qui ước BNF: - Từ khóa viết HOA - Từ do user định nghĩa viết thường - Dấu | chỉ sự cho phép lựa chọn - Dấu ngoặc nhọn { } chỉ thành phần bắt buộc - Dấu ngoặc vuông [ ] chỉ thành phần không bắt buộc - Dấu ba chấm chỉ sự lặp lại (0 hay nhiều lần). 12 khai.hq@ou.edu.vn Các giá trị hằng  Các giá trị hằng không phải là số phải nằm trong dấu nháy đơn (vd. ‘London’).  Các giá trị hằng là số không nằm trong dấu nháy nào cả (vd. 650.00). Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 7 13 khai.hq@ou.edu.vn Câu lệnh SELECT SELECT [DISTINCT | ALL] {* | [BiểuThứcCột [AS TênMới]] [,...] } FROM TênBảng [BíDanh] [, ...] [WHERE ĐiềuKiện] [GROUP BY DanhSáchCột] [HAVING ĐiềuKiệnChoNhóm] [ORDER BY DanhSáchCột] 14 khai.hq@ou.edu.vn Câu lệnh SELECT FROM Các bảng được dùng WHERE Điều kiện lọc các hàng dữ liệu GROUP BY Tạo nhóm các hàng có giá trị giống nhau ở 1 hay nhiều cột HAVING Điều kiện lọc để lấy 1 số nhóm SELECT Các cột muốn có trong kết quả ORDER BY Sắp thứ tự các hàng trong kết quả Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 8 15 khai.hq@ou.edu.vn Ví dụ 6.1 Lập danh sách tất cả các nhân viên: SELECT staffNo, fName, lName, address, position, sex, DOB, salary, branchNo FROM Staff;  Có thể dùng dấu * để miêu tả “lấy tất cả các cột: SELECT * FROM Staff; 16 khai.hq@ou.edu.vn Ví dụ 6.1: lấy tất cả các cột, tất cả các hàng Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 9 17 khai.hq@ou.edu.vn Ví dụ 6.2: Lấy 1 số cột SELECT staffNo, fName, lName, salary FROM Staff; 18 khai.hq@ou.edu.vn Ví dụ 6.3 Không sử dụng DISTINCT SELECT propertyNo FROM Viewing; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 10 19 khai.hq@ou.edu.vn  Dùng DISTINCT để loại bỏ dl trùng lắp: SELECT DISTINCT propertyNo FROM Viewing; Ví dụ 6.3 Có sử dụng DISTINCT 20 khai.hq@ou.edu.vn Ví dụ 6.4 Dùng các field tính toán SELECT staffNo, fName, lName, salary/12 FROM Staff; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 11 21 khai.hq@ou.edu.vn Ví dụ 6.4 Dùng các field tính toán  Dùng AS TênFieldMới: SELECT staffNo, fName, lName, salary/12 AS monthlySalary FROM Staff; 22 khai.hq@ou.edu.vn Ví dụ 6.5 SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > 10000; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 12 23 khai.hq@ou.edu.vn Ví dụ 6.6 SELECT * FROM Branch WHERE city = 'London' OR city = 'Glasgow'; 24 khai.hq@ou.edu.vn Ví dụ 6.7 SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary BETWEEN 20000 AND 30000; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 13 25 khai.hq@ou.edu.vn Ví dụ 6.7  Thay thế BETWEEN SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary>=20000 AND salary <= 30000; 26 khai.hq@ou.edu.vn Ví dụ 6.8 Toán tử IN SELECT staffNo, fName, lName, position FROM Staff WHERE position IN ('Manager', ‘Supervisor'); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 14 27 khai.hq@ou.edu.vn Ví dụ 6.8 Toán tử IN  Thay thế IN SELECT staffNo, fName, lName, position FROM Staff WHERE position='Manager' OR position=‘Supervisor'; 28 khai.hq@ou.edu.vn Ví dụ 6.9 Toán tử LIKE SELECT clientNo, fName, lName, address, telNo FROM PrivateOwner WHERE address LIKE '%Glasgow%'; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 15 29 khai.hq@ou.edu.vn Ví dụ 6.9 Toán tử LIKE  SQL có 2 biểu tượng thay thế trong mẫu: – %: chuỗi từ 0 đến nhiều ký tự – _ (gạch dưới): đại diện 1 ký tự 30 khai.hq@ou.edu.vn Ví dụ 6.10 dùng giá trị NULL Liệt kê thông tin việc xem tài sản PG4 nếu khi xem nó khách hàng không cho ý kiến SELECT clientNo, viewDate FROM Viewing WHERE propertyNo = 'PG4' AND comment IS NULL; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 16 31 khai.hq@ou.edu.vn Ví dụ 6.10 dùng giá trị NULL  Có thể dùng (IS NOT NULL) cho điều kiện ngược lại 32 khai.hq@ou.edu.vn Ví dụ 6.11 Sắp xếp dữ liệu của kết quả SELECT staffNo, fName, lName, salary FROM Staff ORDER BY salary DESC; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 17 33 khai.hq@ou.edu.vn Ví dụ 6.12 Sắp xếp dl kết quả trên nhiều cột SELECT propertyNo, type, rooms, rent FROM PropertyForRent ORDER BY type, rent DESC; 34 khai.hq@ou.edu.vn Các hàm thống kê trong lệnh SELECT  SQL chuẩn ISO có 5 hàm thống kê: (dùng sau SELECT và HAVING) COUNT đếm SUM tính tổng AVG tính trung bình cộng MIN lấy giá trị nhỏ nhất MAX lấy giá trị lớn nhất Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 18 35 khai.hq@ou.edu.vn Các hàm thống kê trong lệnh SELECT  COUNT, MIN và MAX dùng cho cả các giá trị số và không phải số  SUM và AVG chỉ dùng cho cả các giá trị số  Trừ hàm COUNT(*), các hàm khác loại bỏ giá trị NULL trước rồi mới tính kết quả  COUNT(*) đếm tất cả các hàng kể cả giá trị NULL và trùng lắp  Muốn loại bỏ trùng lắp ta dùng DISTINCT 36 khai.hq@ou.edu.vn Các hàm thống kê trong lệnh SELECT  Các hàm thống kê chỉ dùng sau SELECT và HAVING  Nếu sau SELECT có dùng hàm thống kê thì thường phải có GROUP BY. Lệnh sau là sai: SELECT staffNo, COUNT(salary) FROM Staff; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 19 37 khai.hq@ou.edu.vn Ví dụ 6.13 Dùng hàm COUNT(*) SELECT COUNT(*) AS count FROM PropertyForRent WHERE rent > 350; 38 khai.hq@ou.edu.vn Ví dụ 6.14 Dùng COUNT(DISTINCT) Có bao nhiêu nhà khác nhau được xem trong tháng 5 năm 2001? SELECT COUNT(DISTINCT propertyNo) AS count FROM Viewing WHERE date BETWEEN ‘1-May-01’ AND '31-May-01'; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 20 39 khai.hq@ou.edu.vn Ví dụ 6.15 Dùng COUNT và SUM Tìm số lượng các giám đốc và tổng số lương của họ? SELECT COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff WHERE position = 'Manager'; 40 khai.hq@ou.edu.vn Ví dụ 6.16 Dùng MIN, MAX, AVG SELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg FROM Staff; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 21 41 khai.hq@ou.edu.vn Lệnh SELECT có GROUP BY  Dùng mệnh đề GROUP BY để lấy các giá trị thống kê theo từng nhóm dl (1 nhóm là 1 số hàng)  Nội dung sau SELECT và GROUP BY có liên quan mật thiết với nhau: mỗi thành phần sau SELECT phải là 1 giá trị đơn trên từng nhóm dl, sau SELECT có thể là: – Tên các cột – Các hàm thống kê – Các hằng số – Biểu thức cấu thành từ các phần vừa kể trên 42 khai.hq@ou.edu.vn Lệnh SELECT có GROUP BY  Tất cả các tên cột trong SELECT phải xuất hiện trong GROUP BY trừ khi tên cột chỉ dùng trong các hàm thống kê.  Nếu WHERE được dùng với GROUP BY, WHERE được áp dụng trước, sau đó mới hình thành các group từ các hàng dl thỏa mãn điều kiện WHERE.  Chuẩn ISO qui định 2 giá trị NULL là giống nhau để tiện sử dụng với GROUP BY. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 22 43 khai.hq@ou.edu.vn Ví dụ 6.17 Dùng GROUP BY Tìm số nhân viên ở mỗi chi nhánh và tổng số lương của họ? SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo ORDER BY branchNo; 44 khai.hq@ou.edu.vn Ví dụ 6.17 Dùng GROUP BY Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 23 45 khai.hq@ou.edu.vn Ví dụ 6.18 Dùng HAVING Với mỗi chi nhánh có từ 2 nhân viên trở lên, Tìm số nhân viên ở mỗi chi nhánh đó và tổng số lương của họ? SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo HAVING COUNT(staffNo) > 1 ORDER BY branchNo; 46 khai.hq@ou.edu.vn Ví dụ 6.18 Dùng HAVING Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 24 47 khai.hq@ou.edu.vn Ví dụ 6.19 Dùng truy vấn con Lập DS nhân viên tại chi nhánh ở '163 Main St'. SELECT staffNo, fName, lName, position FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street = '163 Main St'); 48 khai.hq@ou.edu.vn Ví dụ 6.19 Dùng truy vấn con Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 25 49 khai.hq@ou.edu.vn Ví dụ 6.20 Dùng truy vấn con và hàm thống kê Lập DS NV có lương lớn hơn lương trung bình, và cho biết số lương vượt hơn của họ? SELECT staffNo, fName, lName, position, salary – (SELECT AVG(salary) FROM Staff) As SalDiff FROM Staff WHERE salary > (SELECT AVG(salary) FROM Staff); 50 khai.hq@ou.edu.vn Ví dụ 6.20 Dùng truy vấn con và hàm thống kê Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 26 51 khai.hq@ou.edu.vn Ví dụ 6.21 TRUY VẤN CON LỒNG NHAU, sử dụng IN Lập DS tài sản được quản lý bởi nhân viên chi nhánh tại '163 Main St'. SELECT propertyNo, street, city, postcode, type, rooms, rent FROM PropertyForRent WHERE staffNo IN (SELECT staffNo FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street = '163 Main St')); 52 khai.hq@ou.edu.vn Ví dụ 6.21 TRUY VẤN CON LỒNG NHAU, sử dụng IN Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 27 53 khai.hq@ou.edu.vn ANY và ALL  ANY và ALL có thể dùng với truy vấn con để tạo ra một cột số  Với ALL, điều kiện chỉ đúng khi nó thỏa với tất cả các giá trị của truy vấn con.  Với ANY, điều kiện đúng khi nó thỏa với bất kỳ giá trị nào của truy vấn con.  Nếu truy vấn con rỗng thì ALL trả về giá trị TRUE, ANY trả về giá trị FALSE.  SOME có thể dùng thay cho ANY. 54 khai.hq@ou.edu.vn Ví dụ 6.22 Dùng ANY/SOME Tìm các nhân viên mà lương của họ lớn hơn ít nhất lương của 1 người làm ở chi nhánh B003. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > SOME (SELECT salary FROM Staff WHERE branchNo = 'B003'); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 28 55 khai.hq@ou.edu.vn Ví dụ 6.22 Dùng ANY/SOME  Truy vấn con bên trong có kết quả là tập hợp {12000, 18000, 24000} và truy vấn bên ngoài chọn các nhân viên có lương lớn hơn bất kỳ giá trị nào trong 3 giá trị trên của tập hợp. 56 khai.hq@ou.edu.vn Ví dụ 6.23 Dùng ALL Tìm các nhân viên mà lương của họ lớn hơn lương của tất cả mọi nhân viên làm ở chi nhánh B003. SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > ALL (SELECT salary FROM Staff WHERE branchNo = 'B003'); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 29 57 khai.hq@ou.edu.vn Ví dụ 6.23 Dùng ALL 58 khai.hq@ou.edu.vn Truy vấn trên nhiều bảng  Có thể dùng truy vấn con trên cùng bảng dữ liệu với truy vấn chính.  Nếu các cột dữ liệu của kết quả được lấy từ nhiều bảng thì phải sử dụng phép kết bảng.  Để thực hiện phép kết, phải liệt kê các bảng tham gia phép kết vào mệnh đề FROM. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 30 59 khai.hq@ou.edu.vn Truy vấn trên nhiều bảng  Có thể dùng bí danh cho các bảng trong mệnh đề FROM.  Bí danh đứng sau tên bảng, cách tên bảng 1 khoảng trống.  Bí danh giúp tránh sự lầm lẫn (tốt hơn cách chỉ sử dụng tên bảng). 60 khai.hq@ou.edu.vn Ví dụ 6.24 Phép kết đơn giản Lập DS tên tất cả khách hàng có xem nhà và có đưa ra lời nhận xét. SELECT c.clientNo, fName, lName, propertyNo, comment FROM Client C, Viewing v WHERE c.clientNo = v.clientNo; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 31 61 khai.hq@ou.edu.vn Ví dụ 6.24 Phép kết đơn giản  Chỉ có những hàng ở 2 bảng cùng thỏa (c.clientNo = v.clientNo) mới có mặt trong kết quả.  Đây là một phép kết tương đương. 62 khai.hq@ou.edu.vn Dùng phép kết với lệnh JOIN  SQL cung cấp một số cách thực hiện phép kết: FROM Client c JOIN Viewing v ON c.clientNo = v.clientNo FROM Client JOIN Viewing USING clientNo FROM Client NATURAL JOIN Viewing  Trong 3 cách trên, FROM đã thay gồm luôn phần WHERE của phép kết.  Cách thứ nhất tạo ra 2 cột giống hệt nhau. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 32 63 khai.hq@ou.edu.vn Ví dụ 6.26 Kết 3 bảng Với mỗi chi nhánh, liệt kê các nhân viên có quản lý tài sản, bao gồm thông tin thành phố của chi nhánh và mã tài sản được quản lý. SELECT b.branchNo, b.city, s.staffNo, fName, lName, propertyNo FROM branch b, staff s, property_for_rent p WHERE b.branchNo = s.branchNo AND s.staffNo = p.staffNo ORDER BY b.branchNo, s.staffNo, propertyNo; 64 khai.hq@ou.edu.vn Ví dụ 6.26 Kết 3 bảng  Một cách khác viết FROM : FROM (branch b JOIN Staff s USING branchNo) AS bs JOIN PropertyForRent p USING staffNo Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 33 65 khai.hq@ou.edu.vn Ví dụ 6.27 Nhóm nhiều cột Tìm số lượng tài sản dạng được quản lý bởi từng nhân viên SELECT s.branchNo, s.staffNo, COUNT(*) AS count FROM Staff s, PropertyForRent p WHERE s.staffNo = p.staffNo GROUP BY s.branchNo, s.staffNo ORDER BY s.branchNo, s.staffNo; 66 khai.hq@ou.edu.vn Ví dụ 6.27 Nhóm nhiều cột Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 34 67 khai.hq@ou.edu.vn Câu lệnh SQL thực hiện phép tích Đề-các SELECT [DISTINCT | ALL] {* | columnList} FROM Table1 CROSS JOIN Table2 68 khai.hq@ou.edu.vn Phép kết ngoài  Phép kết ngoài cho phép giữ lại các hàng không thỏa điều kiện kết  Ví dụ xét 2 bảng sau: Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 35 69 khai.hq@ou.edu.vn Phép kết ngoài  Phép kết (trong) của 2 bảng: SELECT b.*, p.* FROM Branch1 b, PropertyForRent1 p WHERE b.bCity = p.pCity; 70 khai.hq@ou.edu.vn Ví dụ 6.28 Phép kết ngoài Liệt kê thông tin tất cả chi nhánh, bên cạnh là thông tin các tài sản cùng thành phố với các chi nhánh. SELECT b.*, p.* FROM Branch1 b LEFT JOIN PropertyForRent1 p ON b.bCity = p.pCity; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 36 71 khai.hq@ou.edu.vn Ví dụ 6.29 Phép kết ngoài bên phải Liệt kê thông tin chi nhánh có cùng thành phố với thông tin các tài sản (liệt kê tất cả các tài sản) SELECT b.*, p.* FROM Branch1 b RIGHT JOIN PropertyForRent1 p ON b.bCity = p.pCity; 72 khai.hq@ou.edu.vn Ví dụ 6.30 Phép kết ngoài đầy đủ Liệt kê thông tin tất cả chi nhánh, bên cạnh là thông tin tất cả các tài sản cùng thành phố với các chi nhánh. SELECT b.*, p.* FROM Branch1 b FULL JOIN PropertyForRent1 p ON b.bCity = p.pCity; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 37 73 khai.hq@ou.edu.vn EXISTS và NOT EXISTS  EXISTS và NOT EXISTS chỉ dùng với các truy vấn con, có kết quả là true hoặc false  EXISTS chỉ có giá trị True khi và chỉ khi truy vấn con có tồn tại ít nhất 1 hàng.  EXISTS có giá trị Fasle khi truy vấn con có kết quả rỗng.  NOT EXISTS có giá trị ngược với EXISTS. 74 khai.hq@ou.edu.vn Ví dụ 6.31 Truy vấn dùng EXISTS Tìm tất cả nhân viên làm việc ở chi nhánh London. SELECT staffNo, fName, lName, position FROM Staff s WHERE EXISTS (SELECT * FROM Branch b WHERE s.branchNo = b.branchNo AND city = 'London'); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 38 75 khai.hq@ou.edu.vn Ví dụ 6.31 Truy vấn dùng EXISTS 76 khai.hq@ou.edu.vn Ví dụ 6.31 Truy vấn dùng EXISTS  Có thể viết lại dùng JOIN, không dùng EXISTS: SELECT staffNo, fName, lName, position FROM Staff s, Branch b WHERE s.branchNo = b.branchNo AND city = 'London'; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 39 77 khai.hq@ou.edu.vn Ví dụ 6.32 Dùng phép hội UNION Liệt kê tất cả các thành phố có chi nhánh hay có tài sản. (SELECT city FROM Branch WHERE city IS NOT NULL) UNION (SELECT city FROM PropertyForRent WHERE city IS NOT NULL); 78 khai.hq@ou.edu.vn Ví dụ 6.32 Dùng phép hội UNION – Hay: (SELECT * FROM Branch WHERE city IS NOT NULL) UNION CORRESPONDING BY city (SELECT * FROM PropertyForRent WHERE city IS NOT NULL); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 40 79 khai.hq@ou.edu.vn Ví dụ 6.33 Dùng phép giao INTERSECT Liệt kê tất cả các thành phố vừa có chi nhánh vừa có tài sản. (SELECT city FROM Branch) INTERSECT (SELECT city FROM PropertyForRent); 80 khai.hq@ou.edu.vn Ví dụ 6.33 Dùng phép giao INTERSECT  Hay: (SELECT * FROM Branch) INTERSECT CORRESPONDING BY city (SELECT * FROM PropertyForRent); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 41 81 khai.hq@ou.edu.vn Ví dụ 6.33 Dùng phép giao INTERSECT  Có thể viết lại không dùng INTERSECT: SELECT b.city FROM Branch b PropertyForRent p WHERE b.city = p.city;  Hay: SELECT DISTINCT city FROM Branch b WHERE EXISTS (SELECT * FROM PropertyForRent p WHERE p.city = b.city); 82 khai.hq@ou.edu.vn Ví dụ 6.34 Dùng phép trừ EXCEPT Liệt kê tất cả các thành phố có chi nhánh nhưng không có tài sản. (SELECT city FROM Branch) city FROM EXCEPT (SELECT PropertyForRent);  Or (SELECT * FROM Branch) EXCEPT CORRESPONDING BY city (SELECT * FROM PropertyForRent); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 42 83 khai.hq@ou.edu.vn Ví dụ 6.34 Dùng phép trừ EXCEPT  Có thể viết lại không dùng EXCEPT: SELECT DISTINCT city FROM Branch WHERE city NOT IN (SELECT city FROM PropertyForRent);  Hay: SELECT DISTINCT city FROM Branch b WHERE NOT EXISTS (SELECT * FROM PropertyForRent p WHERE p.city = b.city); 84 khai.hq@ou.edu.vn Thêm dữ liệu với INSERT INTO INSERT INTO TênBảng [ (DanhSáchCột) ] VALUES (DanhSáchGiáTrịDữLiệu)  DanhSáchCột phần lựa chọn; Nếu bỏ qua, SQL sẽ lấy danh sách cột nguyên thủy như trong lệnh CREATE TABLE.  Danh sách dữ liệu phải tương ứng với vị trí các cột, và tương thích với kiểu dữ liệu của từng cột Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 43 85 khai.hq@ou.edu.vn Ví dụ 6.35 Dùng lệnh INSERT INTO VALUES Thêm 1 hàng dữ liệu vào bảng Staff: INSERT INTO Staff VALUES ('SG16', 'Alan', 'Brown', 'Assistant', 'M', Date‘1957-05-25', 8300, 'B003'); 86 khai.hq@ou.edu.vn Ví dụ 6.35 Dùng lệnh INSERT INTO VALUES Khi thêm dữ liệu vào một bảng phải thêm đủ dữ liệu cho các cột bắt buộc phải nhập liệu. INSERT INTO Staff (staffNo, fName, lName, position, salary, branchNo) VALUES ('SG44', 'Anne', 'Jones', 'Assistant', 8100, 'B003');  Hay: INSERT INTO Staff VALUES ('SG44', 'Anne', 'Jones', 'Assistant', NULL, NULL, 8100, 'B003'); Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 44 87 khai.hq@ou.edu.vn Dùng lệnh INSERT INTO SELECT  Thêm dữ liệu là kết quả của lệnh SELECT vào một bảng: INSERT INTO TênBảng [ (DanhSáchCột) ] SELECT ... 88 khai.hq@ou.edu.vn Ví dụ 6.37 Dùng lệnh INSERT INTO SELECT Giả sử có một bảng dữ liệu chứa số lượng tài sản được quản lý bởi các nhân viên: StaffPropCount(staffNo, fName, lName, propCnt) Hãy tạo dữ liệu cho bảng StaffPropCount dùng bảng Staff và bảng PropertyForRent. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 45 89 khai.hq@ou.edu.vn Ví dụ 6.37 Dùng lệnh INSERT INTO SELECT INSERT INTO StaffPropCount (SELECT s.staffNo, fName, lName, COUNT(*) FROM Staff s, PropertyForRent p WHERE s.staffNo = p.staffNo GROUP BY s.staffNo, fName, lName) UNION (SELECT staffNo, fName, lName, 0 FROM Staff WHERE staffNo NOT IN (SELECT DISTINCT staffNo FROM PropertyForRent)); 90 khai.hq@ou.edu.vn Ví dụ 6.37 Dùng lệnh INSERT INTO SELECT  Nếu phần sau UNION bị bỏ đi, danh sách sẽ thiếu các nhân viên không qủn lý tài sản nào. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 46 91 khai.hq@ou.edu.vn Lệnh sửa dữ liệu UPDATE UPDATE TênBảng SET TênCột1 = DữLiệu1 [, TênCột2 = DữLiệu2...] [WHERE D9ie62uKie65n]  TableName can be name of a base table or an updatable view.  SET clause specifies names of one or more columns that are to be updated. 92 khai.hq@ou.edu.vn Lệnh sửa dữ liệu UPDATE SET UPDATE TênBảng SET TênCột1 = DữLiệu1 [, TênCột2 = DữLiệu2...] [WHERE ĐiềuKiệnLọcTìm]  Tên bảng có thể thế bằng tên view loại cập nhật được.  Các dữ liệu phải tương thích kiểu với từng cột. Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 47 93 khai.hq@ou.edu.vn Ví dụ 6.38/39 Lệnh sửa dữ liệu UPDATE SET Tăng lương tất cả nhân viên lên 3%. UPDATE Staff SET salary = salary*1.03; Tăng lương tất cả giám đốc lên 5%. UPDATE Staff SET salary = salary*1.05 WHERE position = 'Manager'; 94 khai.hq@ou.edu.vn Ví dụ 6.40 Lệnh sửa dữ liệu UPDATE SET Thăng chức David Ford (staffNo = 'SG14') thành giám đốc và tăng lương lên 18,000. UPDATE Staff SET position = 'Manager', salary = 18000 WHERE staffNo = 'SG14'; Nhập môn cơ sở dữ liệu www.ou.edu.vn Chương 6: Ngôn ngữ SQL thao tác dữ liệu Trang 48 95 khai.hq@ou.edu.vn Lệnh xóa các hàng dữ liệu DELETE DELETE FROM TênBảng [WHERE ĐiềuKiệnLọcTìmDL]  Tên bảng có thể thế bằng tên view loại cập nhật được.  Nếu không có điều kiện lọc tìm dữ liệu thì câu lệnh sẻ xóa tất cả các hàng dữ liệu. 96 khai.hq@ou.edu.vn Ví dụ 6.41/42 Lệnh xóa các hàng dữ liệu DELETE Xóa dữ liệu xem nhà PG4. DELETE FROM Viewing WHERE propertyNo = 'PG4'; Xóa toàn bộ dữ liệu xem nhà. DELETE FROM Viewing; HẾT CHƯƠNG 6 Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 1 Nhập môn cơ sở dữ liệu www.ou.edu.vn khai.hq@ou.edu.vn Chương 7: Định nghĩa dữ liệu với ngôn ngữ SQL Tham khảo tài liệu [A]: Chapter 6 : SQL: Data Definition 2 khai.hq@ou.edu.vn Nội dung chương 7 ‹ Các kiểu dữ liệu của SQL chuẩn. ‹Mục đích của việc tăng cường tính toàn vẹn của SQL. ‹ Cách định nghĩa các ràng buộc toàn vẹn dùng SQL. ‹ Cách viết lệnh CREATE và ALTER TABLE có tăng cường tính toàn vẹn dữ liệu. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 2 Nhập môn cơ sở dữ liệu www.ou.edu.vn 3 khai.hq@ou.edu.vn Nội dung chương 7 ‹Mục đích của VIEW ‹ Tạo và xóa VIEW dùng SQL. ‹ Cách DBMS thực hiện các thao tác trên VIEW. ‹ Điếu kiện để VIEW cập nhật dữ liệu được ‹Ưu và nhược điểm của VIEW ‹Mô hình giao tác theo chuẩn ISO ‹ Dùng lệnh GRANT và REVOKE 4 khai.hq@ou.edu.vn Các kiểu dữ liệu của SQL chuẩn ISO Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 3 Nhập môn cơ sở dữ liệu www.ou.edu.vn 5 khai.hq@ou.edu.vn Đặc tính tăng cường tính toàn vẹn dữ liệu ‹ Xét 5 loại ràng buộc toàn vẹn: – Ràng buộc bắt buộc nhập liệu – Ràng buộc về miền thuộc tính – Ràng buộc về thực thể – Ràng buộc trong tham khảo dữ liệu – Ràng buộc từ phía công ty 6 khai.hq@ou.edu.vn Đặc tính tăng cường tính toàn vẹn dữ liệu Ràng buộc bắt buộc nhập liệu: position VARCHAR(10) NOT NULL Ràng buộc về miền thuộc tính: (a) CHECK sex CHAR NOT NULL CHECK (sex IN ('M', 'F')) Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 4 Nhập môn cơ sở dữ liệu www.ou.edu.vn 7 khai.hq@ou.edu.vn Đặc tính tăng cường tính toàn vẹn dữ liệu (b) CREATE DOMAIN CREATE DOMAIN DomainName [AS] dataType [DEFAULT defaultOption] [CHECK (searchCondition)] Ví dụ: CREATE DOMAIN SexType AS CHAR CHECK (VALUE IN ('M', 'F')); sex SexType NOT NULL 8 khai.hq@ou.edu.vn Đặc tính tăng cường tính toàn vẹn dữ liệu ‹ searchCondition có thể tìm trong một bảng dữ liệu : CREATE DOMAIN BranchNo AS CHAR(4) CHECK (VALUE IN (SELECT branchNo FROM Branch)); ‹Miền có thể được xóa bằng DROP DOMAIN: DROP DOMAIN DomainName [RESTRICT | CASCADE] Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 5 Nhập môn cơ sở dữ liệu www.ou.edu.vn 9 khai.hq@ou.edu.vn Ràng buộc về thực thể ‹Khóa chính của một bảng phải chứa một giá trị duy nhất và khác NULL ‹ Chuẩn ISO hỗ trợ mệnh đề FOREIGN KEY trong câu lệnh CREATE và ALTER TABLE PRIMARY KEY(staffNo) PRIMARY KEY(clientNo, propertyNo) ‹ Chỉ dùng một mệnh đề PRIMARY KEY cho mỗi bảng. Đối với các thuộc tính khác, muốn cấm việc trùng dữ liệu thì dùng lệnh UNIQUE: UNIQUE(telNo) 10 khai.hq@ou.edu.vn Ràng buộc trong tham khảo dữ liệu ‹Khóa ngoại (FK) là 1 hay nhiều cột có tính chất liên kết mỗi hàng ở bảng con chứa FK đến 1 hàng có giá trị tương ứng trong bảng cha. ‹ Vậy nếu FK chứa một giá trị, thì giá trị đó phải tham khảo đến một hàng hiện hữu ở bảng cha của FK. ‹ Chuẩn ISO hỗ trợ định nghĩa FOREIGN KEY trong CREATE và ALTER TABLE: FOREIGN KEY(branchNo) REFERENCES Branch Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 6 Nhập môn cơ sở dữ liệu www.ou.edu.vn 11 khai.hq@ou.edu.vn Ràng buộc trong tham khảo dữ liệu ‹ Bất kỳ lệnh INSERT/UPDATE nào làm cho dữ liệu của FK không giống với giá trị nào của FK ở bảng cha đều không thực hiện được. ‹ Thao tác update/delete trên bảng cha có liên quan đến FK bị phụ thuộc vào mệnh đề ON UPDATE và ON DELETE: – CASCADE - SET NULL, – SET DEFAULT - NO ACTION 12 khai.hq@ou.edu.vn Ràng buộc trong tham khảo dữ liệu CASCADE: xóa dây chuyền SET NULL: Khi xóa hàng dữ liệu trong bảng cha thì tại các giá trị tương ứng của FK ở bảng con sẽ được gán về NULL (Nếu giá trị của FK là khác NULL) SET DEFAULT: Khi xóa hàng dữ liệu trong bảng cha thì tại các giá trị tương ứng của FK ở bảng con sẽ được gán về mặc định nào đó. NO ACTION: Không cho xóa ở bảng cha (mặc định) Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 7 Nhập môn cơ sở dữ liệu www.ou.edu.vn 13 khai.hq@ou.edu.vn Ràng buộc trong tham khảo dữ liệu FOREIGN KEY (staffNo) REFERENCES Staff ON DELETE SET NULL FOREIGN KEY (ownerNo) REFERENCES Owner ON UPDATE CASCADE 14 khai.hq@ou.edu.vn Ràng buộc từ phía công ty ‹ Có thể dùng CHECK/UNIQUE trong câu lệnh CREATE và ALTER TABLE. ‹Hay: CREATE ASSERTION AssertionName CHECK (searchCondition) ‹Giống như sử dụng mệnh đề CHECK Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 8 Nhập môn cơ sở dữ liệu www.ou.edu.vn 15 khai.hq@ou.edu.vn Ràng buộc từ phía công ty CREATE ASSERTION StaffNotHandlingTooMuch CHECK (NOT EXISTS (SELECT staffNo FROM PropertyForRent GROUP BY staffNo HAVING COUNT(*) > 100)) 16 khai.hq@ou.edu.vn Định nghĩa dữ liệu ‹ SQL DDL cho phép tạo và xóa schema, domain, table, view, và index ‹ Các câu lệnh SQL DDL chính là: CREATE SCHEMA DROP SCHEMA CREATE/ALTER DOMAIN DROP DOMAIN CREATE/ALTER TABLEDROP TABLE CREATE VIEW DROP VIEW ‹ Nhiều DBMS cho phép: CREATE INDEX DROP INDEX Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 9 Nhập môn cơ sở dữ liệu www.ou.edu.vn 17 khai.hq@ou.edu.vn Định nghĩa dữ liệu ‹ Các quan hệ và các đối tượng CSDL khác tồn tại trong một môi trường (environment) ‹Mỗi môi trường chứa 1 hay nhiều catalog, mỗi catalog bao gồm tập hợp các lược đồ (schema) ‹ Lược đồ có tên theo ý nghĩa là tập hợp các đối tượng CSDL có liên quan nhau ‹ Các đối tượng trong một lược đồ có thể là: tables, views, domains, assertions, collations, translations, và các tập ký tự. Một lược đồ của một tác giả. 18 khai.hq@ou.edu.vn CREATE SCHEMA CREATE SCHEMA [Name | AUTHORIZATION CreatorId ] DROP SCHEMA Name [RESTRICT | CASCADE ] ‹ Với RESTRICT (default), schema phải rỗng, nếu không rỗng sẽ không xóa được ‹ Với CASCADE sẽ xóa dây chuyền tất cả các đối tượng có liên quan đến schema Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 10 Nhập môn cơ sở dữ liệu www.ou.edu.vn 19 khai.hq@ou.edu.vn CREATE TABLE CREATE TABLE TableName {(colName dataType [NOT NULL] [UNIQUE] [DEFAULT defaultOption] [CHECK searchCondition] [,...]} [PRIMARY KEY (listOfColumns),] {[UNIQUE (listOfColumns),] [,]} {[FOREIGN KEY (listOfFKColumns) REFERENCES ParentTableName [(listOfCKColumns)], [ON UPDATE referentialAction] [ON DELETE referentialAction ]] [,]} {[CHECK searchCondition)] [,] }) 20 khai.hq@ou.edu.vn CREATE TABLE ‹ Tạo một bảng với các cột, mỗi cột có kiểu dữ liệu riêng ‹ Với NOT NULL, cột không chấp nhận giá trị NULL ‹Mỗi cột có thể đặt một giá trị DEFAULT ‹Khóa chính phải đặt NOT NULL ‹ FOREIGN KEY có chỉ ra chế độ thao tác xóa/sửa ở cột có liên quan bảng cha Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 11 Nhập môn cơ sở dữ liệu www.ou.edu.vn 21 khai.hq@ou.edu.vn Ví dụ 7.1 - CREATE TABLE ‹CREATE DOMAIN OwnerNumber AS VARCHAR(5) CHECK (VALUE IN (SELECT ownerNo FROM Owner)); ‹CREATE DOMAIN StaffNumber AS VARCHAR(5) CHECK (VALUE IN (SELECT staffNo FROM Staff)); ‹CREATE DOMAIN PNumber AS VARCHAR(5); ‹CREATE DOMAIN PRooms AS SMALLINT; CHECK(VALUE BETWEEN 1 AND 15); ‹CREATE DOMAIN PRent AS DECIMAL(6,2) CHECK(VALUE BETWEEN 0 AND 9999.99); 22 khai.hq@ou.edu.vn Ví dụ 7.1 - CREATE TABLE CREATE TABLE PropertyForRent ( propertyNo PNumber NOT NULL, . rooms PRooms NOT NULL DEFAULT 4, rent PRent NOT NULL, DEFAULT 600, ownerNo OwnerNumber NOT NULL, staffNo StaffNumber Constraint StaffNotHandlingTooMuch . branchNo BranchNumber NOT NULL, PRIMARY KEY (propertyNo), FOREIGN KEY (staffNo) REFERENCES Staff ON DELETE SET NULL ON UPDATE CASCADE .); Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 12 Nhập môn cơ sở dữ liệu www.ou.edu.vn 23 khai.hq@ou.edu.vn ALTER TABLE ‹ Thêm một cột mới cho một bảng ‹ Xóa một cột của một bảng ‹ Thêm một ràng buộc cho bảng ‹ Xóa một ràng buộc của bảng ‹ Đặt giá trị default cho một cột ‹ Xóa việc đặt giá trị default cho một cột 24 khai.hq@ou.edu.vn Ví dụ 7.2(a) - ALTER TABLE Bảng Staff: xóa giá trị default 'Assistant' cho cột position và đặt giá trị default cho cột sex là Female ('F'). ALTER TABLE Staff ALTER position DROP DEFAULT; ALTER TABLE Staff ALTER sex SET DEFAULT 'F'; Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 13 Nhập môn cơ sở dữ liệu www.ou.edu.vn 25 khai.hq@ou.edu.vn Ví dụ 7.2(b) - ALTER TABLE Xóa ràng buộc không cho một nhân viên quản lý hơn 100 tài sản; thêm vào bảng Client một cột mới ALTER TABLE PropertyForRent DROP CONSTRAINT StaffNotHandlingTooMuch; ALTER TABLE Client ADD prefNoRooms PRooms; 26 khai.hq@ou.edu.vn DROP TABLE DROP TABLE TableName [RESTRICT | CASCADE] ví dụ: DROP TABLE PropertyForRent; ‹ Xóa bảng và dữ liệu trong bảng ‹ Với RESTRICT, nếu các đối tượng khác có dùng bảng thì không thể xóa bảng ‹ Với CASCADE: xóa dây chuyền Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 14 Nhập môn cơ sở dữ liệu www.ou.edu.vn 27 khai.hq@ou.edu.vn View ‹ Nội dung của một view được định nghĩa như là một truy vấn trên một hay nhiều quan hệ nền ‹ Với view phân giải (view resolution), bất kỳ thao tác nào trên view sẽ chuyển thành các thao tác trên các quan hệ nền của nó ‹ Với view vật chất (view materialization), view được lưu như là một bảng tạm. Khi nào các quan hệ nền được cập nhật thì view nên cập nhật theo. 28 khai.hq@ou.edu.vn Lệnh CREATE VIEW CREATE VIEW ViewName [ (newColumnName [,...]) ] AS subselect [WITH [CASCADED | LOCAL] CHECK OPTION] ‹Có thể gán tên cho mỗi cột của view. ‹Nếu có ghi danh sách tên các cột thì số lượng các tên cột phải bằng số lượng cột trong kết quả của subselect. ‹Nếu không có ghi danh sách tên các cột thì các cột lấy tên từ kết quả của subselect. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 15 Nhập môn cơ sở dữ liệu www.ou.edu.vn 29 khai.hq@ou.edu.vn Lệnh CREATE VIEW ‹ Nên liệt kê các tên của view để tránh sự nhầm lẫn. ‹ Phần subselect được gọi là phần truy vấn định nghĩa view (defining query). ‹ Phần WITH CHECK OPTION bảo đảm rằng nếu hàng dữ liệu nào không thỏa phần WHERE thì sẽ không được thêm vào bảng dữ liệu nền. 30 khai.hq@ou.edu.vn Ví dụ 7.3 - Tạo View theo chiều ngang Tạo view để giám đốc chi nhánh B003 chỉ thấy chi tiết về các nhân viên làm việc tại chi nhánh này. CREATE VIEW Manager3Staff AS SELECT * FROM Staff WHERE branchNo = 'B003'; Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 16 Nhập môn cơ sở dữ liệu www.ou.edu.vn 31 khai.hq@ou.edu.vn Ví dụ 7.4 - Tạo View theo chiều dọc Tạo view chi tiết nhân viên tại chi nhánh B003 không có cột salaries. CREATE VIEW Staff3 AS SELECT staffNo, fName, lName, position, sex FROM Staff WHERE branchNo = 'B003'; 32 khai.hq@ou.edu.vn Ví dụ 7.5 - Tạo View có nhóm, có kết dữ liệu Tạo view nhân viên quản lý tài sản, bao gồm: mã chi nhánh đang làm việc, mã nhân viên, và mã tài sản mà nhân viên đang quản lý. CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt) AS SELECT s.branchNo, s.staffNo, COUNT(*) FROM Staff s, PropertyForRent p WHERE s.staffNo = p.staffNo GROUP BY s.branchNo, s.staffNo; Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 17 Nhập môn cơ sở dữ liệu www.ou.edu.vn 33 khai.hq@ou.edu.vn Ví dụ 7.5 - Tạo View có nhóm, có kết dữ liệu 34 khai.hq@ou.edu.vn Lệnh DROP VIEW DROP VIEW ViewName [RESTRICT | CASCADE] ‹ Để xóa view trong cơ sở dữ liệu . ‹ Ví dụ: DROP VIEW Manager3Staff; ‹ Với CASCADE: xóa dây chuyền ‹ Với RESTRICT (mặc định): không cho xóa view nếu các đối tượng khác có sử dụng view Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 18 Nhập môn cơ sở dữ liệu www.ou.edu.vn 35 khai.hq@ou.edu.vn Sự phân giải view (view phân giải) Đếm số lượng tài sản được quản lý bởi từng nhân viên ở chí nhánh B003. SELECT staffNo, cnt FROM StaffPropCnt WHERE branchNo = 'B003' ORDER BY staffNo; 36 khai.hq@ou.edu.vn Sự phân giải view (view phân giải) (a) Các tên cột của view sau SELECT được phân giải thành các tên tương ứng trong truy vấn định nghĩa: SELECT s.staffNo As staffNo, COUNT(*) As cnt (b) Tên view sau FROM được thay thế bằng danh sách sau phần FROM của truy vấn định nghĩa view: FROM Staff s, PropertyForRent p Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 19 Nhập môn cơ sở dữ liệu www.ou.edu.vn 37 khai.hq@ou.edu.vn (c) Cuối cùng, truy vấn sau sẽ thực thi để lấy kết quả: SELECT s.staffNo, COUNT(*) FROM staff s, PropertyForRent p WHERE s.staffNo = p.staffNo AND branchNo = 'B003' GROUP BY s.branchNo, s.staffNo ORDER BY s.staffNo; Sự phân giải view (view phân giải) 38 khai.hq@ou.edu.vn Giới hạn cho view SQL đặt ra nhiều giới hạn trong việc tạo và sử dụng view. (a) Nếu view có cột sử dụng hàm thống kê: – Cột này chỉ có thể xuất hiện trong SELECT và ORDER BY của câu truy vấn view này. – Cột này không dùng trong WHERE và cũng không nằm trong một hàm thống kê trong câu truy vấn view này. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 20 Nhập môn cơ sở dữ liệu www.ou.edu.vn 39 khai.hq@ou.edu.vn Giới hạn cho view ‹ Ví dụ, truy vấn sau là sai: SELECT COUNT(cnt) FROM StaffPropCnt; ‹ Tương tự, truy vấn sau là sai : SELECT * FROM StaffPropCnt WHERE cnt > 2; 40 khai.hq@ou.edu.vn Giới hạn cho view (b) View có nhóm không được kết với các view khác hay kết với các bảng dữ liệu nền. ‹ Ví dụ, view tên StaffPropCnt là một view có nhóm, do đó không được kết view này với các bảng hay các view khác. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 21 Nhập môn cơ sở dữ liệu www.ou.edu.vn 41 khai.hq@ou.edu.vn Việc cập nhật view ‹ Cập nhật dữ liệu từ các bảng nền sẽ kéo theo sự cập nhật dữ liệu lên các view có liên quan ‹ Tuy nhiên chiều ngược lại là không phải bao giờ cũng thực hiện được. 42 khai.hq@ou.edu.vn Việc cập nhật view ‹ Xét view tên StaffPropCnt, nếu chúng ta thử thêm một hàng dữ liệu: tại chi nhánh B003, nhân viên SG5 quản lý 2 tài sản: INSERT INTO StaffPropCnt VALUES ('B003', 'SG5', 2); ‹ Việc này dẫn tới việc bắt buộc phải nhập 2 hàng dữ liệu trong bảng PropertyForRent (2 tài sản do SG5 quản lý), tuy nhiên do không có thông tin về 2 mã tài sản nên không thể thêm 2 hàng dữ liệu này được. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 22 Nhập môn cơ sở dữ liệu www.ou.edu.vn 43 khai.hq@ou.edu.vn Việc cập nhật view ‹ SQL chuẩn ISO qui định một view cập nhật được nếu: -Không dùng DISTINCT - Sau SELECT là các tên cột, và không dùng các cột hơn một lần - Sau FROM chỉ có một bảng - Không có lệnh SELECT lồng nhau dùng các bảng khác - Không có GROUP BY và HAVING - Dữ liệu thêm vào phải thỏa các ràng buộc toàn vẹn của bảng dữ liệu 44 khai.hq@ou.edu.vn Dùng WITH CHECK OPTION ‹ Các hàng trong có mặt trong view vì thỏa điều kiện WHERE. ‹ Nếu một hàng không còn thỏa điều kiện WHERE sẽ biến mất khỏi view. ‹ Các hàng mới có thể sẽ xuất hiện trong view khi có sự chèn/thêm dữ liệu (nếu thỏa điều kiện WHERE) ‹ Các hàng mới có hoặc bị mất đi khỏi view gọi là các hàng dịch chuyển vào ra (migrating rows) ‹WITH CHECK OPTION cấm các hàng dịch chuyển ra khỏi view. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 23 Nhập môn cơ sở dữ liệu www.ou.edu.vn 45 khai.hq@ou.edu.vn Dùng WITH CHECK OPTION ‹ LOCAL/CASCADED apply to view hierarchies. ‹ Nếu dùng LOCAL: không cho các hàng ra khỏi (biến khỏi) view trừ khi các hàng đó đã biến khỏi các bảng hay view khác mà view này đang tham khảo. ‹ Nếu dùng CASCADED (default): không cho các hàng ra khỏi (biến khỏi) view. 46 khai.hq@ou.edu.vn Ví dụ 7.6 - Dùng WITH CHECK OPTION CREATE VIEW Manager3Staff AS SELECT * FROM Staff WHERE branchNo = 'B003' WITH CHECK OPTION; ‹Không thể sửa B003 thành B002 vì khi đó các hàng sẽ biến khỏi view. ‹Không thể thêm các hàng có chi nhánh khác B003. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 24 Nhập môn cơ sở dữ liệu www.ou.edu.vn 47 khai.hq@ou.edu.vn Ví dụ 7.6 - Dùng WITH CHECK OPTION ‹ Nếu view tên Manager3Staff không lấy dl trực tiếp từ bảng Staff mà từ một view khác: CREATE VIEW LowSalary AS SELECT * FROM Staff WHERE salary > 9000; CREATE VIEW HighSalary AS SELECT * FROM LowSalary WHERE salary > 10000 WITH LOCAL CHECK OPTION; CREATE VIEW Manager3Staff AS SELECT * FROM HighSalary WHERE branchNo = 'B003'; 48 khai.hq@ou.edu.vn Ví dụ 7.6 - WITH CHECK OPTION UPDATE Manager3Staff SET salary = 9500 WHERE staffNo = 'SG37'; ‹ Update không thể thực hiện được: cho dù hàng dl có thể biến khỏi HighSalary, nhưng không thể biến khỏi LowSalary. ‹ Tuy nhiên, nếu update gán Salary = 8000, update sẽ thành công vì hàng dl không thuộc LowSalary. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 25 Nhập môn cơ sở dữ liệu www.ou.edu.vn 49 khai.hq@ou.edu.vn Vi dụ 7.6 - WITH CHECK OPTION ‹ Nếu HighSalary dùng WITH CASCADED CHECK OPTION, thì không thể gán Salary bằng 9500 hay 8000 vì hàng dl sẽ biến khỏi HighSalary. ‹ Để tránh việc dị thường như vậy, các view nên dùng WITH CASCADED CHECK OPTION. 50 khai.hq@ou.edu.vn Ưu điểm của View ‹ Độc lập dữ liệu ‹ Tiết kiệm chi phí ‹ Tăng tính an toàn ‹Giảm độ phức tạp ‹ Tiện lợi ‹Mềm dẻo ‹ Toàn vẹn dữ liệu Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 26 Nhập môn cơ sở dữ liệu www.ou.edu.vn 51 khai.hq@ou.edu.vn Nhược điểm của View ‹Hạn chế trong cập nhật dữ liệu ‹Giới hạn vế cấu trúc ‹ Chậm hơn 52 khai.hq@ou.edu.vn Vật chất hóa view (View vật chất) ‹ View phân giải chậm, nhất là khi truy xuất thường xuyên. ‹ View vật chất lưu view như một bảng tạm khi truy xuất lần đầu tiên ‹ Do đó, view vật chất chạy nhanh hơn. ‹ Nhưng: phải xem xét đến việc cập nhật view vật chất (bảo trì) khi bảng nền của nó được cập nhật. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 27 Nhập môn cơ sở dữ liệu www.ou.edu.vn 53 khai.hq@ou.edu.vn Bảo trì view ‹ Việc bảo trì view giúp cho view có thông tin hiện hành. ‹ Xét view sau: CREATE VIEW StaffPropRent(staffNo) AS SELECT DISTINCT staffNo FROM PropertyForRent WHERE branchNo = 'B003‘ AND rent > 400; 54 khai.hq@ou.edu.vn Vật chất hóa view (View vật chất) ‹ Nếu chèn hàng vào PropertyForRent có rent ≤400 thì view không đổi ‹ Nếu chèn hàng vào cho tài sản PG24 tại B003 với staffNo = SG19 và rent = 550, thì hàng đó sẽ xuất hiện trong view vật chất ‹ Nếu chèn hàng vào cho tài sản PG54 tại B003 với staffNo = SG37 và rent = 450, thì không cần thêm hàng cho view vật chất. ‹ Nếu xóa tài sản PG24, hàng dữ liệu này sẽ biến khỏi view ‹ Nếu xóa tài sản PG54, thì hàng dữ liệu cho tài sản PG37 không nên bị xóa (bởi vì còn tồn tại tài sản PG21) Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 28 Nhập môn cơ sở dữ liệu www.ou.edu.vn 55 khai.hq@ou.edu.vn Giao tác (Transactions) ‹ SQL định nghĩa mô hình giao tác dựa vào COMMIT và ROLLBACK. ‹Giao tác là một đơn vị logic của công việc, các lệnh SQL về giao tác phải bảo đảm việc giao tác thực hiện xong công việc hoặc là phục hồi lại trạng thái trước giao tác. ‹Một giao tác của SQL tự động khởi động với câu lệnh có tính khởi động giao tác (như lệnh SELECT, INSERT). ‹ Các thay đổi do giao tác gây ra bị dấu đi cho đến khi hoàn thành giao tác 56 khai.hq@ou.edu.vn Giao tác (Transactions) ‹ Giao tác có thể kết thúc trong 4 trường hợp sau: - COMMIT kết thúc thành công, dữ liệu sẽ được cập nhật - ROLLBACK hủy bỏ giao tác, hoàn lại trạng thái trước khi giao tác làm cho thay đổi - Trong lập trình với SQL, các chương trình có thể kết thúc giao tác thành công, kể cả khi chưa thực hiện lệnh COMMIT. - Trong lập trình với SQL, nếu chương trình bị lỗi giữa giao tác thì nên hủy giao tác. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 29 Nhập môn cơ sở dữ liệu www.ou.edu.vn 57 khai.hq@ou.edu.vn Giao tác (Transactions) ‹ Các giao tác SQL không được lồng nhau. ‹ Lệnh SET TRANSACTION cấu hình giao tác: SET TRANSACTION [READ ONLY | READ WRITE] | [ISOLATION LEVEL READ UNCOMMITTED | READ COMMITTED|REPEATABLE READ |SERIALIZABLE ] 58 khai.hq@ou.edu.vn Ràng buộc toàn vẹn kiểu trung gian và trì hoãn ‹Không phải lúc nào các ràng buộc cũng kiểm tra tức thời, có khi phải chờ đến lúc giao tác ủy thác (commit) ‹ Các ràng buộc có thể được định nghĩa là INITIALLY IMMEDIATE hay INITIALLY DEFERRED lúc đầu giao tác. ‹ Cũng có thể thay đổi lại kiểu ràng buộc dùng [NOT] DEFERRABLE. ‹Kiểu mặc định là INITIALLY IMMEDIATE. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 30 Nhập môn cơ sở dữ liệu www.ou.edu.vn 59 khai.hq@ou.edu.vn Ràng buộc toàn vẹn kiểu trung gian và trì hoãn ‹ Lệnh SET CONSTRAINTS cho giao tác hiện hành: SET CONSTRAINTS {ALL | constraintName [, . . . ]} {DEFERRED ¦ IMMEDIATE} 60 khai.hq@ou.edu.vn Kiểm soát truy xuất – Danh hiệu về quyền và quyền sở hữu ‹Danh hiệu về quyền là danh hiệu bình thường trong SQL dùng để nhận diện user, thường đi kèm là password. ‹Dùng để xác định quyền trong một số thao tác trên một số đối tượng ‹Mỗi đối tượng tạo ra trong SQL có một chủ sở hữu, như là đã định ra ở mệnh đề AUTHORIZATION của lược đồ csdl. Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 31 Nhập môn cơ sở dữ liệu www.ou.edu.vn 61 khai.hq@ou.edu.vn Đặc quyền (Privileges) ‹ Các thao tác user được phép thực hiện trên các view hay các quan hệ nền: SELECT Lấy dữ liệu INSERT Chèn hàng dữ liệu UPDATE Sửa dữ liệu trên các hàng đã có DELETE Xóa các hàng dữ liệu REFERENCES Tham khảo dữ liệu để bảo đảm ràng buộc toàn vẹn USAGE Dùng domains, collations, character sets, và translations. 62 khai.hq@ou.edu.vn Lệnh ban quyền GRANT GRANT {PrivilegeList | ALL PRIVILEGES} ON ObjectName TO {AuthorizationIdList | PUBLIC} [WITH GRANT OPTION] ‹ PrivilegeList gồm một hay nhiều quyền cách nhau bằng dấu phẩy ‹ ALL PRIVILEGES ban tất cả quyền cho user Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 32 Nhập môn cơ sở dữ liệu www.ou.edu.vn 63 khai.hq@ou.edu.vn Lệnh ban quyền GRANT ‹ PUBLIC cho quyền truy xuất với tất cả user (hiện tại và tương lai). ‹ ObjectName có thể là base table, view, domain, character set, collation hay translation. ‹WITH GRANT OPTION cho phép thông qua quyền 64 khai.hq@ou.edu.vn Ví dụ 7.7/8 - GRANT Cho Manager đầy đủ quyền trên bảng Staff table: GRANT ALL PRIVILEGES ON Staff TO Manager WITH GRANT OPTION; Cho user Personnel và Director quyền SELECT và UPDATE trên cột salary của bảng Staff: GRANT SELECT, UPDATE (salary) ON Staff TO Personnel, Director; Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 33 Nhập môn cơ sở dữ liệu www.ou.edu.vn 65 khai.hq@ou.edu.vn Ví dụ 7.9 – Ban quyền PUBLIC Cho tất cả user quyền SELECT trên bảng Branch: GRANT SELECT ON Branch TO PUBLIC; 66 khai.hq@ou.edu.vn Lệnh thu lấy quyền REVOKE ‹ REVOKE lấy quyền đã được ban trước đó nhờ GRANT. REVOKE [GRANT OPTION FOR] {PrivilegeList | ALL PRIVILEGES} ON ObjectName FROM {AuthorizationIdList | PUBLIC} [RESTRICT | CASCADE] ‹ ALL PRIVILEGES lấy lại tất cả quyền đã ban Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu Trang 34 Nhập môn cơ sở dữ liệu www.ou.edu.vn 67 khai.hq@ou.

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf