Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Lưu Huỳnh Châu Pha

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

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

 

pptx61 trang | Chuyên mục: Hệ Quản Trị Cơ Sở Dữ Liệu | Chia sẻ: yen2110 | Lượt xem: 429 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn - Lưu Huỳnh Châu Pha, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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: 
Biểu diễn: 
Bảng tầm ảnh hưởng: 
∀ t ∈ HOADON ( ∃ s ∈ CTHD ( t.SOHD = s.SOHD )) 
R 11 
HOADON 
Thêm 
Xóa 
Sửa 
+ 
+ 
+ (SOHD) 
CTHD 
+ 
+ 
+ (SOHD) 
HOADON, CTHD 
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: 
Biểu diễn: 
Bảng tầm ảnh hưởng: 
∀ t ∈ PHONGBAN ( ∃ s ∈ NHANVIEN ( 
	s.MANV = t.TRPHG ∧ 
	t.NG_NHANCHUC • s.NGSINH )) 
R 12 
NHANVIEN 
Thêm 
Xóa 
Sửa 
− 
+ 
+ (NG_NHANCHUC, TRPHG) 
PHONGBAN 
− 
− 
+ (NGSINH, MANV) 
NHANVIEN, PHONGBAN 
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: 
Biểu diễn: 
Bảng tầm ảnh hưởng: 
∀ t ∈ PHONGBAN ( 
	t.SO_NV = ∑ { s ∈ NHANVIEN | s.PHG = t.MAPHG} ) 
R 13 
NHANVIEN 
Thêm 
Xóa 
Sửa 
+ 
− 
+ (PHG) 
PHONGBAN 
+ 
− 
+ (SO_NV, MAPHG) 
NHANVIEN, PHONGBAN 
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 
NHANVIEN 
DEAN 
PHG=PHONG 
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: 
Biểu diễn: 
Bảng tầm ảnh hưởng: 
NHANVIEN, DEAN, PHANCONG 
R 14 
NHANVIEN 
Thêm 
Xóa 
Sửa 
− 
− 
+ (MANV,PHG) 
DEAN 
− 
− 
+ (MADA,PHONG) 
PHANCONG 
+ 
− 
+ (MA_NVIEN,SODA) 
NVDA ← NHANVIEN PHG=PHONG DEAN 
∀ t ∈ PHANCONG ( ∃ s ∈ NVDA ( 
	t.MA_NVIEN = s.MANV ∧ t.MADA = s.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-levelstatement-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_đấut THIDAU , s THIDAU AS 	 begin tran	 	Thêm t vào THIDAU	 If @@error 0 rollback tran 	Thêm s vào THIDAU	 If @@error 0 	 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:

  • pptxbai_giang_co_so_du_lieu_chuong_7_rang_buoc_toan_ven_luu_huyn.pptx