Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 3Khá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 th
Trang 1Chương 7 Ràng buộc toàn vẹn
Trang 2Nội dung chi tiết
Khái niệm
Các đặc trưng của RBTV
Phân loại
Cài đăăt
Trang 3Cơ 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
Trang 4Khá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)
Trang 5Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 5
Nội dung chi tiết
Trang 6∗ 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
Trang 7Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 7
∗ 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
Trang 8• 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)
Trang 9Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 9
Trang 10MANV HOTEN PHG LUONG
Trang 11Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12
∀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))
Trang 12MANV HOTEN PHG LUONG MA_NQL
Trang 13Cơ 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 tổng hợp
Trang 14Bảng tầm ảnh hưởng một RBTV
Tên_RB
Quan hệ n
Quan hệ 1 Quan hệ 2
Trang 15Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16
Thêm Xóa Sửa
Trang 17Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18
Thêm Xóa Sửa
+ + + (MA_NQL, MANV) NHANVIEN
Trang 18Bả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 19Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20
+ -
-+ - +
+ -
-+ - +
Trang 20Nội dung chi tiết
• 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
Trang 21Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 22
C 1 5 12
D 1 7 3 9
α β β β
β ∈ { 9 α ∈, {1 10}β, γ }
Trang 23Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 24
hay
Trang 24Ví dụ 4b
Giới tính của nhân viên nếu có thì phải là ‘Nam’ hoặc ‘Nu’
Trang 25Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26
C 1 5 12
D 1 7 3 9
α β β β
Trang 27Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 28
Trang 28Ví dụ 7
THIDAU(NGAY, GIO, DOI, SOBAN)
Mỗi trận đấu là cuộc thi đấu của đúng 2 đội
Thêm Xóa Sửa
+ + + (NGAY, GIO, DOI)
Trang 29Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 30
C 1 5 12
D 1 7 3 9
α β β β
Trang 31Cơ 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
Trang 32C 1 5 12
D 1 7 3 9
α β β β
E F 7
S
3
1 2
Bắt buộc phải tồn tại trước
Trang 33Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 34
R 10
NHANVIEN
Thêm Xóa Sửa
− +
+ (MANV) THANNHAN
+
Trang 34RBTV - 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ệ
∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧
∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))
R 2
NHANVIEN
Thêm Xóa Sửa
+ + + (MANV, MA_NQL)
Trang 35Cơ 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
D 1 7 3 9
α β β β
β γ
2 2
C 7 7 3 10
Trang 36Ví dụ 11
Cho lược đồ CSDL:
Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn
Trang 37Cơ 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
D 1 7 3 9
α β β β
β γ
2 2
C 7 7 3 10
Trang 38Ví dụ 12
Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức:
Trang 39Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 40
MANV HOTEN PHG LUONG NGSINH
Trang 41Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 42
+
− + (SO_NV, MAPHG)
Trang 43Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 44
MANV, MADA
MA_NVIEN, SODA
Trang 44− + (MADA,PHONG)
Trang 45Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 46
Trang 46Ví dụ 15
Người quản lý của nhân viên và nhân viên phải cùng phòng
MANV HOTEN PHG LUONG MA_NQL
Trang 47Ví 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
Trang 48Nội dung chi tiết
Trang 49Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 50
Trang 50 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 <Tên_assertion> CHECK (<Điều_kiện>)
DROP ASSERTION <Tên_assertion>
Trang 51Cơ 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
Trang 52Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000
Trang 53Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 54
Ví dụ 15 (tt)
TENPB VARCHAR (20) UNIQUE , MAPHG INT NOT NULL ,
TRPHG CHAR (9), NG_NHANCHUC DATETIME,
TRPHG NOT IN ( SELECT MANV FROM NHANVIEN
)
Lương của trưởng phòng phải lớn hơn 50000
Check Constraint
Trang 54Ví dụ 16
Số lượng nhân viên của mỗi phòng ban không quá 20 người
20 >= ALL ( SELECT COUNT (MANV)
FROM NHANVIEN
)
Trang 55Cơ 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
20 >= ALL ( SELECT COUNT (MANV) FROM NHANVIEN
Check Constraint
Trang 56Assertion hay Check Constraint ?
Trang 57Cơ 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
Trang 58Trigger (tt)
Cú pháp
CREATE TRIGGER <Tên_trigger>
AFTER|BEFORE INSERT|UPDATE|DELETE ON <Tên_bảng> REFERENCING
NEW 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 59Cơ 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
REFERENCING
FOR EACH ROW
WHEN (50000 >= ( SELECT LUONG FROM NHANVIEN
Thông báo lỗi cho người dùng
Trang 60Ví dụ 15 (tt)
Lương của trưởng phòng phải lớn hơn 50000
REFERENCING
FOR EACH ROW
WHEN (50000 >= ( SELECT LUONG FROM NHANVIEN
SET TRPHG=OldTuple.TRPHG
Trang 61Cơ 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
REFERENCING
FOR EACH ROW
WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN (
SET LUONG=OldTuple.LUONG
Trang 62 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
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
Trang 63Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 64
∗ Trong khi thực hiện giao tác
∗ Trước và sau khi thực hiện giao tác
Trang 64Ví dụ 7
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
Trang 65Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 66
Ví dụ 7 (tt)
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
Trang 66Ví dụ 11
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
Trang 67Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 68
Ví dụ 11 (tt)
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
Trang 68Stored 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 69Cơ 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
t THIDAU , s THIDAU
AS
begin tran
Thêm t vào THIDAU
Thêm s vào THIDAU
commit tran GO
EXEC Thêm_trận_đấu x, y
Trang 70Nhậ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 ???
- Application
- Trigger quá nhiều → hệ thống chậm chạm
- Stored Procedure → hiệu quả cao
Trang 71Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 72
Trang 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