Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Nguyễn Minh Thu

Khái niệm

 RBTV (Integrety Constraints) xuất phát từ những qui

định hay điều kiện

- Trong thực tế

- Trong mô hình dữ liệu

 Các thao tác làm thay đổi dữ liệu không nên được thực hiện

một cách tùy tiện vì có thể đưa CSDL đến một tình trạng ‘xấu’

 RBTV là một điều kiện được định nghĩa trên một

hay nhiều quan hệ khác nhau

 Các RBTV là những điều kiện bất biến mà mọi thể

hiện của quan hệ đều phải thỏa ở bất kỳ thời điểm

nào

pdf 61 trang yennguyen 3440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Nguyễn Minh Thu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Nguyễn Minh Thu

Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Nguyễn Minh Thu
Chương 7 
Ràng buộc toàn vẹn 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 2 
Nội dung chi tiết 
 Khái niệm 
 Các đặc trưng của RBTV 
 Phân loại 
 Cài đặt 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 3 
Khái niệm 
 RBTV (Integrety Constraints) xuất phát từ những qui 
định hay điều kiện 
- Trong thực tế 
- Trong mô hình dữ liệu 
 Các thao tác làm thay đổi dữ liệu không nên được thực hiện 
một cách tùy tiện vì có thể đưa CSDL đến một tình trạng ‘xấu’ 
 RBTV là một điều kiện được định nghĩa trên một 
hay nhiều quan hệ khác nhau 
 Các RBTV là những điều kiện bất biến mà mọi thể 
hiện của quan hệ đều phải thỏa ở bất kỳ thời điểm 
nào 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 4 
Khái niệm (tt) 
 Tại sao cần phải có RBTV? 
- Bảo đảm tính kết dính của các thành phần cấu tạo nên 
CSDL 
- Bảo đảm tính nhất quán của dữ liệu 
- Bảo đảm CSDL luôn biểu diễn đúng ngữ nghĩa thực tế 
 Ví dụ 
- Mức lương của một người nhân viên không được vượt 
quá trưởng phòng (R1) 
- Người quản lý trực tiếp (của một nhân viên) phải là một 
nhân viên trong công ty (R2) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 5 
Nội dung chi tiết 
 Khái niệm 
 Các đặc trưng của RBTV 
- Bối cảnh 
- Nội dung 
- Bảng tầm ảnh hưởng 
 Phân loại 
 Cài đặt 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 6 
Bối cảnh 
 Bối cảnh của một RBTV 
- Là những quan hệ có khả năng bị vi phạm RBTV khi 
thực hiện các phép cập nhật 
 Ví dụ (R1) 
- Mức lương của một người nhân viên không được vượt 
quá trưởng phòng 
 Các phép cập nhật 
 Cập nhật lương cho nhân viên 
 Thêm mới một nhân viên vào một phòng ban 
 Bổ nhiệm trưởng phòng cho một phòng ban 
 Bối cảnh: NHANVIEN, PHONGBAN 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 7 
Bối cảnh (tt) 
 Ví dụ (R2) 
- Người quản lý trực tiếp phải là một nhân viên trong công 
ty 
 Các phép cập nhật 
 Cập nhật người quản lý trực tiếp của một nhân viên 
 Thêm mới một nhân viên 
 Bối cảnh: NHANVIEN 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 8 
Nội dung 
 Nội dung của một RBTV được phát biểu bằng 
- Ngôn ngữ tự nhiên 
 Dễ hiểu nhưng thiếu tính chặt chẽ 
- Ngôn ngữ hình thức 
 Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu 
 Biểu diễn thông qua 
 Đại số quan hệ 
 Phép tính quan hệ 
 Mã giả (pseudo code) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 9 
Nội dung (tt) 
 Ví dụ (R1) 
- Ngôn ngữ tự nhiên 
 Mức lương của một người nhân viên không được vượt quá 
trưởng phòng 
- Ngôn ngữ hình thức 
 t NHANVIEN ( 
 u PHONGBAN ( v NHANVIEN ( 
 u.TRPHG v.MANV  
 u.MAPHG t.PHG  
 t.LUONG v.LUONG ))) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 10 
