CHƯƠNG Ràng buộc toàn vẹn (Integrety Constraints) Slide giảng mơn Cơ sở liệu © Bộ mơn Hệ Thống Thông Tin - Khoa Công Nghệ Thông Tin - Trường Đại học Khoa học Tự nhiên Nội dung chi tiết Khái niệm Các đặc trưng RBTV Phân loại Cà i đạ t © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Khái niệm RBTV (Integrety Constraints) phát từ ngữ nghĩa liệu thể liệu thực tế (1) RBTV nhằm đảm bảo (1): Tính liệu mơ hình liệu Ngữ nghĩa CSDL Khi RBTV khai báo, thể quan hệ phải thỏa RBTV thời điểm (1) RBTV phát khai báo thiết kế viên trình thiết kế liệu (1) RBTV định nghĩa quan hệ liên quan đến nhiều quan hệ (1) Trích từ sách: Fundamental of Databases 4th , Ramez Elmasri & Shamkant B Navathe, ISBN 0-321-12226-7, 2003 (1) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Nội dung chi tiết Khái niệm phân loại Các đặc trưng RBTV - Bối cảnh - Nội dung - Bảng tầm ảnh hưởng Phân loại Cài đặt © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 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 liệu (thêm, xóa, sửa liệu) Ví dụ (R1) - Mức lương người giáo viên khơng vượt q trưởng mơn • Các phép cập nhật – Cập nhật lương cho giáo viên – Thêm giáo viên vào môn – Bổ nhiệm trưởng môn cho môn • Bối cảnh: GIAOVIEN, BOMON © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Bối cảnh (tt) Ví dụ (R2) - Người quản lý trực tiếp (của giáo viên) phải giáo viên mơn • Các phép cập nhật – Cập nhật người quản lý trực tiếp giáo viên – Thêm giáo viên • Bối cảnh: GIAOVIEN © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Nội dung Nội dung RBTV phát biểu - Ngơn ngữ tự nhiên • Dễ hiểu thiếu tính chặt chẽ - Ngơn ngữ hình thức • Cơ đọng, chặt chẽ đơi lúc khó hiểu • Biểu diễn thơng qua – Đại số quan hệ – Phép tính quan hệ (biến bộ) – Mã giả (pseudo code) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Nội dung (tt) Ví dụ (R1) - Ngơn ngữ tự nhiên • Mức lương người giáo viên không vượt trưởng mơn giáo viên - Ngơn ngữ hình thức (t)(GIAOVIEN(t) (s)(BOMON(s) (u)(GIAOVIEN(u) s.TRUONGBM u.MAGV s.MABM t.MABM t.LUONG u.LUONG ))) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Nội dung (tt) Ví dụ (R2) - Ngơn ngữ tự nhiên • Người quản lý trực tiếp giáo viên phải giáo viên mơn - Ngơn ngữ hình thức (t)(GIAOVIEN(t) (t.GVQLCM null (s)(GIAOVIEN(s) s.MABM = t.MABM s.MAGV = t.GVQLCM ))) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Bảng tầm ảnh hưởng Bảng tầm ảnh hưởng - Xác định thao tác cập nhật cần phải kiểm tra RBTV thực quan hệ bối cảnh Có loại - Bảng tầm ảnh hưởng cho RBTV - Bảng tầm ảnh hưởng tổng hợp © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 10 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 Không thỏa Thỏa Tập hợp lệnh row-level statement-level Thơng báo lỗi © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 50 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 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 51 Ví dụ 15 Lương trưởng môn phải lớn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF TRUONGBM ON BOMON REFERENCING NEW ROW AS NewTuple FOR EACH ROW WHEN (50000 >= (SELECT LUONG FROM GIAOVIEN WHERE MAGV=NewTuple.TRUONGBM)) Thơng báo lỗi cho người dùng © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 52 Ví dụ 15 (tt) Lương trưởng môn phải lớn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF TRUONGBM ON BOMON REFERENCING NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW WHEN (50000 >= (SELECT LUONG FROM GIAOVIEN WHERE MAGV=NewTuple.TRUONGBM)) UPDATE BOMON SET TRUONGBM=OldTuple.TRUONGBM WHERE TRUONGBM=NewTuple.TRUONGBM © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 53 Ví dụ 15 (tt) Lương trưởng môn phải lớn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF LUONG ON GIAOVIEN REFERENCING NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW WHEN (NewTuple.LUONG