Bài giảng Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn (Mới)
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
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 (Mới)", để 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 (Mới)
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 MANV HOTEN PHG LUONG 1 Tùng 1 45000 2 Tiến 3 50000 3 Trang 4 15000 4 Trung 3 60000 5 Thủy 1 20000 6 Tuấn 4 35000 7 Trường 4 45000 MAPHG TENPHG TRPHG 1 Điều Hành 1 3 Nghiên cứu 2 4 Kinh Doanh 7 NHANVIEN PHONGBAN Vi phạm ràng buộc toàn vẹn ? Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12 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 (s.MANV = t.MA_NQL)) t NHANVIEN ( t.MA_NQL != null s NHANVIEN (s.MANV = t.MA_NQL)) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 13 MANV HOTEN PHG LUONG MA_NQL 1 Tùng 1 45000 null 2 Tiến 3 50000 1 3 Trang 4 15000 null 4 Trung 3 60000 3 5 Thủy 1 20000 4 6 Tuấn 4 35000 null 7 Trường 4 45000 6 NHANVIEN 8 Thanh 4 45000 9 vi phạm RBTV Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 14 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 15 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 Bảng tầm ảnh hưởng Phái của nhân viên phải là Nam hoặc Nữ - Bối cảnh: NHANVIEN - Nội dung: - Bảng tầm ảnh hưởng: Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16 Thêm Xóa Sửa + - +(PHAI)NHANVIEN t NHANVIEN ( t.PHAI = 'Nam' t.PHAI = 'Nu' t.PHAI = NULL ) t NHANVIEN ( t.PHAI != NULL t.PHAI= 'Nam' t.PHAI = 'Nu') hoặc Bảng tầm ảnh hưởng Phòng của nhân viên phải là một trong những phòng của phòng ban - Bối cảnh: - Bảng tầm ảnh hưởng: Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 17 Thêm Xóa Sửa + - +(PHG)NHANVIEN - + + (MAPHG)PHONGBAN Bảng tầm ảnh hưởng Người quản lý trực tiếp của nhân viên nếu có thì phải là một nhân viên trong công ty - Bối cảnh: - Bảng tầm ảnh hưởng: Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18 Thêm Xóa Sửa + + + (MA_NQL, MANV)NHANVIEN Bảng tầm ảnh hưởng Cho lược đồ: NHANVIEN (MANV, HOTEN, PHAI, TUOIVEHUU) RBTV: Tuổi về hưu của nhân viên Nam là 60, của nhân viên nữ là 55. - Bối cảnh: - Bảng tầm ảnh hưởng: Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 19 Thêm Xóa Sửa + - + (PHAI, TUOIVEHUU) NHANVIEN Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20 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 21 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 22 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 23 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 24 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 Ví dụ 4b Giới tính của nhân viên nếu có thì phải là ‘Nam’ hoặc ‘Nu’ Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 25 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26 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 27 Ví dụ 5 R5: Tên phòng là duy nhất - Bối cảnh: PHONGBAN - Biểu diễn: hoặc - 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) t PHONGBAN ( ¬u PHONGBAN ( u != t u.TENPHG=t.TENPHG) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 28 Ví dụ 6 R6: 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 ( card({ s PHANCONG | s.MA_NVIEN t.MA_NVIEN}) 5 ) R6 PHANCONG Thêm Xóa Sửa (MA_VIEN) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 29 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 30 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 31 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 null t.MA_NQL t.MANV ) R8 NHANVIEN Thêm Xóa Sửa + (MA_NQL) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 32 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 33 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 34 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 35 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_NQL) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 36 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 37 Ví dụ 11 Cho lược đồ CSDL: - 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 38 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 39 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 40 MANV HOTEN PHG LUONG NGSINH 1 Tùng 1 45000 1/12/1965 2 Tiến 3 50000 null 3 Trang 4 15000 null 4 Trung 3 60000 1/12/1965 5 Thủy 1 20000 4/10/1972 6 Tuấn 4 35000 null 7 Trường 4 45000 1/12/1981 MAPHG TENPHG TRPHG NGAY_NHAN_CHUC 1 Điều Hành 1 31/1/1990 3 Nghiên cứu 2 15/04/1996 4 Kinh Doanh 7 18/10/1978 NHANVIEN PHONGBAN Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 41 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 42 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 43 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 44 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=MADAMANV=MA_NVIEN MANV, MADA MA_NVIEN, SODA Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 45 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 46 MANV HOTEN PHG 1 Tùng 1 2 Tiến 3 3 Trang 4 4 Trung 3 MADA TENDA PHONG 10 Sản phẩm X 1 30 Sản phẩm Y 3 70 Sản phẩm Z 4 90 Sản phẩm T 3 NHANVIEN DEAN MANV MADA 1 10 3 30 1 70 3 70 2 90 PHANCONG Ví dụ 15 Người quản lý của nhân viên và nhân viên phải cùng phòng Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 47 MANV HOTEN PHG LUONG MA_NQL 1 Tùng 1 45000 null 2 Tiến 3 50000 1 3 Trang 4 15000 null 4 Trung 4 60000 3 5 Thủy 1 20000 1 6 Tuấn 4 35000 null 7 Trường 4 45000 6 NHANVIEN Vi phạm Ví dụ 16 DDH (MADH, NGAYDH, MAHD) CT_DDH (MADH, MAMH, SOLUONG) HOADON (MAHD, NGAYGH, TONGTIEN, MADH) CT_HOADON (MACT, MAHD, MAMH, SOLUONG, DONGIA) Ràng buộc toàn vẹn: Chỉ giao hàng các mặt hàng có đặt. Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 48 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 49 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 50 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 51 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 52 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 53 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 54 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 55 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 56 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 57 Assertion hay Check Constraint ? Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 58 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 59 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 60 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 61 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 62 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 63 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 64 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 65 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 66 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 67 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 68 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 69 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 70 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 71 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 72 2. Trưởng phòng phải sinh sau năm 1975 3. Một phòng phải có tối thiểu 1 nhân viên nữ 4. Trưởng phòng phải là người lớn tuổi nhất trong phòng ban đó. 5. Nếu một nhân viên đã là trưởng phòng thì nhân viên đó không làm người quản lý. 6. Nhân viên và nhân viên quản lý của nhân viên đó phải thuộc về 1 phòng. Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 73
File đính kèm:
- bai_giang_co_so_du_lieu_chuong_7_rang_buoc_toan_ven_moi.pdf