Nội dung (tt) 
 Ví dụ (R2) 
- Ngôn ngữ tự nhiên 
 Người quản lý trực tiếp phải là một nhân viên trong công ty 
- Ngôn ngữ hình thức 
 t NHANVIEN ( t.MA_NQL null  
 s NHANVIEN (t.MA_NQL s.MANV )) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 11 
Bảng tầm ảnh hưởng 
 Bảng tầm ảnh hưởng 
- Xác định thao tác cập nhật nào cần phải kiểm tra RBTV 
khi được thực hiện trên quan hệ bối cảnh 
 Có 2 loại 
- Bảng tầm ảnh hưởng cho một RBTV 
- Bảng tầm ảnh hưởng tổng hợp 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12 
Bảng tầm ảnh hưởng một RBTV 
Tên_RB 
Quan hệ n 
Quan hệ 1 
Quan hệ 2 
Thêm Xóa Sửa 
 (Thuộc tính) 
( ) Vi phạm RBTV 
( ) Không vi phạm RBTV 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 13 
Bảng tầm ảnh hưởng tổng hợp 
Quan hệ 1 
Quan hệ 2 
Quan hệ 3 
Quan hệ n 
T X S T X S T X S    
Ràng buộc 1 Ràng buộc 2 Ràng buộc m 
+ 
- 
- 
- 
+ 
- 
+ 
- 
+ 
+ 
- 
- 
+ 
+ 
- 
+ 
- 
- 
- 
+ 
- 
+ 
- 
+ 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 14 
Nội dung chi tiết 
 Khái niệm 
 Các đặc trưng của RBTV 
 Phân loại 
- Một quan hệ 
 Miền giá trị 
 Liên bộ 
 Liên thuộc tính 
- Nhiều quan hệ 
 Tham chiếu 
 Liên bộ, liên quan hệ 
 Liên thuộc tính, liên quan hệ 
 Thuộc tính tổng hợp 
 Chu trình 
 Cài đặt 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 15 
RBTV - Miền giá trị 
 Ràng buộc qui định các giá trị cho một thuộc tính 
 Miền giá trị 
- Liên tục 
- Rời rạc 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
 { , , } 9 {1..10} 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16 
Ví dụ 3 
 Thời gian tham gia đề án của một nhân viên không 
quá 60 giờ 
- Bối cảnh: PHANCONG 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t PHANCONG ( t.THOIGIAN 60 ) 
R3 
PHANCONG 
Thêm Xóa Sửa 
(THOIGIAN) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 17 
Ví dụ 4 
 Giới tính của nhân viên là ‘Nam’ hoặc ‘Nu’ 
- Bối cảnh: NHANVIEN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t NHANVIEN ( t.PHAI {‘Nam’, ‘Nu’} ) 
R4 
NHANVIEN 
Thêm Xóa Sửa 
 (PHAI) 
DOM(PHAI) {‘Nam’, ‘Nu’} 
hay 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18 
RBTV - Liên bộ 
 Sự tồn tại của một hay nhiều bộ phụ thuộc vào sự 
tồn tại của một hay nhiều bộ khác trong cùng quan 
hệ 
 Trường hợp đặc biệt 
- RB khóa chính 
- RB duy nhất (unique) 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 19 
Ví dụ 5 
 Tên phòng là duy nhất 
- Bối cảnh: PHONGBAN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t1, t2 PHONGBAN ( 
 t1 t2  t1.TENPHG T2.TENPHG ) 
R5 
PHONGBAN 
Thêm Xóa Sửa 
 (TENPHG) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20 
Ví dụ 6 
 Một nhân viên được tham gia tối đa 5 đề án 
- Bối cảnh: PHANCONG 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t PHANCONG ( 
 ({ s PHANCONG | s.MA_NVIEN t.MA_NVIEN}) 5 ) 
R6 
PHANCONG 
Thêm Xóa Sửa 
 (MA_VIEN, SODA) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 21 
Ví dụ 7 
 THIDAU(NGAY, GIO, DOI, SOBAN) 
 Mỗi trận đấu là cuộc thi đấu của đúng 2 đội 
