Khái niệm• RBTV R̀ng buộc tòn vẹn - Integrety Constraints • RBTV 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 k
Trang 1Bộ môn Hệ thống thông tin Khoa CNTT – Đại học Khoa học tự nhiên, TpHCM
Ch ơng 7
?
Trang 3KHÁI NIỆM
Trang 4Khái niệm
• RBTV (R̀ng buộc tòn vẹn - Integrety Constraints)
• RBTV 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
• L̀ những điều kiện bất biến đối với mọi quan hệ
4
Trang 5Khá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á mức lương của 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)
5
Trang 7Mô tả r̀ng buộc tòn vẹn
Trang 8C ÁC ĐẶC TR NG CỦA RBTV
• Bối cảnh
• Nội dung
• Bảng tầm ảnh hưởng
Trang 10Bố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
10
Trang 11C ÁC ĐẶC TR NG CỦA RBTV
• Bối cảnh
• Nội dung
• Bảng tầm ảnh hưởng
Trang 12Đại số quan hệ
– Phép tính quan hệ
–
Mã giả (pseudo code) –
12
Trang 15s NHANVIEN ( s.MANV = t.MA_NQL))
s NHANVIEN ( s.MANV = t.MA_NQL))
Trang 16s NHANVIEN ( s.MANV = t.MA_NQL))
Trang 17C ÁC ĐẶC TR NG CỦA RBTV
• Bối cảnh
• Nội dung
• Bảng tầm ảnh hưởng
Trang 20t NHANVIEN ( t.PHAI = 'Nam' t.PHAI = 'Nu'
t.PHAI = NULL )
t NHANVIEN ( t.PHAI != NULL t.PHAI= 'Nam' t.PHAI = 'Nu')
hoặc
Trang 21- + + (MAPHG)PHONGBAN
Trang 22Bả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
Trang 23Bả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.
Trang 24Bảng tầm ảnh hưởng tổng hợp
24
Quan hệ 1Quan hệ 2Quan hệ 3Quan hệ n
Trang 255 Liên bộ - liên quan hệ
8 Chu trình
Trang 26D 1 7 3 9
Trang 28Ví dụ 4
• Giới tính của nhân viên l̀ ‘Nam’ hoặc ‘Nu’
28
Trang 29Ví dụ 4b
• Giới tính của nhân viên nếỘ có thì phải l̀ ‘Nam’ hoặc ‘Nu’
29
?
Trang 30RBTV - 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ệ
D 1 7 3 9
Trang 32Ví dụ 6
• R6: Một nhân viên được tham gia tối đa 5 đề án
32
Trang 33Ví dụ 7
THIDAU(NGAY, GIO, DOI, SOBAN)
• Mỗi trận đấu l̀ cuộc thi đấu của đúng 2 đội
33
Trang 34D 1 7 3 9
Trang 36Ví dụ 9
KHOAHOC(MAKH, TENKH, BDAU, KTHUC)
• Mỗi khóa học kéo dài ít nhất 3 tháng
36
Trang 37RBTV - 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
D 1 7 3 9
S
3
1 2
Bắt buộc phải tồn tại trước
Trang 38 (MA_NVIEN)
Trang 39RBTV - 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ụ (10b): Người quản lý trực tiếp phải là một nhân viên trong công ty
39
Trang 40RBTV - 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
D 1 7 3 9
2 2
C 7 7 3 10
Trang 42RBTV - 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
D 1 7 3 9
2 2
C 7 7 3 10
Trang 43Ví dụ 12
• Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức:
43
Trang 46Ví 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 đó
46
Trang 48MANV, MADA
MA_NVIEN, SODA
Trang 49 (MADA,PHONG)PHANCONG (MA_NVIEN,SODA)
Trang 52Ví 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 tòn vẹn: Chỉ giao h̀ng các mặt h̀ng có đặt.
52
Trang 55trướ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ố
Trang 56NEW ROW|TABLE AS <Tên_1>
OLD ROW|TABLE AS <Tên_2>
FOR EACH ROW | FOR EACH STATEMENT WHEN ( <Điều kiện>)
<Tập_lệnh_SQL>
DROP TRIGGER <Tên_trigger>
Trang 57NEW ROW AS NewTupleFOR EACH ROW
WHEN (50000 >= (SELECT LUONG FROM NHANVIEN
WHERE MANV=NewTuple.TRPHG)) Thông báo lỗi cho người dùng
Trang 58NEW ROW AS NewTupleOLD ROW AS OldTupleFOR EACH ROW
WHEN (50000 >= (SELECT LUONG FROM NHANVIEN
WHERE MANV=NewTuple.TRPHG)) UPDATE PHONGBAN
SET TRPHG=OldTuple.TRPHGWHERE TRPHG=NewTuple.TRPHG
Trang 59NEW ROW AS NewTupleOLD ROW AS OldTupleFOR EACH ROW
WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN (
SELECT TRPHG FROM PHONGBAN )) UPDATE NHANVIEN
SET LUONG=OldTuple.LUONGWHERE LUONG=NewTuple.LUONG
Trang 60• 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
60
Giao tác Chuyển_tiền
Giảm tiền trong tài khoản người gửiTă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ácCuối giao tác
Trang 62Nế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
Trang 63Ví dụ 7 (tt)
63
Giao tác Xóa_trận_đấu(ngay, gio)
Với mọi sTHIDAU (s.NGAYngay s.GIOgio)
Xóa s khỏi THIDAU
Cuối với mọiNế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
Trang 64Nế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
Trang 65Stored 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
Trang 66Thêm t vào THIDAU
If @@error<>0 rollback tran
Thêm s vào THIDAU
If @@error<>0 rollback trancommit tran
GO
EXEC Thêm_trận_đấu x, y
Trang 67Nhậ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ạp
– Stored Procedure hiệu quả cao
67
Trang 68C ÂU HỎI ?
68