Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Chương 1: Tổng quan về cơ sở dữ liệu
1
Tham khảo tài liệu [A]: Chapter 1: Introduction to Databases
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)
2
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 1
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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
3
khai.hq@ou.edu.vn
Ví dụ về các ứng dụng CSDL
(cid:139) Mua bán ở siêu thị (cid:139) Mua bán dùng thẻ tín dụng (cid:139) Đặt vé đi nghỉ mát tại trạm giao dịch du lịch (cid:139) Đọc, mượn sách tại thư viện (cid:139) Thanh lý hợp đồng bảo hiểm (cid:139) Sử dụng mạng internet (cid:139) Học tập, nghiên cứu tại trường đại học
4
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 2
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Hệ thống lưu DL theo file (File-based System)
(cid:139) Là tập hợp một số chương trình ứng dụng để phục
(cid:139) Mỗi chương trình quản lý các dữ liệu có thiết kế
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
riêng cho chương trình đó
5
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)
6
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 3
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Hạn chế của phương pháp lưu DL theo file (1)
– 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
1. Dữ liệu riêng rẽ và cô lập
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
– Các dữ liệu giống nhau có thể được lưu ở các chương
2. Dữ liệu bị trùng lắp
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
7
khai.hq@ou.edu.vn
Hạn chế của phương pháp lưu DL theo file (2)
– Cấu trúc của file lưu DL do code của chương trình tạo ra
3. Dữ liệu lệ thuộc vào chương trình
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
8
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 4
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phương pháp lưu dữ liệu bằng CSDL
(cid:139) 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
(cid:139) Kết quả:
– Hệ quản trị CSDL (DBMS)
9
khai.hq@ou.edu.vn
Cơ sở dữ liệu (Database)
(cid:139) 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)
(cid:139) 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
(cid:139) 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
10
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 5
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Hệ quản trị CSDL (DBMS)
(cid:139) 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
11
khai.hq@ou.edu.vn
Ví dụ về hệ quản trị CSDL (DBMS)
12
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 6
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phương pháp lưu dữ liệu bằng CSDL
(cid:139) Ngôn ngữ định nghĩa dữ liệu
(cid:139) Ngôn ngữ thao tác 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
(DML: Data manipulation language). – Là công cụ để truy vấn DL
13
khai.hq@ou.edu.vn
Phương pháp lưu dữ liệu bằng CSDL
(cid:139) Việc truy xuất CSDL có kiểm soát có thể bao gồm
(cid:139) 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
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 đang cần
14
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 7
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Khung nhìn dữ liệu (View) (1)
(cid:139) Cho phép mỗi user có cái nhìn riêng về CSDL
(cid:139) Khung nhìn dữ liệu được xem là một phần cơ bản
của CSDL
15
khai.hq@ou.edu.vn
Khung nhìn dữ liệu (View) (2)
(cid:139) 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
16
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 8
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Các thành phần của môi trường dùng DBMS (1)
17
khai.hq@ou.edu.vn
Các thành phần của môi trường dùng DBMS (2)
(cid:139) Phần cứng (Hardware)
– Có thể là một máy PC hay là một mạng máy tính
(cid:139) 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
(cid:139) Dữ liệu (Data)
– Là DL được dùng và sự miêu tả về DL đó (được gọi là
lược đồ DL (schema))
18
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 9
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Các thành phần của môi trường dùng DBMS (3)
(cid:139) 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
(cid:139) Người dùng (People)
19
khai.hq@ou.edu.vn
Vai trò của con người trong môi trường DBMS
(cid:139) Người quản trị dữ liệu (Data Administrator (DA)) (cid:139) Người quản trị CSDL
(Database Administrator (DBA))
(cid:139) Người thiết kế CSDL (Database Designers) Mức logic và vật lý (Logical and Physical)
(cid:139) Người lập trình ứng dụng
(cid:139) Người sử dụng chương trình (End Users)
(Application Programmers)
Mức cơ bản và mức thành thạo (naive and sophisticated)
20
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 10
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Lịch sử các hệ thống cơ sở dữ liệu
(cid:139) Thế hệ đầu tiên (First generation)
– Hệ thống CSDL phân cấp (Hierarchical) – Hệ thống CSDL mạng (Network) (cid:139) Thế hệ thứ hai (Second generation)
– Hệ thống CSDL quan hệ (Relational)
(cid:139) 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)
21
khai.hq@ou.edu.vn
Ưu điểm của DBMS (1)
(cid:139) Có kiểm soát sự dư thừa dữ liệu (cid:139) Có tính nhất quán dữ liệu (data consistency) (cid:139) Chứa được nhiều thông tin hơn với cùng số lượng
(cid:139) Cho phép chia sẽ dữ liệu (cid:139) Tăng cường sự toàn vẹn của dữ liệu (data integrity) (cid:139) Tăng độ bảo mật (security) (cid:139) Có tuân theo các tiêu chuẩn (cid:139) Tiết kiệm về kích cỡ
dữ liệu như nhau
22
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 11
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ưu điểm của DBMS (2)
(cid:139) Cân đối các yêu cầu có tính xung đột (cid:139) Tăng cường khả năng truy xuất và đáp ứng của dữ
(cid:139) Nâng cao hiệu suất (productivity) (cid:139) Bảo trì tốt hơn nhờ dữ liệu độc lập với chương
liệu (accessibility and responsiveness)
(cid:139) Tăng khả năng sử dụng đồng thời (cid:139) Cải thiện chức năng sao lưu và phục hồi dữ liệu
trình
23
khai.hq@ou.edu.vn
Nhược điểm của DBMS
(cid:139) Phức tạp (Complexity) (cid:139) Nhược điểm về kích thước (Size) (cid:139) Nhược điểm về chi phí (Cost of DBMS) (cid:139) Phải tốn chi phí thêm cho phần cứng (cid:139) Tốn chi phí vào việc chuyển đổi (Cost of conversion) (cid:139) Nhược điểm về tốc độ thực hiện (cid:139) Dễ bị hư hỏng hơn
HẾT CHƯƠNG 1
24
Chương 1: Tổng quan về cơ sở dữ liệu
Trang 12
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Chương 2: Môi trường của cơ sở dữ liệu
1
Tham khảo tài liệu [A]: Chapter 2: Database Environment
khai.hq@ou.edu.vn
Nội dung chương 2 (1)
(cid:139) Mục đích của kiến trúc CSDL 3 mức
(cid:139) Nội dung của mức ngoài, mức ý niệm và mức trong
(cid:139) Mục đích của việc ánh xạ mức ngoài/mức ý niệm và
(external, conceptual, and internal levels)
(cid:139) Ý nghĩa của sự độc lập dữ liệu giữa logic và vật lý
(cid:139) Phân biệt DDL và DML
(cid:139) Phân loại các mô hình dữ liệu
mức ý niệm/mức trong
2
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
khai.hq@ou.edu.vn
Nội dung chương 2 (2) (cid:139) Mục đích và tầm quan trọng của việc mô hình hóa
(cid:139) Các chức năng và dịch vụ chính yếu của DBMS (cid:139) Các thành phần phần mềm của DBMS (cid:139) Ý nghĩa của kiến trúc client–server và sự tiện lợi của
mức ý niệm
kiến trúc này đối với DBMS
(cid:139) 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) (cid:139) Chức năng và tầm quan trọng của catalog hệ thống
(system catalog)
3
khai.hq@ou.edu.vn
Mục tiêu của kiến trúc 3 mức
(cid:139) Tất cả users có thể truy xuất dữ liệu như nhau
(cid:139) View của một user không bị thay đổi khi các view
(cid:139) Users không cần phải biết chi tiết ở mức vật lý cơ
khác bị thay đổi
sở dữ liệu được lưu như thế nào
4
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
khai.hq@ou.edu.vn
Mục tiêu của kiến trúc 3 mức
(cid:139) 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
(cid:139) Cấu trúc mức trong của CSDL không bị ảnh hưởng
(cid:139) DBA có thể thay đổi cấu trúc mức ý niệm nhưng
bởi sự thay đổi các yếu tố mức vật lý
không làm ảnh hưởng đến tất cả các users
5
khai.hq@ou.edu.vn
Kiến trúc 3 mức ANSI-SPARC (ANSI-SPARC Three-level Architecture)
6
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
khai.hq@ou.edu.vn
Kiến trúc 3 mức ANSI-SPARC
(cid:139) 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
(cid:139) Mức ý niệm (Conceptual Level)
từng user
– 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
7
khai.hq@ou.edu.vn
Kiến trúc 3 mức ANSI-SPARC
(cid:139) 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
8
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
khai.hq@ou.edu.vn
Sự khác nhau giữa 3 mức
9
khai.hq@ou.edu.vn
Sự độc lập về dữ liệu (Data Independence) (1)
(cid:139) Độ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
10
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
khai.hq@ou.edu.vn
Sự độc lập về dữ liệu (Data Independence) (2)
(cid:139) Độ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
11
khai.hq@ou.edu.vn
Độc lập dữ liệu của kiến trúc ANSI-SPARC 3 mức
12
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
khai.hq@ou.edu.vn
Ngôn ngữ cho CSDL (Database Languages) (1)
(cid:139) 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)
13
khai.hq@ou.edu.vn
Ngôn ngữ cho CSDL (Database Languages) (2)
(cid:139) 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
(cid:139) 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 (cid:139) 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
14
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
khai.hq@ou.edu.vn
Ngôn ngữ cho CSDL (Database Languages) (3)
(cid:139) 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)
15
khai.hq@ou.edu.vn
Mô hình dữ liệu (Data Model) (1)
(cid:139) 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
(cid:139) 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)
16
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
khai.hq@ou.edu.vn
Mô hình dữ liệu (Data Model) (2)
(cid:139) Mục đích
(cid:139) Các loại mô hình dữ liệu gồm:
– Biểu diễn dữ liệu theo cách thức dể hiểu
– 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)
17
khai.hq@ou.edu.vn
Các mô hình dữ liệu (Data Models)
(cid:139) 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)
(cid:139) 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)
(cid:139) Physical Data Models
18
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
khai.hq@ou.edu.vn
Mô hình hóa mức ý niệm (Conceptual modeling)
(cid:139) Lược đồ ý niệm là cốt lõi của hệ thống, nó hỗ trợ tất
(cid:139) Lược đồ phải thể hiện đầy đủ và chính xác các dữ
cả các view của user
liệu của một tổ chức
(cid:139) 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
(cid:139) Kết quả là một mô hình dữ liệu mức ý niệm
(conceptual data model)
19
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
20
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
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, …
21
khai.hq@ou.edu.vn
Các thành phần của DBMS
22
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
khai.hq@ou.edu.vn
Các thành phần của Database Manager (DM)
23
khai.hq@ou.edu.vn
Các kiến trúc DBMS đa người dùng
(cid:139) Xử lý từ xa (Teleprocessing)
(cid:139) Máy phục vụ file (File-server)
(cid:139) Máy khách - máy phục vụ (Client-server)
24
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
khai.hq@ou.edu.vn
Kiến trúc xử lý từ xa (Teleprocessing) (1)
(cid:139) Là kiến trúc truyền thống
(cid:139) 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)
(cid:139) 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
25
khai.hq@ou.edu.vn
Kiến trúc xử lý từ xa (Teleprocessing) (2)
26
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
khai.hq@ou.edu.vn
Kiến trúc File-Server (1)
(cid:139) 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
(cid:139) Database nằm ở máy file-server.
(cid:139) DBMS và applications chạy trên các máy workstation.
(cid:139) 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
27
khai.hq@ou.edu.vn
Kiến trúc File-Server (2)
28
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
khai.hq@ou.edu.vn
Kiến trúc Client-server (1)
(cid:139) Máy Server chứa database và chạy DBMS.
(cid:139) Máy Client quản lý giao diện với user và chạy các
ứng dụng (cid:139) 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
29
khai.hq@ou.edu.vn
Kiến trúc Client-server (2)
30
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
khai.hq@ou.edu.vn
Các sơ đồ kết nối của kiến trúc Client-server
31
khai.hq@ou.edu.vn
Bộ giám sát việc xử lý giao tác (Transaction Processing Monitor) (1)
(cid:139) Là chương trình kiểm soát việc truyền dữ liệu giữa
(cid:139) Nhằm tạo ra một môi trường có tính nhất quán
(cid:139) Đặc biệt dùng cho việc xử lý giao tác trực tuyến
máy client và máy server
(Online Transaction Processing (OLTP))
32
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
khai.hq@ou.edu.vn
Bộ giám sát việc xử lý giao tác (2)
(cid:139) Là lớp giữa của kiến trúc Client-Server 3 lớp
33
khai.hq@ou.edu.vn
Catalog hệ thống (System Catalog)
(cid:139) Là nơi chứa thông tin metadata
(metadata là thông tin miêu tả dữ liệu trong database)
(cid:139) 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 (cid:139) Đượ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
34
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
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
khai.hq@ou.edu.vn
Nội dung chương 3
(cid:139) Cách dùng mô hình Entity–Relationship (ER) trong
(cid:139) Các khái niệm cơ bản liên quan đến mô hình ER
(cid:139) Kỹ thuật tạo mô hình ER dùng ngôn ngữ UML
tkiết kế database
(cid:139) Nhận diện và xử lý các lỗi của mô hình ER
(cid:139) Xây dựng mô hình ER theo nhu cầu
(Unified Modeling Language)
2
Chương 3: Mô hình thực thể - Mối kết hợp Trang 1
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
ER diagram of Branch view of DreamHome
3
khai.hq@ou.edu.vn
Các khái niệm của mô hình ER
(cid:139) Kiểu của thực thể (Entity types)
(cid:139) Kiểu của mối kết hợp (Relationship types)
(cid:139) Thuộc tính (Attributes)
4
Chương 3: Mô hình thực thể - Mối kết hợp Trang 2
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Kiểu của thực thể (Entity type)
(cid:139) 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
(cid:139) Thể hiện của thực thể (Entity occurrence)
đối tượng tồn tại độc lập nhau
– 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)
5
khai.hq@ou.edu.vn
ER diagram of Staff and Branch entity types
6
Chương 3: Mô hình thực thể - Mối kết hợp Trang 3
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Kiểu của mối kết hợp (Relationship type)
(cid:139) 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ể
(cid:139) 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ể
7
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)
8
Chương 3: Mô hình thực thể - Mối kết hợp Trang 4
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
ERD của mối kết hợp “Branch Has Staff”
9
khai.hq@ou.edu.vn
Các loại mối kết hợp
(cid:139) 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
(cid:139) 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.
10
Chương 3: Mô hình thực thể - Mối kết hợp Trang 5
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mối kết hợp binary “POwns”
11
khai.hq@ou.edu.vn
Mối kết hợp Ternary “Registers”
12
Chương 3: Mô hình thực thể - Mối kết hợp Trang 6
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mối kết hợp Quaternary “Arranges”
13
khai.hq@ou.edu.vn
Các loại mối kết hợp
(cid:139) 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
(cid:139) 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 đó
14
Chương 3: Mô hình thực thể - Mối kết hợp Trang 7
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mối kết hợp hồi quy “Supervises”
15
khai.hq@ou.edu.vn
Hai thực thể có 2 mối kết hợp khác nhau
16
Chương 3: Mô hình thực thể - Mối kết hợp Trang 8
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Thuộc tính (Attribute)
(cid:139) Thuộc tính
– Là đặc tính của một kiểu thực thể hay một kiểu
(cid:139) Miền của thuộc tính
mối kết hợp
– Là tập các giá trị có thể có được của thuộc tính
17
khai.hq@ou.edu.vn
Khóa (Key)
(cid:139) 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
(cid:139) Khóa chính (Primary Key)
được duy nhất từng thể hiện của thực thể
(cid:139) Khóa ghép (Composite Key)
– Là một khóa được chọn ra từ các khóa ứng viên
– Là khóa có từ 2 thuộc tính trở lên
18
Chương 3: Mô hình thực thể - Mối kết hợp Trang 9
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
ER diagram of Staff and Branch entities and their attributes
19
khai.hq@ou.edu.vn
Kiểu thực thể mạnh và yếu
(cid:139) 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
(cid:139) Kiểu thực thể yếu (Weak Entity Type)
thể khác
– Là kiểu thực thể phụ thuộc vào kiểu thực thể
khác
20
Chương 3: Mô hình thực thể - Mối kết hợp Trang 10
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Strong entity type called Client and weak entity type called Preference
21
khai.hq@ou.edu.vn
Relationship called Advertises with attributes
22
Chương 3: Mô hình thực thể - Mối kết hợp Trang 11
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Ràng buộc thuộc về cấu trúc (Structural Constraints) (1)
(cid:139) 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)
(cid:139) 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
(cid:139) Ràng buộc theo các quy tắc nghiệp vụ (business
rules)
23
khai.hq@ou.edu.vn
Ràng buộc thuộc về cấu trúc (Structural Constraints) (2)
(cid:139) 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ể
(cid:139) Các mối kết hợp cấp 2 thường thấy là: one-to-one (1:1) one-to-many (1:*) many-to-many (*:*)
– một – một – một – nhiều – nhiều – nhiều
24
Chương 3: Mô hình thực thể - Mối kết hợp Trang 12
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mạng ngữ nghĩa của kiểu mối kết hợp “Staff Manages Branch”
25
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)
26
Chương 3: Mô hình thực thể - Mối kết hợp Trang 13
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mạng ngữ nghĩa của kiểu mối kết hợp “Staff Oversees PropertyForRent”
27
khai.hq@ou.edu.vn
Mức tham gia kết hợp (Multiplicity) của “Staff Oversees PropertyForRent” (1:*)
28
Chương 3: Mô hình thực thể - Mối kết hợp Trang 14
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Mạng ngữ nghĩa của kiểu mối kết hợp “Newspaper Advertises PropertyForRent”
29
khai.hq@ou.edu.vn
Mức tham gia kết hợp (Multiplicity) của “Newspaper Advertises PropertyForRent” (*:*)
30
Chương 3: Mô hình thực thể - Mối kết hợp Trang 15
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Ràng buộc thuộc về cấu trúc (Structural Constraints) (3)
(cid:139) 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
31
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
32
Chương 3: Mô hình thực thể - Mối kết hợp Trang 16
Nhập môn cơ sở dữ liệu www.ou.edu.vn
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”
33
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
34
Chương 3: Mô hình thực thể - Mối kết hợp Trang 1
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Ràng buộc thuộc về cấu trúc (Structural Constraints) (4)
(cid:139) 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.
(cid:139) 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 (cid:139) 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
35
khai.hq@ou.edu.vn
Multiplicity, Cardinality và Participation
36
Chương 3: Mô hình thực thể - Mối kết hợp Trang 2
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Các lỗi có thể có ở mô hình ER (1)
(cid:139) 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.)
(cid:139) Lỗi xảy ra thường do hiểu chưa đúng ý nghĩa của
(cid:139) 2 lỗi bẫy kết nối chính là: lỗi bẫy mơ hồ (fan traps)
mối kết hợp
và lỗi bẫy lỗ hổng (chasm traps)
37
khai.hq@ou.edu.vn
Các lỗi có thể có ở mô hình ER (2)
(cid:139) 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ể
(cid:139) Chasm Trap (lỗi bẫy lỗ hổng)
có tính mơ hồ (ambiguous), không rõ nghĩa.
– Khi không có đủ các mối quan hệ giữa các thể hiện
của thực thể
38
Chương 3: Mô hình thực thể - Mối kết hợp Trang 3
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Một ví dụ Fan Trap (lỗi bẫy mơ hồ)
39
(cid:139) At which branch office does staff number SG37 work?
khai.hq@ou.edu.vn
Cấu trúc lại mô hình ER để loại bỏ lỗi Fan Trap
40
Chương 3: Mô hình thực thể - Mối kết hợp Trang 4
Nhập môn cơ sở dữ liệu www.ou.edu.vn
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
(cid:139) SG37 works at branch B003.
41
khai.hq@ou.edu.vn
Một ví dụ Chasm Trap (lỗi bẫy lỗ hổng)
42
(cid:139) At which branch office is property PA14 available?
Chương 3: Mô hình thực thể - Mối kết hợp Trang 5
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Cấu trúc lại mô hình ER để loại bỏ lỗi Chasm Trap
43
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
44
Chương 3: Mô hình thực thể - Mối kết hợp Trang 6
Nhập môn cơ sở dữ liệu www.ou.edu.vn
Chương 4: Mô hình Quan hệ
Tham khảo tài liệu [A]: Chapter 3: The Relational Model
khai.hq@ou.edu.vn
Nội dung chương 4
(cid:139) Các thuật ngữ của mô hình quan hệ (cid:139) Cách dùng bảng để miêu tả dữ liệu (cid:139) Sự tương đồng giữa mối quan hệ trong toán học và
(cid:139) Thuộc tính của mối quan hệ trong cơ sở dữ liệu (cid:139) Cách xác định khóa ứng viên, khóa chính, và khóa
mối quan hệ trong mô hình quan hệ
(cid:139) Ý nghĩa của “sự toàn vẹn của thực thể” và “sự toàn
ngoại
(cid:139) Mục đích và sự tiện lợi của view
vẹn trong tham khảo”
2
Chương 4: Mô hình Quan hệ Trang 1
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Các thuật ngữ của mô hình quan hệ (1)
(cid:139) Một quan hệ (relation) là một bảng, gồm có các cột
và các hàng
(cid:139) Một thuộc tính (attribute) là một cột của quan hệ
(cid:139) Miền (domain) là tập hợp các giá trị có thể có của
– 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 hay nhiều thuộc tính
3
khai.hq@ou.edu.vn
Các thuật ngữ của mô hình quan hệ (2)
(cid:139) Bộ (tuple) là một hàng của quan hệ
(cid:139) Cấp (hay mức–degree) là số lượng thuộc tính của quan
(cid:139) Số thể hiện (hay số lượng, hay lực lượng – cardinality)
hệ
là số bộ của một quan hệ
(cid:139) 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
4
Chương 4: Mô hình Quan hệ Trang 2
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Một phần các thể hiện của quan hệ “Branch and Staff”
5
khai.hq@ou.edu.vn
Ví dụ về miền của thuộc tính (Attribute Domains)
6
Chương 4: Mô hình Quan hệ Trang 3
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Các dạng thuật ngữ khác nhau của mô hình quan hệ
7
khai.hq@ou.edu.vn
Định nghĩa toán học của mô hình quan hệ (1)
(cid:139) Xét 2 tập hợp D1 và D2, với D1 = {2, 4} và D2 = {1, 3, 5} (cid:139) 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)}
(cid:139) 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
8
Chương 4: Mô hình Quan hệ Trang 4
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Định nghĩa toán học của mô hình quan hệ (2)
(cid:139) Một quan hệ là một tập con của tích Đề-các
(cid:139) Quan hệ có thể được đặc tả bằng điều kiện chọn ra các
ví dụ: quan hệ R = {(2, 1), (4, 1)}
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}
9
khai.hq@ou.edu.vn
Định nghĩa toán học của mô hình quan hệ (3)
(cid:139) 3 tập hợp D1, D2, D3 sẽ có tích Đế-các là D1 × D2 × D3
ví dụ:
D3 = {5, 6} D2 = {2, 4}
(cid:139) Bất kỳ tập con nào của tích Đế-các trên sẽ là một quan
D1 = {1, 3} 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)}
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)}
10
Chương 4: Mô hình Quan hệ Trang 5
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Định nghĩa toán học của mô hình quan hệ (4)
(cid:139) 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
(cid:139) 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
11
khai.hq@ou.edu.vn
Khái niệm Quan hệ trong CSDL (Database Relations)
(cid:139) Lược đồ (của) quan hệ (Relation schema)
(cid:139) Lược đồ (của) cơ sở dữ liệu quan hệ
– 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
(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
12
Chương 4: Mô hình Quan hệ Trang 6
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Các thuộc tính của quan hệ
(cid:139) Tên của các quan hệ không được trùng nhau
(cid:139) Mỗi ô (cell) trong quan hệ chứa đúng một giá trị đơn trị
(cid:139) Tên thuộc tính không được trùng nhau
(cid:139) Tất cả giá trị của một thuộc tính phải có cùng một miền
(cid:139) Không có 2 hay nhiều bộ (tuple) giống nhau
(cid:139) Không bắt buộc thứ tự của các thuộc tính trong quan hệ
(cid:139) Không bắt buộc thứ tự của các bộ của quan hệ
giá trị (cùng domain)
13
khai.hq@ou.edu.vn
Khóa của quan hệ (Relational Keys) (1)
(cid:139) 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
(cid:139) Khóa ứng viên (Candidate Key)
định duy nhất một bộ trong quan hệ
– 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ệ
14
Chương 4: Mô hình Quan hệ Trang 7
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Khóa của quan hệ (Relational Keys) (2)
(cid:139) 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ệ (cid:139) Khóa thay thế (Alternate Keys)
– Là các khóa ứng viên không được chọn làm khóa
(cid:139) Khóa ngoại (Foreign Key)
chính
– 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 đó
15
khai.hq@ou.edu.vn
Sự toàn vẹn của quan hệ (Relational Integrity) (1)
(cid:139) 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
16
Chương 4: Mô hình Quan hệ Trang 8
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Sự toàn vẹn của quan hệ (Relational Integrity) (2)
(cid:139) 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á
(cid:139) Sự toàn vẹn trong tham khảo (Referential Integrity)
trị NULL
– 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
(cid:139) 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
17
khai.hq@ou.edu.vn
Khung nhìn dữ liệu (Views) (1)
(cid:139) 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
(cid:139) Khung nhìn dữ liệu (View)
vật lý) trong cơ sở dữ liệu
– 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
18
Chương 4: Mô hình Quan hệ Trang 9
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
Khung nhìn dữ liệu (Views) (2)
(cid:139) 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
(cid:139) 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
(cid:139) 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
19
khai.hq@ou.edu.vn
Mục đích của View
(cid:139) 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
(cid:139) 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
(cid:139) 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
20
Chương 4: Mô hình Quan hệ Trang 10
Nhập môn cơ sở dữ liệu www.ou.edu.vn
khai.hq@ou.edu.vn
View và việc cập nhật dữ liệu (1)
(cid:139) 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 đó
(cid:139) Nếu view cập nhật được dữ liệu thì các quan hệ nền
(cid:139) Phân view làm 3 lớp:
phía dưới cũng sẽ chịu ảnh hưởng theo
– 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)
21
khai.hq@ou.edu.vn
View và việc cập nhật dữ liệu (2)
(cid:139) 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
22
Chương 4: Mô hình Quan hệ Trang 11
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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
khai.hq@ou.edu.vn
Nội dung chương 5
(cid:139) Ý nghĩa của khái niệm “relational completeness”
(cid:139) Cách tạo query trong đại số quan hệ
(cid:139) Cách tạo query trong phép toán quan hệ trên bộ
(cid:139) Cách tạo query trong phép toán quan hệ trên miền
(cid:139) Các loại ngôn ngữ thao tác dữ liệu quan hệ
2
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 1
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Giới thiệu
(cid:139) Đại số quan hệ và phép toán quan hệ là các ngôn
(cid:139) Có thể xem: đại số quan hệ là ngôn ngữ thủ tục
ngữ chuẩn của mô hình quan hệ
(cid:139) Tuy nhiên về mặt lý thuyết thì đại số quan hệ và
(cấp cao), và phép toán quan hệ là ngôn ngữ phi thủ tục
phép toán quan hệ là tương đương nhau
(cid:139) 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”
3
khai.hq@ou.edu.vn
Đại số quan hệ
(cid:139) 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
(cid:139) Cả các toán hạng và các kết quả đều là các quan
(cid:139) Cho phép các biểu thức có thể lồng vào nhau giống
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
như các biểu thức số học. Đặc tính này gọi là closure.
4
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 2
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Đại số quan hệ
(cid:139) 5 toán tử cơ bản trong ĐS quan hệ:
(cid:139) Các toán tử cơ bản thực hiện được hầu hết các thao
Chọn (Selection), Chiếu (Projection), Tích Đề- các (Cartesian product), Hội (Union), và Trừ (Set Difference)
tác truy xuất dữ liệu
(cid:139) 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
5
khai.hq@ou.edu.vn
Các phép toán trong đại số quan hệ
6
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 3
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Các phép toán trong đại số quan hệ (tt)
7
khai.hq@ou.edu.vn
Phép chọn (Selection or Restriction)
(cid:139) σđ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
8
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 4
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép chọn
(cid:139) 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)
9
khai.hq@ou.edu.vn
Phép chiếu (Projection)
(cid:139) Π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
10
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 5
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép chiếu
(cid:139) 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)
11
khai.hq@ou.edu.vn
Phép hội (Union)
(cid:139) 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
(cid:139) Nếu R có i bộ và S có j bộ thì phép hội có tối đa (i+j) bộ
được
12
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 6
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép hội
(cid:139) 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)
13
khai.hq@ou.edu.vn
Phép trừ (Set Difference)
(cid:139) 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
14
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 7
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép trừ
(cid:139) 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)
15
khai.hq@ou.edu.vn
Phép giao (Intersection)
(cid:139) R ∩ S
– Tạo ra một quan hệ chứa các bộ vừa thuộc R
vừa thuộc S
(cid:139) Biểu diễn phép giao bằng phép trừ:
– R và S phải có tính tương thích nhau
R ∩ S = R – (R – S)
16
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 8
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép giao
(cid:139) 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)
17
khai.hq@ou.edu.vn
Phép tích Đề-các (Cartesian product)
(cid:139) 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
18
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 9
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép tích Đề-các
(cid:139) 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))
19
khai.hq@ou.edu.vn
Ví dụ về phép tích Đề-các và phép chọn
(cid:139) 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)))
(cid:139)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)
20
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 10
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép Kết (Join)
(cid:139) Phép kết phát sinh từ phép tích Đề-các
(cid:139) 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
21
khai.hq@ou.edu.vn
Phép Kết (Join) (tt)
(cid:139) 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)
22
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 11
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép kết Theta (θ-join)
(cid:139) 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 <, ≤, >, ≥, =, ≠
23
khai.hq@ou.edu.vn
Phép kết Theta (θ-join) (tt)
(cid:139) Có thể biểu diễn phép kết Theta:
(cid:139) Cấp của phép kết Theta là tổng của cấp 2 quan hệ
R FS = σF(R Χ S)
(cid:139) Nếu trong điều kiện F sử dụng dấu = thì có tên mới là
tham gia
phép kết tương đương
24
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 12
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép kết tương đương
(cid:139) 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))
25
khai.hq@ou.edu.vn
Phép kết tự nhiên (Natural Join)
(cid:139) 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
26
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 13
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép kết tự nhiên
(cid:139) 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))
27
khai.hq@ou.edu.vn
Phép kết ngoài (Outer join)
(cid:139) Để hiển thị trong kết quả của phép kết các hàng
(cid:139) R S
không có các cột kết bằng nhau
– 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
28
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 14
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phép kết ngoài bên trái
(cid:139) 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
29
khai.hq@ou.edu.vn
Phép nửa kết (Semijoin)
(cid:139) R FS
– Tạo ra 1 quan hệ có các bộ là kết quả từ R có tham
(cid:139) Có thể viết lại phép nửa kết bằng phép Chiếu và phép
gia vào phép kết với S
kết:
R FS = ΠA(R F S)
A là các thuộc tính của R
30
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 15
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ phép nửa kết
(cid:139) 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
31
khai.hq@ou.edu.vn
Phép chia (Division)
(cid:139) 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
(cid:139) Biểu diễn cách khác: T1 ← ΠC(R) T2 ← ΠC((S X T1) – R) T ← T1 – T2
32
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 16
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ phép chia
(cid:139) 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)))
33
khai.hq@ou.edu.vn
Phép toán quan hệ (Relational Calculus)
(cid:139) Phép toán quan hệ để diễn đạt “muốn gì?” (what) chứ
(cid:139) Trong phép tóan luận lý tiền tố (hay phép toán vị từ), vị
không diễn đạt phải làm gì (how) để có được điều mong muốn
(cid:139) Phép toán vị từ có kết quả là đúng (true) hay sai (false) (cid:139) Phép toán vị từ trên CSDL có 2 loại: phép toán trên bộ
từ (predicate ) là 1 hàm có đối số nằm phía sau
và phép toán trên miền của thuộc tính
34
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 17
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép toán quan hệ trên bộ
(cid:139) Có mục đích tìm ra các bộ làm cho vị từ có giá trị
(cid:139) Biến trên bộ là biến nhận giá trị là 1 bộ của quan hệ (cid:139) Ví dụ: giá trị của 1 biến S có thể là 1 bộ của quan hệ
true. Sử dụng các biến trên bộ để tìm
Staff:
(cid:139) Tìm tất cả giá trị S: biểu thức sau phải thỏa (true) :
Staff(S)
{S | P(S)}
35
khai.hq@ou.edu.vn
Ví dụ phép toán quan hệ trên bộ
(cid:139) Lập danh sách chi tiết về các nhân viên có lương
lớn hơn 10000
(cid:139) Lập danh sách 1 cột lương chỉ lấy giá trị lớn hơn
{S | Staff(S) ∧ S.salary > 10000}
10000
{S.salary | Staff(S) ∧ S.salary > 10000}
36
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 18
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép toán quan hệ trên bộ
(cid:139) 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”: ∀
37
khai.hq@ou.edu.vn
Ví dụ phép toán quan hệ trên bộ
(cid:139) 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:
(cid:139) Có nghĩa là: Tồn tại ít nhất 1 chi nhánh (1 bộ)
Staff(S) ∧ (∃B)(Branch(B) ∧ (B.branchNo = S.branchNo) ∧ B.city = ‘London’)
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’.
38
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 19
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép toán quan hệ trên bộ
(cid:139) Lượng từ “với mọi” ∀ được dùng trên mỗi bộ như:
(∀B) (B.city ≠ ‘Paris’)
(cid:139) 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’
(cid:139) Ngược lại: ~(∃B) (B.city = ‘Paris’) có nghĩa “không có
chi nhánh nào có địa chỉ ở Paris’.
39
khai.hq@ou.edu.vn
Phép toán quan hệ trên bộ
(cid:139) Các công thức phải tránh sự mơ hồ và có ý nghĩa (cid:139) 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
(cid:139) 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
40
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 20
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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’)}
41
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)))}
42
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 21
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về Phép toán quan hệ trên bộ
(cid:139) 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’))}
43
khai.hq@ou.edu.vn
Chú ý về Phép toán quan hệ trên bộ
(cid:139) Các biểu thức có thể tạo 1 tập vô hạn không xác
định: {S | ~Staff(S)}
(cid:139) Để 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
44
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 22
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép toán quan hệ trên miền (Domain Relational Calculus)
(cid:139) Dùng các biến có giá trị từ miền chứ không phải từ bộ
của quan hệ
(cid:139) 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
45
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)}
46
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 23
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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’)}
47
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))))}
48
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 24
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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’)}
49
khai.hq@ou.edu.vn
Phép toán quan hệ trên miền
(cid:139) 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
50
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 25
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Các ngôn ngữ khác
(cid:139) 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).
(cid:139) 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)
51
khai.hq@ou.edu.vn
Các ngôn ngữ khác
(cid:139) 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.
(cid:139) 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.
52
Chương 5: Đại số quan hệ và Phép toán quan hệ
Trang 26
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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
khai.hq@ou.edu.vn
(cid:1) Mục đích và tầm quan trọng của SQL (cid:1) Truy xuất DL từ CSDL với lệnh SELECT và:
Nội dung chương 6:
– 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)
2
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 1
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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,
(cid:1) Cập nhật DL dùng INSERT, UPDATE, và DELETE.
INTERSECT, EXCEPT).
3
khai.hq@ou.edu.vn
Mục tiêu của ngôn ngữ SQL
(cid:1) 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ệ
(cid:1) Ngôn ngữ của CSDL phải mạnh và dễ học (cid:1) Ngôn ngữ của CSDL phải có tính cơ động (khả
– Thực hiện các truy vấn dữ liệu
chuyển)
4
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 2
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Mục tiêu của ngôn ngữ SQL
(cid:1) 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ữ
(cid:1) Ngôn ngữ SQL có định dạng mềm dẻo (cid:1) Ngôn ngữ SQL thuộc loại ngôn ngữ phi thủ tục (chỉ
liệu
cần miêu tả CÁI GÌ chúng ta muốn)
5
khai.hq@ou.edu.vn
Mục tiêu của ngôn ngữ SQL
(cid:1) 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;
6
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 3
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Mục tiêu của ngôn ngữ SQL
(cid:1) 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
(cid:1) 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ệ.
7
khai.hq@ou.edu.vn
Lịch sử ngôn ngữ SQL
(cid:1) Vào 1974, D. Chamberlin (IBM San Jose Laboratory) định 'Structured English Query Language'
nghĩa ngôn ngữ (SEQUEL).
(cid:1) 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 đó)
(cid:1) 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'.
(cid:1) Vào 1992, ra đời phiên bản ISO standard tên là SQL2 hay
SQL/92.
(cid:1) Vào 1999, SQL3 ra đời, có hỗ trợ quản trị dữ liệu hướng đối
tượng
8
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 4
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Viết lệnh SQL
(cid:1) 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
– Từ do user định nghĩa (User-defined words) như tên
ngôn ngữ SQL
quan hệ, tên cột, tên view, …
9
khai.hq@ou.edu.vn
Viết lệnh SQL
(cid:1) Hầu hết các từ trong câu lệnh SQL không phân biệt
(cid:1) Để dễ đọc, nên viết câu lệnh SQL theo cách có canh lề
chữ thường/chữ HOA, trừ một số hằng ký tự
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
10
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 5
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Viết lệnh SQL
(cid:1) 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).
11
khai.hq@ou.edu.vn
Các giá trị hằng
(cid:1) Các giá trị hằng không phải là số phải nằm trong dấu
(cid:1) Các giá trị hằng là số không nằm trong dấu nháy nào
nháy đơn (vd. ‘London’).
cả (vd. 650.00).
12
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 6
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Câu lệnh SELECT
SELECT [DISTINCT | ALL]
{* | [BiểuThứcCột [AS TênMới]] [,...] }
TênBảng [BíDanh] [, ...] ĐiềuKiện]
FROM [WHERE [GROUP BY DanhSáchCột]
[HAVING ĐiềuKiệnChoNhóm]
[ORDER BY DanhSáchCột]
13
khai.hq@ou.edu.vn
Câu lệnh SELECT
FROM WHERE GROUP BY
Các bảng được dùng Điều kiện lọc các hàng dữ liệu Tạo nhóm các hàng có giá trị giống nhau ở 1 hay nhiều cột
HAVING SELECT ORDER BY Điều kiện lọc để lấy 1 số nhóm Các cột muốn có trong kết quả Sắp thứ tự các hàng trong kết quả
14
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 7
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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
(cid:1) Có thể dùng dấu * để miêu tả “lấy tất cả các cột:
FROM Staff;
SELECT * FROM Staff;
15
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
16
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 8
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.2: Lấy 1 số cột
SELECT staffNo, fName, lName, salary FROM Staff;
17
khai.hq@ou.edu.vn
Ví dụ 6.3 Không sử dụng DISTINCT
SELECT propertyNo FROM Viewing;
18
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 9
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.3 Có sử dụng DISTINCT
(cid:1) Dùng DISTINCT để loại bỏ dl trùng lắp:
SELECT DISTINCT propertyNo FROM Viewing;
19
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;
20
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 10
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.4 Dùng các field tính toán
(cid:1) Dùng AS TênFieldMới:
SELECT staffNo, fName, lName, salary/12 AS monthlySalary
FROM Staff;
21
khai.hq@ou.edu.vn
Ví dụ 6.5
SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary > 10000;
22
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 11
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.6
SELECT * FROM Branch WHERE city = 'London' OR city = 'Glasgow';
23
khai.hq@ou.edu.vn
Ví dụ 6.7
SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary BETWEEN 20000 AND 30000;
24
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 12
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.7
(cid:1) Thay thế BETWEEN
SELECT staffNo, fName, lName, position, salary FROM Staff WHERE salary>=20000 AND salary <= 30000;
25
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');
26
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 13
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.8 Toán tử IN
(cid:1) Thay thế IN
SELECT staffNo, fName, lName, position FROM Staff WHERE position='Manager' OR
position=‘Supervisor';
27
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%';
28
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 14
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.9 Toán tử LIKE
(cid:1) 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ự
29
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;
30
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 15
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.10 dùng giá trị NULL
(cid:1) Có thể dùng (IS NOT NULL) cho điều kiện ngược lại
31
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;
32
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 16
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
33
khai.hq@ou.edu.vn
Các hàm thống kê trong lệnh SELECT
(cid:1) 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
34
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 17
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Các hàm thống kê trong lệnh SELECT
(cid:1) COUNT, MIN và MAX dùng cho cả các giá trị số và
(cid:1) SUM và AVG chỉ dùng cho cả các giá trị số
(cid:1) Trừ hàm COUNT(*), các hàm khác loại bỏ giá trị
không phải số
(cid:1) COUNT(*) đếm tất cả các hàng kể cả giá trị NULL và
NULL trước rồi mới tính kết quả
(cid:1) Muốn loại bỏ trùng lắp ta dùng DISTINCT
trùng lắp
35
khai.hq@ou.edu.vn
Các hàm thống kê trong lệnh SELECT
(cid:1) Các hàm thống kê chỉ dùng sau SELECT và HAVING
(cid:1) 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;
36
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 18
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.13 Dùng hàm COUNT(*)
SELECT COUNT(*) AS count FROM PropertyForRent WHERE rent > 350;
37
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';
38
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 19
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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';
39
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;
40
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 20
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Lệnh SELECT có GROUP BY
(cid:1) 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)
(cid:1) 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
41
khai.hq@ou.edu.vn
Lệnh SELECT có GROUP BY
(cid:1) 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ê.
(cid:1) 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.
(cid:1) Chuẩn ISO qui định 2 giá trị NULL là giống nhau để
tiện sử dụng với GROUP BY.
42
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 21
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
43
khai.hq@ou.edu.vn
Ví dụ 6.17 Dùng GROUP BY
44
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 22
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
45
khai.hq@ou.edu.vn
Ví dụ 6.18 Dùng HAVING
46
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 23
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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');
47
khai.hq@ou.edu.vn
Ví dụ 6.19 Dùng truy vấn con
48
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 24
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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);
49
khai.hq@ou.edu.vn
Ví dụ 6.20 Dùng truy vấn con và hàm thống kê
50
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 25
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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'));
51
khai.hq@ou.edu.vn
Ví dụ 6.21 TRUY VẤN CON LỒNG NHAU, sử dụng IN
52
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 26
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
ANY và ALL
(cid:1) ANY và ALL có thể dùng với truy vấn con để tạo ra
(cid:1) Với ALL, điều kiện chỉ đúng khi nó thỏa với tất cả
một cột số
(cid:1) Với ANY, điều kiện đúng khi nó thỏa với bất kỳ giá
các giá trị của truy vấn con.
(cid:1) Nếu truy vấn con rỗng thì ALL trả về giá trị TRUE,
trị nào của truy vấn con.
(cid:1) SOME có thể dùng thay cho ANY.
ANY trả về giá trị FALSE.
53
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');
54
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 27
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.22 Dùng ANY/SOME
(cid:1) 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.
55
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');
56
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 28
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.23 Dùng ALL
57
khai.hq@ou.edu.vn
Truy vấn trên nhiều bảng
(cid:1) Có thể dùng truy vấn con trên cùng bảng dữ liệu với
(cid:1) Nếu các cột dữ liệu của kết quả được lấy từ nhiều bảng
truy vấn chính.
(cid:1) Để thực hiện phép kết, phải liệt kê các bảng tham gia
thì phải sử dụng phép kết bảng.
phép kết vào mệnh đề FROM.
58
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 29
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Truy vấn trên nhiều bảng
(cid:1) Có thể dùng bí danh cho các bảng trong mệnh đề
(cid:1) Bí danh đứng sau tên bảng, cách tên bảng 1 khoảng
FROM.
(cid:1) Bí danh giúp tránh sự lầm lẫn (tốt hơn cách chỉ sử
trống.
dụng tên bảng).
59
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;
60
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 30
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.24 Phép kết đơn giản
(cid:1) Chỉ có những hàng ở 2 bảng cùng thỏa (c.clientNo =
(cid:1) Đây là một phép kết tương đương.
v.clientNo) mới có mặt trong kết quả.
61
khai.hq@ou.edu.vn
Dùng phép kết với lệnh JOIN
(cid:1) 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
(cid:1) Trong 3 cách trên, FROM đã thay gồm luôn phần
(cid:1) Cách thứ nhất tạo ra 2 cột giống hệt nhau.
WHERE của phép kết.
62
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 31
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
63
khai.hq@ou.edu.vn
Ví dụ 6.26 Kết 3 bảng
(cid:1) Một cách khác viết FROM :
FROM (branch b JOIN Staff s USING branchNo) AS
bs JOIN PropertyForRent p USING staffNo
64
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 32
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
65
khai.hq@ou.edu.vn
Ví dụ 6.27 Nhóm nhiều cột
66
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 33
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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
67
khai.hq@ou.edu.vn
Phép kết ngoài
(cid:1) Phép kết ngoài cho phép giữ lại các hàng không thỏa
(cid:1) Ví dụ xét 2 bảng sau:
điều kiện kết
68
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 34
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phép kết ngoài
(cid:1) Phép kết (trong) của 2 bảng:
SELECT b.*, p.* FROM Branch1 b, PropertyForRent1 p WHERE b.bCity = p.pCity;
69
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;
70
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 35
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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;
71
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;
72
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 36
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
EXISTS và NOT EXISTS
(cid:1) EXISTS và NOT EXISTS chỉ dùng với các truy vấn
(cid:1) EXISTS chỉ có giá trị True khi và chỉ khi truy vấn con
con, có kết quả là true hoặc false
(cid:1) EXISTS có giá trị Fasle khi truy vấn con có kết quả
có tồn tại ít nhất 1 hàng.
(cid:1) NOT EXISTS có giá trị ngược với EXISTS.
rỗng.
73
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');
74
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 37
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.31 Truy vấn dùng EXISTS
75
khai.hq@ou.edu.vn
Ví dụ 6.31 Truy vấn dùng EXISTS
(cid:1) 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';
76
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 38
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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);
77
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);
78
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 39
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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);
79
khai.hq@ou.edu.vn
Ví dụ 6.33 Dùng phép giao INTERSECT
(cid:1) Hay:
(SELECT * FROM Branch) INTERSECT CORRESPONDING BY city (SELECT * FROM PropertyForRent);
80
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 40
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.33 Dùng phép giao INTERSECT
(cid:1) Có thể viết lại không dùng INTERSECT:
(cid:1) Hay:
SELECT b.city FROM Branch b PropertyForRent p WHERE b.city = p.city;
SELECT DISTINCT city FROM Branch b WHERE EXISTS (SELECT * FROM PropertyForRent p WHERE p.city = b.city);
81
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.
(cid:1) Or
(SELECT city FROM Branch) city FROM EXCEPT (SELECT PropertyForRent);
(SELECT * FROM Branch) EXCEPT CORRESPONDING BY city (SELECT * FROM PropertyForRent);
82
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 41
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ 6.34 Dùng phép trừ EXCEPT
(cid:1) Có thể viết lại không dùng EXCEPT:
(cid:1) Hay:
SELECT DISTINCT city FROM Branch WHERE city NOT IN (SELECT city FROM PropertyForRent);
SELECT DISTINCT city FROM Branch b WHERE NOT EXISTS (SELECT * FROM PropertyForRent p WHERE p.city = b.city);
83
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)
(cid:1) 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.
(cid:1) 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
84
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 42
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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');
85
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',
(cid:1) Hay:
'Assistant', 8100, 'B003');
INSERT INTO Staff VALUES ('SG44', 'Anne', 'Jones', 'Assistant', NULL,
NULL, 8100, 'B003');
86
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 43
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dùng lệnh INSERT INTO… SELECT…
(cid:1) 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 ...
87
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.
88
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 44
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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));
89
khai.hq@ou.edu.vn
Ví dụ 6.37 Dùng lệnh INSERT INTO… SELECT…
(cid:1) 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.
90
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 45
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Lệnh sửa dữ liệu UPDATE
UPDATE TênBảng SET TênCột1 = DữLiệu1
(cid:1) TableName can be name of a base table or an
[, TênCột2 = DữLiệu2...] [WHERE D9ie62uKie65n]
(cid:1) SET clause specifies names of one or more columns
updatable view.
that are to be updated.
91
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
(cid:1) Tên bảng có thể thế bằng tên view loại cập nhật được. (cid:1) Các dữ liệu phải tương thích kiểu với từng cột.
[, TênCột2 = DữLiệu2...] [WHERE ĐiềuKiệnLọcTìm]
92
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 46
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
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';
93
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';
94
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 47
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Lệnh xóa các hàng dữ liệu DELETE
(cid:1) Tên bảng có thể thế bằng tên view loại cập nhật được.
(cid:1) Nếu không có điều kiện lọc tìm dữ liệu thì câu lệnh sẻ
DELETE FROM TênBảng [WHERE ĐiềuKiệnLọcTìmDL]
xóa tất cả các hàng dữ liệu.
95
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
96
Chương 6: Ngôn ngữ SQL thao tác dữ liệu
Trang 48
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
khai.hq@ou.edu.vn
Nội dung chương 7
(cid:139) Các kiểu dữ liệu của SQL chuẩn.
(cid:139) Mục đích của việc tăng cường tính toàn vẹn của SQL.
(cid:139) Cách định nghĩa các ràng buộc toàn vẹn dùng SQL.
(cid:139) Cách viết lệnh CREATE và ALTER TABLE có tăng
cường tính toàn vẹn dữ liệu.
2
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
Nội dung chương 7
(cid:139) Mục đích của VIEW (cid:139) Tạo và xóa VIEW dùng SQL. (cid:139) Cách DBMS thực hiện các thao tác trên VIEW. (cid:139) Điếu kiện để VIEW cập nhật dữ liệu được (cid:139) Ưu và nhược điểm của VIEW (cid:139) Mô hình giao tác theo chuẩn ISO (cid:139) Dùng lệnh GRANT và REVOKE
3
khai.hq@ou.edu.vn
Các kiểu dữ liệu của SQL chuẩn ISO
4
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
khai.hq@ou.edu.vn
Đặc tính tăng cường tính toàn vẹn dữ liệu
(cid:139) 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
5
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 NOT NULL
CHAR CHECK (sex IN ('M', 'F'))
6
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
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')); SexType NOT NULL sex
7
khai.hq@ou.edu.vn
Đặc tính tăng cường tính toàn vẹn dữ liệu
(cid:139) searchCondition có thể tìm trong một bảng dữ liệu :
CREATE DOMAIN BranchNo AS CHAR(4) CHECK (VALUE IN (SELECT branchNo
(cid:139) Miền có thể được xóa bằng DROP DOMAIN:
FROM Branch));
DROP DOMAIN DomainName [RESTRICT | CASCADE]
8
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
khai.hq@ou.edu.vn
Ràng buộc về thực thể
(cid:139) Khóa chính của một bảng phải chứa một giá trị duy
(cid:139) Chuẩn ISO hỗ trợ mệnh đề FOREIGN KEY trong câu
nhất và khác NULL
lệnh CREATE và ALTER TABLE
PRIMARY KEY(staffNo) PRIMARY KEY(clientNo, propertyNo)
(cid:139) 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)
9
khai.hq@ou.edu.vn
Ràng buộc trong tham khảo dữ liệu
(cid:139) 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.
(cid:139) Vậy nếu FK chứa một giá trị, thì giá trị đó phải tham
(cid:139) Chuẩn ISO hỗ trợ định nghĩa FOREIGN KEY trong
khảo đến một hàng hiện hữu ở bảng cha của FK.
CREATE và ALTER TABLE:
FOREIGN KEY(branchNo) REFERENCES Branch
10
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
khai.hq@ou.edu.vn
Ràng buộc trong tham khảo dữ liệu
(cid:139) 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.
(cid:139) 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 DEFAULT - SET NULL, - NO ACTION
11
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)
12
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
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
13
khai.hq@ou.edu.vn
Ràng buộc từ phía công ty
(cid:139) Có thể dùng CHECK/UNIQUE trong câu
lệnh
(cid:139) Hay:
CREATE và ALTER TABLE.
(cid:139) Giống như sử dụng mệnh đề CHECK
CREATE ASSERTION AssertionName CHECK (searchCondition)
14
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
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))
15
khai.hq@ou.edu.vn
Định nghĩa dữ liệu
(cid:139) SQL DDL cho phép tạo và xóa schema, domain, table,
(cid:139) Các câu lệnh SQL DDL chính là:
view, và index
DROP SCHEMA
DROP DOMAIN
(cid:139) Nhiều DBMS cho phép:
CREATE SCHEMA CREATE/ALTER DOMAIN CREATE/ALTER TABLEDROP TABLE CREATE VIEW DROP VIEW
CREATE INDEX DROP INDEX
16
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
khai.hq@ou.edu.vn
Định nghĩa dữ liệu
(cid:139) Các quan hệ và các đối tượng CSDL khác tồn tại trong
(cid:139) Mỗi môi trường chứa 1 hay nhiều catalog, mỗi catalog
một môi trường (environment)
(cid:139) Lược đồ có tên theo ý nghĩa là tập hợp các đối tượng
bao gồm tập hợp các lược đồ (schema)
CSDL có liên quan nhau
(cid:139) 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ả.
17
khai.hq@ou.edu.vn
CREATE SCHEMA
CREATE SCHEMA [Name |
AUTHORIZATION CreatorId ]
(cid:139) Với RESTRICT (default), schema phải rỗng, nếu
DROP SCHEMA Name [RESTRICT | CASCADE ]
(cid:139) Với CASCADE sẽ xóa dây chuyền tất cả các đối tượng
không rỗng sẽ không xóa được
có liên quan đến schema
18
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
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)] [,…] })
19
khai.hq@ou.edu.vn
CREATE TABLE
(cid:139) Tạo một bảng với các cột, mỗi cột có kiểu dữ liệu riêng (cid:139) Với NOT NULL, cột không chấp nhận giá trị NULL (cid:139) Mỗi cột có thể đặt một giá trị DEFAULT (cid:139) Khóa chính phải đặt NOT NULL (cid:139) FOREIGN KEY có chỉ ra chế độ thao tác xóa/sửa ở cột
có liên quan bảng cha
20
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
khai.hq@ou.edu.vn
Ví dụ 7.1 - CREATE TABLE
(cid:139)CREATE DOMAIN OwnerNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT ownerNo FROM Owner));
(cid:139)CREATE DOMAIN StaffNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT staffNo FROM Staff));
(cid:139)CREATE DOMAIN PNumber AS VARCHAR(5);
(cid:139)CREATE DOMAIN PRooms AS SMALLINT;
CHECK(VALUE BETWEEN 1 AND 15);
(cid:139)CREATE DOMAIN PRent AS DECIMAL(6,2)
CHECK(VALUE BETWEEN 0 AND 9999.99);
21
khai.hq@ou.edu.vn
Ví dụ 7.1 - CREATE TABLE CREATE TABLE PropertyForRent (
NOT NULL, …. NOT NULL DEFAULT 4, NOT NULL, DEFAULT 600,
propertyNo PNumber rooms rent ownerNo staffNo
PRooms PRent OwnerNumber NOT NULL, StaffNumber Constraint StaffNotHandlingTooMuch ….
NOT NULL,
branchNo BranchNumber PRIMARY KEY (propertyNo), FOREIGN KEY (staffNo) REFERENCES Staff
ON DELETE SET NULL ON UPDATE CASCADE ….);
22
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
khai.hq@ou.edu.vn
ALTER TABLE
(cid:139) Thêm một cột mới cho một bảng (cid:139) Xóa một cột của một bảng (cid:139) Thêm một ràng buộc cho bảng (cid:139) Xóa một ràng buộc của bảng (cid:139) Đặt giá trị default cho một cột (cid:139) Xóa việc đặt giá trị default cho một cột
23
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';
24
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
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;
25
khai.hq@ou.edu.vn
DROP TABLE
DROP TABLE TableName [RESTRICT | CASCADE]
(cid:139) Xóa bảng và dữ liệu trong bảng (cid:139) Với RESTRICT, nếu các đối tượng khác có dùng bảng
ví dụ: DROP TABLE PropertyForRent;
(cid:139) Với CASCADE: xóa dây chuyền
thì không thể xóa bảng
26
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
khai.hq@ou.edu.vn
View
(cid:139) 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
(cid:139) 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ó
(cid:139) 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.
27
khai.hq@ou.edu.vn
Lệnh CREATE VIEW
CREATE VIEW ViewName [ (newColumnName [,...]) ]
AS subselect [WITH [CASCADED | LOCAL] CHECK OPTION]
(cid:139)Có thể gán tên cho mỗi cột của view. (cid:139)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. (cid:139)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.
28
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
khai.hq@ou.edu.vn
Lệnh CREATE VIEW
(cid:139) Nên liệt kê các tên của view để tránh sự nhầm lẫn. (cid:139) Phần subselect được gọi là phần truy vấn định nghĩa
view (defining query).
(cid:139) 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.
29
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';
30
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
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';
31
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;
32
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
khai.hq@ou.edu.vn
Ví dụ 7.5 - Tạo View có nhóm, có kết dữ liệu
33
khai.hq@ou.edu.vn
Lệnh DROP VIEW
(cid:139) Để xóa view trong cơ sở dữ liệu . (cid:139) Ví dụ:
DROP VIEW ViewName [RESTRICT | CASCADE]
(cid:139) Với CASCADE: xóa dây chuyền (cid:139) Với RESTRICT (mặc định): không cho xóa view nếu
DROP VIEW Manager3Staff;
các đối tượng khác có sử dụng view
34
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
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;
35
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
36
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
khai.hq@ou.edu.vn
Sự phân giải view (view phân giải)
(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;
37
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.
38
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
khai.hq@ou.edu.vn
Giới hạn cho view
(cid:139) Ví dụ, truy vấn sau là sai:
(cid:139) Tương tự, truy vấn sau là sai :
SELECT COUNT(cnt) FROM StaffPropCnt;
SELECT * FROM StaffPropCnt WHERE cnt > 2;
39
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.
(cid:139) 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.
40
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
khai.hq@ou.edu.vn
Việc cập nhật view
(cid:139) Cập nhật dữ liệu từ các bảng nền sẽ kéo theo sự cập
(cid:139) Tuy nhiên chiều ngược lại là không phải bao giờ cũng
nhật dữ liệu lên các view có liên quan
thực hiện được.
41
khai.hq@ou.edu.vn
Việc cập nhật view
(cid:139) 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);
(cid:139) 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.
42
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
khai.hq@ou.edu.vn
Việc cập nhật view
(cid:139) 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
43
khai.hq@ou.edu.vn
Dùng WITH CHECK OPTION
(cid:139) Các hàng trong có mặt trong view vì thỏa điều kiện
(cid:139) Nếu một hàng không còn thỏa điều kiện WHERE sẽ
WHERE.
(cid:139) Các hàng mới có thể sẽ xuất hiện trong view khi có sự
biến mất khỏi view.
(cid:139) Các hàng mới có hoặc bị mất đi khỏi view gọi là các
chèn/thêm dữ liệu (nếu thỏa điều kiện WHERE)
(cid:139) WITH CHECK OPTION cấm các hàng dịch chuyển ra
hàng dịch chuyển vào ra (migrating rows)
khỏi view.
44
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
khai.hq@ou.edu.vn
Dùng WITH CHECK OPTION
(cid:139) LOCAL/CASCADED apply to view hierarchies. (cid:139) 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.
(cid:139) Nếu dùng CASCADED (default): không cho các hàng
ra khỏi (biến khỏi) view.
45
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;
(cid:139) Không thể sửa B003 thành B002 vì khi đó các hàng sẽ
(cid:139) Không thể thêm các hàng có chi nhánh khác B003.
biến khỏi view.
46
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
khai.hq@ou.edu.vn
Ví dụ 7.6 - Dùng WITH CHECK OPTION
(cid:139) 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';
47
khai.hq@ou.edu.vn
Ví dụ 7.6 - WITH CHECK OPTION
UPDATE Manager3Staff SET salary = 9500 WHERE staffNo = 'SG37';
(cid:139) 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.
(cid:139) 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.
48
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
khai.hq@ou.edu.vn
Vi dụ 7.6 - WITH CHECK OPTION
(cid:139) 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.
(cid:139) Để tránh việc dị thường như vậy, các view nên dùng
WITH CASCADED CHECK OPTION.
49
khai.hq@ou.edu.vn
Ưu điểm của View
(cid:139) Độc lập dữ liệu (cid:139) Tiết kiệm chi phí (cid:139) Tăng tính an toàn (cid:139) Giảm độ phức tạp (cid:139) Tiện lợi (cid:139) Mềm dẻo (cid:139) Toàn vẹn dữ liệu
50
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
khai.hq@ou.edu.vn
Nhược điểm của View
(cid:139) Hạn chế trong cập nhật dữ liệu (cid:139) Giới hạn vế cấu trúc (cid:139) Chậm hơn
51
khai.hq@ou.edu.vn
Vật chất hóa view (View vật chất)
(cid:139) View phân giải chậm, nhất là khi truy xuất thường
(cid:139) View vật chất lưu view như một bảng tạm khi truy
xuyên.
(cid:139) Do đó, view vật chất chạy nhanh hơn. (cid:139) Nhưng: phải xem xét đến việc cập nhật view vật chất
xuất lần đầu tiên
(bảo trì) khi bảng nền của nó được cập nhật.
52
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
khai.hq@ou.edu.vn
Bảo trì view
(cid:139) Việc bảo trì view giúp cho view có thông tin hiện hành. (cid:139) Xét view sau:
CREATE VIEW StaffPropRent(staffNo) AS SELECT DISTINCT staffNo FROM PropertyForRent WHERE branchNo = 'B003‘ AND
rent > 400;
53
khai.hq@ou.edu.vn
Vật chất hóa view (View vật chất)
(cid:139) Nếu chèn hàng vào PropertyForRent có rent ≤400 thì view
không đổi
(cid:139) 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
(cid:139) 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.
(cid:139) Nếu xóa tài sản PG24, hàng dữ liệu này sẽ biến khỏi view (cid:139) 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)
54
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
khai.hq@ou.edu.vn
Giao tác (Transactions)
(cid:139) SQL định nghĩa mô hình giao tác dựa vào COMMIT
và ROLLBACK.
(cid:139) 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.
(cid:139) 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).
(cid:139) Các thay đổi do giao tác gây ra bị dấu đi cho đến khi
55
hoàn thành giao tác
khai.hq@ou.edu.vn
Giao tác (Transactions)
(cid:139) 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.
56
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
khai.hq@ou.edu.vn
Giao tác (Transactions)
(cid:139) Các giao tác SQL không được lồng nhau. (cid:139) Lệnh SET TRANSACTION cấu hình giao tác:
SET TRANSACTION
COMMITTED|REPEATABLE READ
[READ ONLY | READ WRITE] | [ISOLATION LEVEL READ UNCOMMITTED | READ |SERIALIZABLE ]
57
khai.hq@ou.edu.vn
Ràng buộc toàn vẹn kiểu trung gian và trì hoãn
(cid:139) 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) (cid:139) Các ràng buộc có thể được định nghĩa là INITIALLY IMMEDIATE hay INITIALLY DEFERRED lúc đầu giao tác.
(cid:139) Cũng có thể thay đổi lại kiểu ràng buộc dùng [NOT]
(cid:139) Kiểu mặc định là INITIALLY IMMEDIATE.
DEFERRABLE.
58
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
khai.hq@ou.edu.vn
Ràng buộc toàn vẹn kiểu trung gian và trì hoãn
(cid:139) Lệnh SET CONSTRAINTS cho giao tác hiện hành:
SET CONSTRAINTS
{ALL | constraintName [, . . . ]} {DEFERRED ¦ IMMEDIATE}
59
khai.hq@ou.edu.vn
Kiểm soát truy xuất – Danh hiệu về quyền và quyền sở hữu
(cid:139) 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.
(cid:139) Dùng để xác định quyền trong một số thao tác
trên một số đối tượng
(cid:139) 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.
60
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
khai.hq@ou.edu.vn
Đặc quyền (Privileges)
(cid:139) 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à
61
translations.
khai.hq@ou.edu.vn
Lệnh ban quyền GRANT
ObjectName {AuthorizationIdList | PUBLIC}
(cid:139) PrivilegeList gồm một hay nhiều quyền cách nhau bằng
GRANT {PrivilegeList | ALL PRIVILEGES} ON TO [WITH GRANT OPTION]
(cid:139) ALL PRIVILEGES ban tất cả quyền cho user
dấu phẩy
62
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
khai.hq@ou.edu.vn
Lệnh ban quyền GRANT
(cid:139) PUBLIC cho quyền truy xuất với tất cả user (hiện tại
(cid:139) ObjectName có thể là base table, view, domain,
và tương lai).
(cid:139) WITH GRANT OPTION cho phép thông qua quyền
character set, collation hay translation.
63
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;
64
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
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;
65
khai.hq@ou.edu.vn
Lệnh thu lấy quyền REVOKE
(cid:139) REVOKE lấy quyền đã được ban trước đó nhờ
GRANT.
REVOKE [GRANT OPTION FOR] {PrivilegeList | ALL PRIVILEGES} ON ObjectName FROM {AuthorizationIdList | PUBLIC}
(cid:139) ALL PRIVILEGES lấy lại tất cả quyền đã ban
[RESTRICT | CASCADE]
66
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
khai.hq@ou.edu.vn
Lệnh thu lấy quyền REVOKE
(cid:139) GRANT OPTION FOR cho phép các quyền được thông qua nhờ WITH GRANT OPTION của lệnh GRANT được lấy lại một cách riêng lẻ.
(cid:139) REVOKE không thực hiện được nếu trên đối tượng bị
(cid:139) Quyền do user này ban cho user khác không bị ảnh
cấm, như là các view trừ khi có dùng CASCADE
hưởng lẫn nhau
67
khai.hq@ou.edu.vn
Lệnh thu lấy quyền REVOKE
68
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
khai.hq@ou.edu.vn
Ví dụ 7.10/11 - Lệnh lấy quyền REVOKE
Lấy quyền SELECT trên bảng Branch của tất cả user:
REVOKE SELECT ON Branch FROM PUBLIC;
Lấy tất cả quyền đã cho Director trên bảng Staff :
REVOKE ALL PRIVILEGES ON Staff FROM Director;
HẾT CHƯƠNG 7
69
Chương 7: Ngôn ngữ SQL định nghĩa dữ liệu
Trang 35
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
Chương 8:
Chuẩn hóa cơ sở dữ liệu
Tham khảo tài liệu [A]: Chapter 13: Normalization
khai.hq@ou.edu.vn
Nội dung chương 8:
(cid:139) Mục đích của việc chuẩn hóa CSDL
(cid:139) Các lỗi liên quan đến việc dư thừa DL
(cid:139) Nhận dạng các loại cập nhật DL dị thường (update anomalies) như khi chèn DL, xóa DL, chỉnh sửa DL
(cid:139) Làm sao nhận định được tính thích hợp và chất
lượng của việc thiết kế các quan hệ
2
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 1
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Nội dung chương 8: (tt)
(cid:139) Cách dùng phụ thuộc hàm (functional
(cid:139) Cách thực hiện quá trình chuẩn hóa CSDL
dependencies) để nhóm các thuộc tính vào các quan hệ theo một dạng chuẩn định trước
(cid:139) Các nhận dạng một dạng chuẩn phổ biến (1NF,
(process of normalization)
(cid:139) Giới thiệu dạng dạng chuẩn 4 (4NF)
2NF, 3NF, và dạng chuẩn Boyce–Codd)
3
khai.hq@ou.edu.vn
Chuẩn hóa (Normalization)
(cid:139) Mục tiêu chính của việc phát triển mô hình mức
logic của CSDL quan hệ là tạo được nơi lưu chứa và cung cấp dữ liệu có tính chính xác, thể hiện đầy đủ các mối quan hệ và ràng buộc của dữ liệu (cid:139) Để đạt được mục tiêu trên, tập các quan hệ trong
CSDL phải có thiết kế thích hợp
4
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 2
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Chuẩn hóa (Normalization) (tt)
(cid:139) 4 dạng chuẩn thường dùng nhất là dạng chuẩn 1
(cid:139) Việc chuẩn hóa dựa vào các phụ thuộc hàm giữa các
(1NF), dạng chuẩn 2 (2NF), dạng chuẩn 3 (3NF), và dạng chuẩn Boyce–Codd (BCNF)
thuộc tính của quan hệ
(cid:139) Một quan hệ có thể được chuẩn hóa thành một dạng chuẩn mới để ngăn ngừa việc xảy ra các dị thường trong cập nhật dữ liệu
5
khai.hq@ou.edu.vn
Việc dư thừa dữ liệu (Data Redundancy)
(cid:139) Mục đích chính của việc thiết kế CSDL quan hệ là nhóm các thuộc tính vào các quan hệ nhằm giảm thiểu việc dư thừa dữ liệu
(cid:139) Vấn đề dư thừa dữ liệu được minh họa sau đây qua
quan hệ Staff, quan hệ Branch và quan hệ StaffBranch
6
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 3
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Việc dư thừa dữ liệu (Data Redundancy)
7
khai.hq@ou.edu.vn
Việc dư thừa dữ liệu (Data Redundancy)
(cid:139) Quan hệ StaffBranch có dư thừa dữ liệu: chi tiết về 1
(cid:139) Ngược lại, chi tiết về 1 branch chỉ lưu 1 lần trong
branch bị lặp lại trên các staff
quan hệ Branch và chỉ có thuộc tính branchNo được lưu lặp lại để cho biết nơi làm của staff
8
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 4
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dị thường khi cập nhật (Update Anomalies)
(cid:139) Các quan hệ có dư thừa dữ liệu dễ bị dị thường khi
(cid:139) Các loại dị thường khi cập nhật dữ liệu:
cập nhập dữ liệu
– Chèn (Insertion) – Xóa (Deletion) – Chỉnh sửa (Modification)
9
khai.hq@ou.edu.vn
Tính chất bảo toàn phụ thuộc hàm (Dependency Preservation) và ghép nối không mất thông tin (Lossless-join)
(cid:139) 2 tính chất quan trọng của phép phân rã:
- Tính chất ghép nối không mất thông tin (Lossless- join property): cho phép chúng ta tìm bất kỳ các thể hiện của quan hệ nguyên thủy từ các quan hệ tương ứng nhỏ hơn - Tính chất bảo toàn phụ thuộc hàm (Dependency preservation property): cho phép chúng ta áp dụng ràng buộc trên quan hệ nguyên thủy bằng cách áp dụng một số ràng buộc trên các quan hệ nhỏ hơn
10
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 5
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Phụ thuộc hàm là khái niệm liên quan mật thiết với
(cid:139) Phụ thuộc hàm
việc chuẩn hóa CSDL
– Miêu tả mối quan hệ giữa các thuộc tính trong một
quan hệ (ký hiệu R là tập các thuộc tímh)
– Nếu A và B là các thuộc tính của quan hệ R, B phụ thuộc hàm vào A, hay còn nói A xác định B (ký hiệu A (cid:198) B), nếu với mỗi giá trị của A trong R thì sẽ ứng với đúng một giá trị của B trong R
11
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Phụ thuộc hàm thể hiện ý nghĩa của sự liên hệ giữa
các thuộc tính với nhau trong 1 quan hệ
(cid:139) Phần tử quyết định (determinant) của một phụ thuộc hàm là một hay một nhóm các thuộc tính nằm bên trái dấu mũi tên
12
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 6
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Ví dụ về phụ thuộc hàm
13
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Đặc điểm của chính của phụ thuộc hàm dùng trong
việc chuẩn hóa là:
– Có mối liên hệ 1:1 giữa các thuộc tính bên trái và
bên phải của phụ thuộc hàm – Có mối liên hệ luôn luôn đúng – Không phải là mối liên hệ mặc nhiên đúng
14
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 7
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Tập hợp tất các các phụ thuộc hàm của 1 quan hệ có
(cid:139) Phải tìm cách giảm tập các phụ thuộc hàm để có thể
thể là rất lớn
(cid:139) Ta mong muốn xác định tập phụ thuộc hàm X nhỏ
tính toán được
hơn tập Y là tập chứa toàn bộ các phụ thuộc hàm của quan hệ, nhưng từ các phụ thuộc hàm trong X phải suy ra được tất cả các phụ thuộc hàm của Y
15
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Tập chứa tất cả các phụ thuộc hàm sinh ra từ các phụ thuộc hàm của X gọi là bao đóng của tập X (closure) ký hiệu X+
(cid:139) Sử dụng các qui tắc suy diễn từ các tiên đề của
Armstrong (Armstrong’s axioms) để tìm ra các phụ thuộc hàm mới từ 1 số phụ thuộc hàm cho trước
16
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 8
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phụ thuộc hàm (Functional Dependency)
(cid:139) Với A, B, và C là tập con của tập các thuộc tính của quan hệ R, 3 tiên đề của Armstrong phát biểu như sau: 1. Tính phản xạ (Reflexivity)
Nếu B là tập con của A, thì A → B 2. Tính tăng trưởng (Augmentation) Nếu A → B, thì A,C → Β,C
3. Tính bắc cầu (Transitivity)
Nếu A → B và B → C, thì A → C
17
khai.hq@ou.edu.vn
Tiến trình chuẩn hóa
(cid:139) Dựa vào khóa chính và các phụ thuộc hàm
(cid:139) Gồm một loạt các bước, mỗi bước tương ứng với
(cid:139) Sau khi chuẩn hóa, các quan hệ sẽ bị ràng buộc
một dạng chuẩn
nhiều hơn (tốt hơn) và ít bị dị thường khi cập nhật hơn
18
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 9
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Mối quan hệ giữa các dạng chuẩn
19
khai.hq@ou.edu.vn
Dạng chưa chuẩn hóa Unnormalized Form (UNF)
(cid:139) Một bảng có chứa một hay nhiều nhóm lặp
(cid:139) Muốn tạo một bảng chưa chuẩn hóa:
– Nhập thông tin từ 1 biểu mẫu nào đó vào 1 bảng
20
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 10
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn 1 (1NF)
(cid:139) Một ô dữ liệu phải chứa một giá trị đơn trị
21
khai.hq@ou.edu.vn
Chuẩn hóa UNF thành 1NF
(cid:139) Chọn ra 1 hay 1 nhóm thuộc tính đóng vai trò là
(cid:139) Xác định các nhóm lặp gây ra việc lặp các thuộc
khóa của bảng
(cid:139) Loại bỏ các nhóm lặp bằng cách:
tính khóa
– Nhập dữ liệu vào các ô lặp lại còn trống hoặc bằng cách – Tạo 1 quan hệ mới chứa các thuộc tính lặp và
các thuộc tính khóa
22
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 11
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn 2 (2NF)
(cid:139) Dựa vào khái niệm phụ thuộc hàm đầy đủ (full
functional dependency): – A và B là các thuộc tính của 1 quan hệ – B phụ thuộc hàm đầy đủ vào A nếu: B phụ thuộc hàm vào A nhưng không phụ thuộc hàm vào bất kỳ tập con thật sự nào của A
(cid:139) 2NF – Là quan hệ ở dạng chuẩn 1 và tất cả các thuộc tính không phải là khóa phải phụ thuộc hàm đầy đủ vào khóa
23
khai.hq@ou.edu.vn
Chuẩn hóa 1NF thành 2NF
(cid:139) Xác định khóa của quan hệ đang ở 1NF
(cid:139) Xác định các phụ thuộc hàm của quan hệ
(cid:139) Nếu có phụ thuộc hàm A(cid:198) B với A là con thật sự của khóa, thì ta loại thuộc tính B khỏi quan hệ đang xét và tạo 1 quan hệ mới chứa A,B
24
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 12
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn 3 (3NF)
(cid:139) Dựa vào khái niệm phụ thuộc hàm bắc cầu (transitive
dependency): – A, B và C là các thuộc tính của 1 quan hệ có phụ
thuộc hàm A (cid:198) B và B (cid:198) C,
– Ta nói C phụ thuộc hàm bắc cầu vào A qua B
(cid:139) 3NF - Là quan hệ ở dạng chuẩn 2 và: không có thuộc tính không phải là khóa nào phụ thuộc hàm bắc cầu vào khóa
25
khai.hq@ou.edu.vn
Chuẩn hóa 2NF thành 3NF
(cid:139) Xác định khóa của quan hệ đang ở 2NF
(cid:139) Xác định các phụ thuộc hàm của quan hệ
(cid:139) Tách B, C thành 1 quan hệ mới và loại bỏ C khỏi
quan hệ đang xét
26
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 13
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn Boyce–Codd (BCNF)
(cid:139) Là dạng chuẩn có tính đến tất cả các khóa ứng viên
nên có nhiều ràng buộc hơn dạng chuẩn 3
(cid:139) BCNF - Một quan hệ ở dạng chuẩn BCNF nếu và chỉ nếu mọi phần tử quyết định của các phụ thuộc hàm (nằm bên trái mũi tên) là các khóa ứng viên
27
khai.hq@ou.edu.vn
So sánh 3NF và BCNF
(cid:139) Xét phụ thuộc hàm A → B, 3NF cho phép B là 1
(cid:139) BCNF quy định A phải là khóa ứng viên
(cid:139) Nếu là BCNF thì là 3NF
(cid:139) Nếu là 3NF thì chưa chắc là BCNF
thuộc tính của khóa và A không là 1 khóa ứng viên
28
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 14
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn BCNF
(cid:139) Trường hợp có thể gây ra sự vi phạm dạng chuẩn
BCNF trong 1 quan hệ: – Có chức các khóa ứng viên có 2 hay nhiều thuộc
tính
– Các khóa ứng viên có phần giao nhau (tức có
thuộc tính chung)
29
khai.hq@ou.edu.vn
Ví dụ chuẩn hóa từ UNF thành BCNF
30
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 15
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Phụ thuộc đa trị
(cid:139) Mặc dầu dạng chuẩn BCNF loại bỏ được sự dị thường nhờ vào xét các phụ thuộc hàm, có 1 loại phụ thuộc khác có thể gây ra việc dư thừa dữ liệu gọi là phụ thuộc đa trị (multi-valued dependency (MVD))
(cid:139) MVD: xét A, B, C là các thuộc tính của 1 quan hệ, mỗi giá trị của A xác định 1 tập giá trị của B và 1 tập giá trị của C, nhưng tập giá trị của B và của C không phụ thuộc lẫn nhau. Ký hiệu:
A (cid:190)(cid:190) B A (cid:190)(cid:190) C
31
khai.hq@ou.edu.vn
Phụ thuộc đa trị (tt)
(cid:139) Xét A (cid:190)(cid:190) B (cid:139) Là phụ thuộc đa trị mặc nhiên nếu:
(cid:139) Là phụ thuộc đa trị không mặc nhiên nếu không
– B là tập con của A, hay – A ∪ B = R
phải là phụ thuộc đa trị mặc nhiên
(cid:139) Phụ thuộc đa trị không mặc nhiên có tạo ràng buộc cho quan hệ, còn phụ thuộc đa trị mặc nhiên không có tạo ràng buộc cho quan hệ
32
Chương 8: Chuẩn hóa cơ sở dữ liệu
Trang 16
Nhập môn cơ sở dữ liệu
www.ou.edu.vn
khai.hq@ou.edu.vn
Dạng chuẩn 4 (4NF)
(cid:139) Là quan hệ ở dạng chuẩn BCNF và không chứa các
phụ thuộc đa trị không mặc nhiên
33
khai.hq@ou.edu.vn
Ví dụ 4NF
HẾT CHƯƠNG 8