- Bối cảnh: THIDAU 
- Biểu diễn: 
- Bảng tầm ảnh hưởng 
t THIDAU ( !s THIDAU ( 
 t s  t.NGAY s.NGAY  t.GIO s.GIO )) 
R7 
THIDAU 
Thêm Xóa Sửa 
 (NGAY, GIO, DOI) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 22 
RBTV - Liên thuộc tính 
 Là ràng buộc giữa các thuộc tính trong cùng quan 
hệ 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 23 
Ví dụ 8 
 Một nhân viên không quản lý trực tiếp chính mình 
- Bối cảnh: NHANVIEN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t NHANVIEN ( t.MA_NQL t.MANV  t.MA_NQL null ) 
R8 
NHANVIEN 
Thêm Xóa Sửa 
 (MA_NQL) 
Ở thời điểm thêm 1 bộ vào NHANVIEN, MA_NQL là null 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 24 
Ví dụ 9 
 KHOAHOC(MAKH, TENKH, BDAU, KTHUC) 
 Mỗi khóa học kéo dài ít nhất 3 tháng 
- Bối cảnh: KHOAHOC 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t KHOAHOC ( t.KTHUC t.BDAU 3 ) 
R9 
KHOAHOC 
Thêm Xóa Sửa 
 (BDAU, KTHUC) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 25 
RBTV - Tham chiếu 
 Giá trị xuất hiện tại các thuộc tính trong một quan hệ 
nào đó phải tham chiếu đến giá trị khóa chính của 
một quan hệ khác cho trước 
 Trường hợp đặc biệt 
- RB khóa ngoại 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
E F 
7 
S 
3 
1 
2 
Bắt buộc phải tồn tại trước 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26 
Ví dụ 10 
 Mọi thân nhân phải có mối quan hệ gia đình với một 
nhân viên trong công ty 
- Bối cảnh: THANNHAN, NHANVIEN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t THANNHAN ( s NHANVIEN ( s.MANV t.MA_NVIEN )) 
THANNHAN.MA_NVIEN  NHANVIEN.MANV 
hay 
R10 
NHANVIEN 
Thêm Xóa Sửa 
 (MANV) 
THANNHAN 
 (MA_NVIEN) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 27 
RBTV - Tham chiếu (tt) 
 Còn gọi là phụ thuộc tồn tại 
 Thường có bối cảnh là hai quan hệ 
- Nhưng có trường hợp suy biến thành một quan hệ 
- Ví dụ (R2) 
 Người quản lý trực tiếp phải là một nhân viên trong công ty 
 Bối cảnh: NHANVIEN 
 Biểu diễn: 
 Bảng tầm ảnh hưởng 
t NHANVIEN ( t.MA_NQL null  
 s NHANVIEN (t.MA_NQL s.MANV )) 
R2 
NHANVIEN 
Thêm Xóa Sửa 
 (MANV, MA_NVIEN) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 28 
RBTV - Liên bộ, liên quan hệ 
 Là ràng buộc xảy ra giữa các bộ trên nhiều quan hệ 
khác nhau 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
A B 
S 
2 
4 
 
 
2 
2 
C 
7 
7 
3 
10 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 29 
Ví dụ 11 
 HOADON(SOHD, MAKH, NGAYHD) 
 CTHD(SOHD, MAHH, DGIA, SLG) 
 Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn 
- Bối cảnh: HOADON, CTHD 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t HOADON ( s CTHD ( t.SOHD s.SOHD )) 
R11 
HOADON 
Thêm Xóa Sửa 
 (SOHD) 
CTHD 
 (SOHD) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 30 
RBTV - Liên thuộc tính, liên quan hệ 
 Là ràng buộc xãy ra giữa các thuộc tính trên nhiều 
quan hệ khác nhau 
A B 
R 
 
C 
1 
5 
12 
 23 
D 
1 
7 
3 
9 
 
 
 
A B 
S 
2 
4 
 
 
2 
2 
C 
7 
7 
3 
10 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 31 
Ví dụ 12 
 Ngày sinh của trưởng phòng phải nhỏ hơn ngày 
