Bài giảng môn học Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn

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

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

pdf 72 trang kimcuc 3240
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn học Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn", để 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 môn học Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn

Bài giảng môn học Cơ sở dữ liệu - Chương 7: Ràng buộc toàn vẹn
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:

  • pdfbai_giang_mon_hoc_co_so_du_lieu_chuong_7_rang_buoc_toan_ven.pdf