l- Phép giao hoán
Nếu R1 và R2 là hai quan hệ, F là điều kiện trên các thuộc tính của Rl và R2 thì Rl*R2 ≡ R2* Rl; Rl x R2 ≡ R2 x Rl
2- Phép kết hợp
Nếu R1, R2 và R+3 là các quan hệ, Fl và F2 là các biểu thức điều kiện thì (Rl x R2) x R3 ≡ Rl x (R2 x R3);
3- Xử lý dãy các phép toán chọn
σ F1(σ F2(σ F3…(σF1n(r))) ≡σF1^F2^F3^…^Fn(r)
4- Xử lý dãy các phép toán chiếu
Nếu có: A1A2…An ⊆ B1B2…Bn.
Thì ΠA1A2...An(ΠB1B2...Bn(R)) ≡ ΠA1A2...An(R)
5- Giao hoán phép chọn và phép chiếu
σ F(ΠA1A2...An(R)) ≡ ΠA1A2...An(σ F(R))
6-Giao hoán giữa phép chọn và phép tích Đề -các
- Nếu các điều kiện chọn chỉ liên quan đến R1 σF(R1 x R2) ≡σF1(Rl) x (R2)
- Nếu F = Fl ∧ F2 trong đó Fl chỉ liên quan đến Rl; F2 chỉ liên quan đến R2
σF(Rl x R2) ≡σ F1(Rl) x σ F2(R2)
- Nếu F1 chỉ liên quan đến Rl, F2 liên quan đến cả Rl và R2
σF(Rl x R2) ≡σ F1(σ F1(Rl) x R2)
7- Giao hoán giữa phép chọn và một phép hợp
σF(Rl ∪ R2) ≡σF(Rl) ∪ σF(R2)
8- Giao hoán giữa một phép chọn và một phép trừ
σF(Rl - R2) ≡σF(Rl) - σF(R2)
9- Giao hoán giữa một phép chiếu và phép tích Đề các
Nếu các thuộc tính Al, A2,…An ∈ Rl; Bl, B2,…Bn ∈ R2 Ta có:
10- Giao hoán giữa một phép chiếu và một phép hợp
ΠA1A2...An(Rl ∪ R2) ≡ ΠA1A2...An(Rl) ∪ ΠA1A2...An(R2)
Ví dụ:
Cho biết tên công ty cung cấp mặt hàng màu đỏ *Dùng đại số quan hệ
ΠTenCongTy(σmau = “đỏ”(σCongTy.MaCongTy = CungCap.MaCongTy
(σ CungCap.MaHang=HangHoa.MaHang(congty x hanghoa x cungcap)))) - Đẩy phép chọn lên trước
ΠTenCongTy(σmau = “đỏ”(σCongTy.MaCongTy = CungCap.MaCongTy
(CongTy x σCungCap.MaHang=HangHoa.MaHang(HangHoa x Cungcap))) - Chuyển phép chọn và phép tích Đề các thành phép kết nối
ΠTenCongTy(σmau=“đỏ”(σ CongTy.MaCongTy = CungCap.MaCongTy (CongTy x (HangHoa *
Cungcap))) MaHang
- Chuyển phép chọn và phép tích Đề các thành phép kết nối ΠTenCongTy(σmau=“đỏ”(CongTy * HangHoa * CungCap))
MaCongTy MaHang
- Đẩy phép chọn lên trước
ΠTenCongTy(CongTy * (σmau=“đỏ”(HangHoa) * CungCap)) *Dùng SQL
- Không tối ưu:
SELECT TenCongTy
FROM Congty, HangHoa,CungCap
WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND
(CungCap.MaHang = HangHoa.MaHang) AND (HangHoa.Mau = “Đỏ”) - Tối ưu :
SELECT TenCongTy FROM CongTy
WHERE MaCongTy IN ( SELECT MaCongTy FROM Cungcap
WHERE MaHang lN ( SELECT MaHang FROM HangHoa
CHƯƠNG 6
AN TOÀN VÀ TOÀN VẸN ĐỮ LIỆU 6.1 An toàn dữ liệu
6.1.1 Giới thiệu
- Một hệ cơ sở dữ liệu bao gồm dữ liệu và các chương trình ứng dụng để thực hiện các thao tác dữ liệu.
- Người sử dụng (enduser) truy cập vào cơ sở dữ liệu sử dụng các chương trình ứng dụng để thao tác dữ liệu. Để đảm bảo an toàn hệ thống phải xác định:
+ User hợp pháp: Là người được phép truy nhập vào dữ liệu với một số quyền nào đó
+ User bất hợp pháp: Là người không được phép truy nhập vào dữ liệu
6.1.2 Thực hiện việc an toàn dữ liệu
- Xác định user hợp pháp: Sử dụng mật khẩu để xác minh
- Xác minh khung nhìn của user: Hệ thống cho phép user được truy nhập vào bộ phán nào của cơ sở dữ liệu
- Xác minh quyền của user: Hệ thống cho phép user có những quyền gì đối với cơ sở dữ liệu
6.1.3 Các lệnh về an toàn dữ liệu trong SQL
a) Lệnh tạo khung nhìn
CREAT VIEW <tên view> (danh sách tên cột) AS <câu hỏi con> Ví dụ:
- Tạo View DSmoi
CREAT VIEW DSmoi AS
SELECT *
FROM Nhanvien
WHERE Ma phong = “M2”
CREAT VIEW Tong (MaCongTy, MaHang, Tổng số lượng) AS SELECT MaCongTy, MaHang, ( Soluong + 20)
FROM Cungcap
b) Lệnh trao quyền cho các user
GRANT <tên quyền> On <đối tượng> TO <tên user> [WITH GRANT OPTION] Các quyền gồm
CREAT: Tạo ra cơ sở dữ liệu READ: Đọc SELECI: Chọn WRITE: Ghi INSERT: Bổ sung UPDATE: Cập nhật DELETE: Xoá
RUN: Chạy một chương trình ứng dụng Trong đó:
- Đối tượng: Là một bảng, một view, một chương trình ứng dụng
- Tên user: Là tên một người, một nhóm, hoặc một danh sách nếu dùng từ khoá PUBLIC, WORLD cho mọi users
- Tuỳ chọn GRANT OPTION: Khi có tuỳ chọn này user được phép trao quyền của mình cho user khác
Ví dụ:
GRANT Select, Delete, Update ON Dsluong TO abc WITH GRANT OPTION GRANT Select ON Dsluong TO def
c) Thu hồi quyền
REVOKE <tên quyền> ON <đối tượng> FROM <user> Ví dụ:
REVOKE Delete ON Write FROM abc
6.2 Tính toàn vẹn dữ liệu
6.2.1 Khái niệm ràng buộc dữ liệu
Khi nhập dữ liệu vào ta có một số ràng buộc để hợp lệ hoá khi nhập dữ liệu nếu có giá trị không hợp lệ thì chương trình thông báo yêu cầu nhập lại. Hoặc các ràng báo
6.2.2 Các ràng buộc
- Ràng buộc về tập giá trị cho phép:
Dùng các phép so sánh để ràng buộc Ví dụ:
Bổ xung thêm nhân viên
INSERT INTO Nviên ( MãNV, TênNV, Địa chỉ, Lương) VALUES (NV05, “Trần Long”, “Hà nội”, 500 000)
Nếu có ràng buộc 1000000 < lương < 2000000 thì giá trị lương trên không hợp lệ -
Ràng buộc về giá trị NULL:
Nếu một thuộc tính bắt buộc phải có giá trị thì dùng ràng buộc NOT NULL, nếu không có thể để trống
-Ràng buộc về khoá chính:
Mối quan hệ phải có thuộc tính khoá, là thuộc tính chỉ có một giá trị duy nhất cho mỗi bộ không trùng lặp. Dùng ràng buộc này chương trình sẽ kiểm tra tính trùng lặp của các trị của khoá
Ràng buộc về khoá ngoài:
TÀI LIỆU THAM KHẢO
[l] Tô Văn Nam, Giáo trình cơ sở dữ liệu. Nhà xuất bản giáo dục. [2] Nguyễn Xuân Huy Bài giảng cơ sớ dữ liệu
[3] Vũ Đức Thi, Cơ sở dữ liệu - Kiến thức và thực hành. Nhà xuất bán Thông kê, 1997.
[4] TS.Nguyễn Bá Tường, Nhập môn cơ sở dữ liệu phân tán, Nhà xuất bản Khoa học và Kỹ thuật Hà Nội, 2005.
[5] Nguyễn Bá Tường, Cơ sở dữ liệu - Lý thuyết và thực hành, Nhà xuất bàn Khoa học và Kỹ thuật, 2001.
[6] Lê Tiến Vương. Nhập môn cơ sở dữ liệu quan hệ, Nhà xuất bản Khoa học và Kỹ thuật, 1997.
[7] M.Tamer Ôzsu, Patrick Valduriez, Nguyên lý các hệ cơ sở dữ liệu phân tán, Nhà xuất bán Thống kê, 2000.
[8] J.Ulman, Nguyên lý các hệ cơ sở dữ liệu và cơ sớ tri thức, Nhà xuất bản Thống kê, 1998.
MỤC LỤC Trang MỘT SỐ CÁC QUY ƯỚC...4 CHƯƠNG 1...5 NHẬP MÔN CƠ SỞ DỮ LIỆU ...5 1.1 Giới thiệu về hề thống quản lý tệp truyền thống ...5 1.2 Định nghĩa cơ sở dữ liệu...5 1.3. Hệ cơ sở dữ liệu...5 1. 4 Tính độc lập dữ liệu...10 1. 5 Hệ quản trị cơ sở dữ liệu ...10 1.6 Các mô hình dữ liệu...10 BÀI TẬP VÀ CÂU HỎI ...18 CHƯƠNG 2...19 MÔ HÌNH DỮ LIỆU QUAN HỆ...19 2.1 Thuộc tính...19 2.2 Quan hệ...19 2.3 Khoá của một quan hệ...20 2.4 Các phép toán của đại số quan hệ...21 BÀI TẬP VÀ CÂU HỎI ...28 CHƯƠNG 3...30 LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU ...30 3.1 Giới thiệu...30 3.2 Sơđồ quan hệ...31
3.3 Hệ tiên đề cho tập phụ thuộc hàm ...32
3.4 Bao đóng của tập phụ thuộc hàm ...35
3.5 Phép tách một quan hệ...36
3.6 Chuẩn hoá lược đồ quan hệ...38
3.7 Các thuật toán ...40
3.8 Phụ thuộc đa trị...47
BÀI TẬP VÀ CÂU HỎI ...49
CHƯƠNG 4...51
NGÔN NGỮĐỊNH NGHĨA VÀ THAO TÁC DỮ LIỆU...51
4.1 Giới thiệu về mô hình xử lý dữ liệu ...51
4.2 Ngôn ngữđại số quan hệ...51
4.3 Ngôn ngữ SQL (Structure Quay Language)... 53
BÀI TẬP CÂU HỎI ...69
CHƯƠNG 5...71
TỐI ƯU HOÁ CÂU HỎI ...71
5.1 Các chiến lược tối ưu...71
5.2 Các phép biến đổi tương đương ...72
CHƯƠNG 6...74
AN TOÀN VÀ TOÀN VẸN ĐỮ LIỆU ...74
6.1 An toàn dữ liệu ...74
6.2 Tính toàn vẹn dữ liệu...75