nhận chức 
- Bối cảnh: NHANVIEN, PHONGBAN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t PHONGBAN ( s NHANVIEN ( 
 s.MANV t.TRPHG  
 t.NG_NHANCHUC s.NGSINH )) 
R12 
NHANVIEN 
Thêm Xóa Sửa 
 (NG_NHANCHUC, TRPHG) PHONGBAN 
 (NGSINH, MANV) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 32 
RBTV - Thuộc tính tổng hợp 
 Thuộc tính tổng hợp 
- Là thuộc tính có giá trị được tính toán từ các thuộc tính 
khác 
 Khi CSDL có thuộc tính tổng hợp 
- RBTV bảo đảm quan hệ giữa thuộc tính tổng hợp và các 
thuộc tính nguồn 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 33 
Ví dụ 13 
 PHONGBAN(TENPHG, MAPHG, TRPHG, 
NG_NHANCHUC, SO_NV) 
 Số nhân viên của một phòng ban phải bằng tổng số 
lượng nhân viên thuộc phòng đó 
- Bối cảnh: NHANVIEN, PHONGBAN 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
t PHONGBAN ( 
 t.SO_NV card { s NHANVIEN | s.PHG t.MAPHG} 
) 
R13 
NHANVIEN 
Thêm Xóa Sửa 
 (PHG) 
PHONGBAN 
 (SO_NV, MAPHG) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 34 
RBTV – Chu trình 
 Lược đồ CSDL có thể được biểu diễn bằng đồ thị 
- Đỉnh 
 Quan hệ 
 Thuộc tính 
- Cạnh 
 Đường nối một đỉnh quan hệ với một đỉnh thuộc tính trong 
lược đồ CSDL 
 Chu trình 
- Đồ thị xuất hiện đường đi khép kín ~ Lược đồ CSDL có 
chu trình 
Tên quan hệ 
Tên thuộc tính 
Tên quan hệ Tên thuộc tính 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 35 
NHANVIEN DEAN 
PHG=PHONG 
Ví dụ 14 
 Nhân viên chỉ được phân công vào các đề án do 
phòng ban của mình phụ trách 
PHANCONG 
SODA=MADA MANV=MA_NVIEN 
MANV, MADA 
MA_NVIEN, SODA 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 36 
Ví dụ 14 (tt) 
 Nhân viên chỉ được phân công vào các đề án do 
phòng ban của mình phụ trách 
- Bối cảnh: NHANVIEN, DEAN, PHANCONG 
- Biểu diễn: 
- Bảng tầm ảnh hưởng: 
NVDA  NHANVIEN PHG=PHONG DEAN 
t PHANCONG ( s NVDA ( 
 t.MA_NVIEN s.MANV  t.MADA s.SODA )) 
R14 
NHANVIEN 
Thêm Xóa Sửa 
 (MANV,PHG) 
DEAN 
 (MADA,PHONG) 
PHANCONG (MA_NVIEN,SODA) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 37 
Nội dung chi tiết 
 Khái niệm 
 Các đặc trưng của RBTV 
 Phân loại 
 Cài đặt 
- Assertion 
- Trigger 
- Transaction (giao tác) 
- Stored Procedure (thủ tục lưu trữ nội) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 38 
Cài đặt 
 Các RBTV được cài đặt bởi 
- Primary key 
- Foreign key 
- Check contraint 
- Assertion 
- Trigger 
- Transaction 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 39 
Assertion 
 Là một biểu thức SQL luôn mang giá trị TRUE tại 
mọi thời điểm 
- Người sử dụng cần cho biết cái gì phải đúng 
 Cú pháp 
CREATE ASSERTION CHECK () 
DROP ASSERTION 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 40 
Ví dụ 12 
 Ngày sinh của trưởng phòng phải nhỏ hơn ngày 
nhận chức 
CREATE ASSERTION R12 CHECK ( 
 NOT EXISTS ( 
 SELECT * 
 FROM NHANVIEN, PHONGBAN 
 WHERE MANV=TRPHG 
 AND NGSINH > NGAY_NHANCHUC ) 
) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 41 
Ví dụ 15 
 Lương của trưởng phòng phải lớn hơn 50000 
