Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
1,14 MB
Nội dung
? Ch ơng RÀNG BU C TOÀN V N Bộ môn Hệ thống thông tin Khoa CNTT – Đại học Khoa học tự nhiên, TpHCM Nội dung • • • • Khái niệm Các đặc trưng RBTV Phân loại C̀i đặt KHÁI NIỆM Khái niệm • RBTV (R̀ng buộc tòn vẹn - Integrety Constraints) • RBTV xuất phát từ qui định hay điều kiện – Trong thực tế – Trong mơ hình liệu • Các thao tác l̀m thay đổi liệu không nên thực cách tùy tiện đưa CSDL đến tình trạng ‘xấu’ • RBTV l̀ điều kiện định nghĩa hay nhiều quan hệ khác • L̀ điều kiện bất biến quan hệ Khái niệm (tt) • Tại cần phải có RBTV? – Bảo đảm tính kết dính thành phần cấu tạo nên CSDL – Bảo đảm tính quán liệu – Bảo đảm CSDL biểu diễn ngữ nghĩa thực tế • Ví dụ – Mức lương người nhân viên khơng vượt q mức lương trưởng phịng (R1) – Người quản lý trực tiếp (của nhân viên) phải nhân viên công ty (R2) CÁ C Đ Ặ C T R N G C Ủ A RBTV • Bối cảnh • Nội dung • Bảng tầm ảnh hưởng Mô tả r̀ng buộc tòn vẹn • Bối cạnh : – …… – …… • Nội dung: – … • Bảng tầm ảnh hưởng: Thêm Xóa Cập nhật R1 + - - R2 - + + (attr1) CÁC ĐẶC TR NG CỦA RBTV • Bối cảnh • Nội dung • Bảng tầm ảnh hưởng Bối cảnh • Bối cảnh RBTV – L̀ quan hệ có khả bị vi phạm RBTV thực phép cập nhật • Ví dụ (R1) – Mức lương người nhân viên không vượt q 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 nhân viên v̀o phòng ban – Bổ nhiệm trưởng phịng cho phịng ban • Bối cảnh: NHANVIEN, PHONGBAN Bối cảnh (tt) • Ví dụ (R2) – Người quản lý trực tiếp phải nhân viên cơng ty • Các phép cập nhật – Cập nhật người quản lý trực tiếp nhân viên – Thêm nhân viên • Bối cảnh: NHANVIEN 10 C̀i đặt • Các RBTV c̀i đặt – Primary key – Foreign key – Check contraint – Trigger – Transaction 54 Trigger • Là tập hợp lệnh thực tự động xuất biến cố thêm xóa sửa trước sau giá trị giá trị cũ Biến cố Điều kiện Thỏa Không thỏa Tập hợp lệnh row-level statement-level Thông báo lỗi 55 Trigger (tt) • Cú pháp CREATE TRIGGER AFTER|BEFORE INSERT|UPDATE|DELETE REFERENCING NEW ROW|TABLE AS OLD ROW|TABLE AS FOR EACH ROW | FOR EACH STATEMENT WHEN () ON DROP TRIGGER 56 Ví dụ 15 • Lương trưởng phòng phải lớ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 57 Ví dụ 15 (tt) • Lương trưởng phòng phải lớ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 FROM NHANVIEN WHEN (50000 >= (SELECT LUONG WHERE MANV=NewTuple.TRPHG)) UPDATE PHONGBAN SET TRPHG=OldTuple.TRPHG WHERE TRPHG=NewTuple.TRPHG 58 Ví dụ 15 (tt) • Lương trưởng phòng phải lớ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