CREATE ASSERTION R15 CHECK ( 
 NOT EXISTS ( 
 SELECT * 
 FROM NHANVIEN, PHONGBAN 
 WHERE MANV=TRPHG 
 AND LUONG < 50000 ) 
) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 42 
Ví dụ 15 (tt) 
ALTER TABLE PHONGBAN ( 
 TENPB VARCHAR(20) UNIQUE, 
 MAPHG INT NOT NULL, 
 TRPHG CHAR(9), 
 NG_NHANCHUC DATETIME, 
 CONSTRAINT CHK_PB_LUONGTRPHG CHECK ( 
 TRPHG NOT IN (SELECT MANV FROM NHANVIEN 
 WHERE LUONG < 50000 )) 
) 
 Lương của trưởng phòng phải lớn hơn 50000 
Check Constraint 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 43 
Ví dụ 16 
 Số lượng nhân viên của mỗi phòng ban không quá 
20 người 
CREATE ASSERTION R16 CHECK ( 
 20 >= ALL ( SELECT COUNT(MANV) 
 FROM NHANVIEN 
 GROUP BY PHG ) 
) 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 44 
Ví dụ 16 (tt) 
 Số lượng nhân viên của mỗi phòng ban không quá 
20 người 
ALTER TABLE NHANVIEN ADD 
CONSTRAINT CHK_NV_SLNVPB CHECK ( 
 20 >= ALL ( SELECT COUNT(MANV) FROM NHANVIEN 
 GROUP BY PHG )) 
Check Constraint 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 45 
Assertion hay Check Constraint ? 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 46 
Trigger 
 Là tập hợp các lệnh được thực hiện tự động khi 
xuất hiện một biến cố nào đó 
row-level 
statement-level 
trước 
sau 
giá trị mới 
giá trị cũ 
thêm 
xóa 
sửa 
Điều kiện Tập hợp các lệnh 
Thông báo lỗi 
Thỏa 
Không thỏa 
Biến 
cố 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 47 
Trigger (tt) 
 Cú pháp 
CREATE TRIGGER 
AFTER|BEFORE INSERT|UPDATE|DELETE ON 
REFERENCING 
 NEW ROW|TABLE AS 
 OLD ROW|TABLE AS 
FOR EACH ROW | FOR EACH STATEMENT 
WHEN () 
DROP TRIGGER 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 48 
Ví dụ 15 
 Lương của trưởng phòng phải lớn hơn 50000 
CREATE TRIGGER TR_PB_UPD 
AFTER UPDATE OF TRPHG ON PHONGBAN 
REFERENCING 
 NEW ROW AS NewTuple 
FOR EACH ROW 
WHEN (50000 >= (SELECT LUONG FROM NHANVIEN 
 WHERE MANV=NewTuple.TRPHG)) 
 Thông báo lỗi cho người dùng 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 49 
Ví dụ 15 (tt) 
 Lương của trưởng phòng phải lớn hơn 50000 
CREATE TRIGGER TR_PB_UPD 
AFTER UPDATE OF TRPHG ON PHONGBAN 
REFERENCING 
 NEW ROW AS NewTuple 
 OLD ROW AS OldTuple 
FOR EACH ROW 
WHEN (50000 >= (SELECT LUONG FROM NHANVIEN 
 WHERE MANV=NewTuple.TRPHG)) 
 UPDATE PHONGBAN 
 SET TRPHG=OldTuple.TRPHG 
 WHERE TRPHG=NewTuple.TRPHG 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 50 
Ví dụ 15 (tt) 
 Lương của trưởng phòng phải lớn hơn 50000 
CREATE TRIGGER TR_PB_UPD 
AFTER UPDATE OF LUONG ON NHANVIEN 
REFERENCING 
 NEW ROW AS NewTuple 
 OLD ROW AS OldTuple 
FOR EACH ROW 
WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN ( 
 SELECT TRPHG FROM PHONGBAN )) 
 UPDATE NHANVIEN 
 SET LUONG=OldTuple.LUONG 
 WHERE LUONG=NewTuple.LUONG 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 51 
Transaction 
 Là tập các lệnh thực hiện một xử lý nào đó trong 
một ứng dụng CSDL, sao cho 
- Hoặc là tất cả các lệnh đều được thực hiện thành công 
- Hoặc là không có lệnh nào được thực hiện 
 Ví dụ: xử lý chuyển tiền trong ngân hàng 
Giao tác Chuyển_tiền 
 Giảm tiền trong tài khoản người gửi 
 Tăng tiền trong tài khoản người nhận 
 Nếu tất cả đều thành công thì hoàn tất giao tác 
 Ngược lại quay lui giao tác 
Cuối giao tác 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 52 
Transaction (tt) 
 Giao tác phải đảm bảo 
- Tính nguyên tố (atomicity) 
- Tính nhất quán của CSDL (consistency) 
 Các RBTV không bị vi phạm 
 Trong khi thực hiện giao tác 
 Trước và sau khi thực hiện giao tác 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 53 
Ví dụ 7 
Giao tác Thêm_trận_đấu(t, s) 
 Thêm t vào THIDAU 
 Thêm s vào THIDAU 
 Nếu có một thao tác thất bại thì 
 Quay lui giao tác 
 Ngược lại 
 Hoàn tất giao tác 
 Cuối nếu 
Cuối giao tác 
 Mỗi trận đấu là cuộc thi đấu của đúng 2 đội 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 54 
Ví dụ 7 (tt) 
Giao tác Xóa_trận_đấu(ngay, gio) 
 Với mọi s THIDAU (s.NGAY ngay  s.GIO gio) 
 Xóa s khỏi THIDAU 
 Cuối với mọi 
 Nếu có một thao tác thất bại thì 
 Quay lui giao tác 
 Ngược lại 
 Hoàn tất giao tác 
 Cuối nếu 
Cuối giao tác 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 55 
Ví dụ 11 
Giao tác Thêm_hóa_đơn 
 Thêm HOADON 
 Thêm chi tiết thứ 1 vào CTHD 
 Thêm chi tiết thứ 2 vào CTHD 
 Nếu có một thao tác thêm thất bại thì 
 Quay lui giao tác 
 Ngược lại 
 Hoàn tất giao tác 
 Cuối nếu 
Cuối giao tác 
 Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 56 
Ví dụ 11 (tt) 
Giao tác Thêm_hóa_đơn 
 Thêm HOADON 
 Thêm chi tiết thứ 1 vào CTHD 
 Thêm chi tiết thứ 2 vào CTHD 
 Nếu có một thao tác thêm thất bại thì 
 Quay lui giao tác 
 Ngược lại 
 Hoàn tất giao tác 
 Cuối nếu 
Cuối giao tác 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 57 
Stored Procedure 
 Các DBMS thương mại cung cấp cách thức lưu trữ 
các hàm hay thủ tục 
- Được lưu trữ trong lược đồ CSDL 
- Được sử dụng trong các câu lệnh SQL 
 Cú pháp 
CREATE PROCEDURE 
AS 
 Khai báo biến cục bộ 
 Thân chương trình 
GO 
EXEC 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 58 
Ví dụ 7 
 Mỗi trận đấu là cuộc thi đấu của đúng 2 đội 
CREATE PROCEDURE Thêm_trận_đấu 
t THIDAU , s THIDAU 
AS 
 begin tran 
 Thêm t vào THIDAU 
 If @@error0 rollback tran 
 Thêm s vào THIDAU 
 If @@error0 rollback tran 
 commit tran 
GO 
EXEC Thêm_trận_đấu x, y 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 59 
Nhận xét 
 DBMS sẽ kiểm tra RBTV 
- Sau khi một thao tác cập nhật diễn ra trên CSDL 
- Cuối mỗi giao tác 
 Nên cài đặt RBTV ở đâu ??? 
- DBMS 
- Application 
- Trigger quá nhiều hệ thống chậm chạm 
- Stored Procedure hiệu quả cao 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 60 
Bài tập về nhà 
 Bài tập 
- 7.2 / 331-333 
- 7.3 / 335-336 
- 7.4 / 345-347 
 Đọc 
- Procedures stored in schema / 365-378 
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 61 

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_chuong_7_rang_buoc_toan_ven_nguyen_m.pdf