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

•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

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)

– Giới tính của nhân viên chỉ thuộc 1 trong 2 giá trị «Nam»

hoặc «Nữ»  RBTV

pdf 18 trang kimcuc 6500
Bạn đang xem tài liệu "Bài giảng môn Cơ sở dữ liệu - Chương 6: 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 Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn

Bài giảng môn Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn
1CƠ SỞ DỮ LIỆU
Khoa Công nghệ thông tin – Đại học Sài Gòn
RÀNG BUỘC TOÀN VẸN
Chương 6
Khoa CNTT – Đại học Sài Gòn 3
Nội dung chi tiết
1. Khái niệm
2. Các đặc trưng của RBTV
3. Phân loại
4. Cài đặt
Khoa CNTT – Đại học Sài Gòn 4
1. 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
2Khoa CNTT – Đại học Sài Gòn 5
1. Khái niệm
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)
– Giới tính của nhân viên chỉ thuộc 1 trong 2 giá trị «Nam»
hoặc «Nữ» RBTV
Khoa CNTT – Đại học Sài Gòn 6
2. Các đặc trưng của RBTV
1. Bối cảnh
2. Nội dung
3. Bảng tầm ảnh hưởng
Khoa CNTT – Đại học Sài Gòn 7
a. 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
Khoa CNTT – Đại học Sài Gòn 8
a. Bối cảnh
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
3Khoa CNTT – Đại học Sài Gòn 9
a. Bối cảnh
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
Khoa CNTT – Đại học Sài Gòn 10
b. 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)
Khoa CNTT – Đại học Sài Gòn 11
Ví dụ (R1)
o 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
o 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 )))
b. Nội dung
Khoa CNTT – Đại học Sài Gòn 12
Ví dụ (R2)
o 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
o Ngôn ngữ hình thức
t NHANVIEN ( t.MA_NQL null 
s NHANVIEN (t.MA_NQL s.MANV ))
b. Nội dung
4Khoa CNTT – Đại học Sài Gòn 13
c. 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
Khoa CNTT – Đại học Sài Gòn 14
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
Khoa CNTT – Đại học Sài Gòn 15
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
+
-
-
-
+
-
+
-
+
+
-
-
+
+
-
+
-
-
-
+
-
+
-
+
Khoa CNTT – Đại học Sài Gòn 16
3. Phân loại
3.1. Một quan hệ
3.1.1. Miền giá trị
3.1.2. Liên bộ
3.1.3. Liên thuộc tính
3.2. Nhiều quan hệ
3.2.1. Tham chiếu
3.2.2. Liên bộ, liên quan hệ
3.2.3. Liên thuộc tính, liên quan hệ
3.3.4. Thuộc tính tổng hợp
3.3.5. Chu trình
5Khoa CNTT – Đại học Sài Gòn 17
3.1.1. RBTV - Miền giá trị
oRàng buộc qui định các giá trị cho một thuộc tính
oMiề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}
Khoa CNTT – Đại học Sài Gòn 18
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:
• 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)
PHANCONG
Khoa CNTT – Đại học Sài Gòn 19
Ví dụ 4 
Giới tính của nhân viên là ‘Nam’ hoặc ‘Nu’
o Bối cảnh:
o Biểu diễn:
o 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
NHANVIEN
Khoa CNTT – Đại học Sài Gòn 20
3.1.2. RBTV - Liên bộ
oSự 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ệ
oTrườ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



6Khoa CNTT – Đại học Sài Gòn 21
Ví dụ 5 
Tên phòng là duy nhất
o Bối cảnh:
o Biểu diễn:
o 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)
PHONGBAN
Khoa CNTT – Đại học Sài Gòn 22
Ví dụ 6 
Một nhân viên được tham gia tối đa 5 đề án
o Bối cảnh:
o Biểu diễn:
o Bảng tầm ảnh hưởng:
t PHANCONG ( 
∑({ s PHANCONG | s.MA_NVIEN t.MA_NVIEN}) 5 )
R6
PHANCONG
Thêm Xóa Sửa
 (MA_VIEN, SODA)
PHANCONG
Khoa CNTT – Đại học Sài Gòn 23
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:
• 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)
THIDAU
Khoa CNTT – Đại học Sài Gòn 24
3.1.3. 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



7Khoa CNTT – Đại học Sài Gòn 25
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:
• Biểu diễn:
• Bảng tầm ảnh hưởng:
t NHANVIEN ( t.MA_NQL t.MANV  t.MA_NQL null )
R8
NHANVIEN
Thêm Xóa Sửa
+ (MA_NQL)
Ở thời điểm thêm 1 bộ vào NHANVIEN, MA_NQL là null
NHANVIEN
Khoa CNTT – Đại học Sài Gòn 26
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:
• 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)
KHOAHOC
Khoa CNTT – Đại học Sài Gòn 27
3.2.1. RBTV - Tham chiếu
o 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
o 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
Khoa CNTT – Đại học Sài Gòn 28
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: 
• Biểu diễn:
• Bảng tầm ảnh hưởng:
t THANNHAN ( s NHANVIEN ( s.MANV t.MA_NVIEN ))
THANNHAN.MA_NVIEN  NHANVIEN.MANVhay
R10
NHANVIEN
Thêm Xóa Sửa
 (MANV)
THANNHAN
 (MA_NVIEN)
THANNHAN, NHANVIEN
8Khoa CNTT – Đại học Sài Gòn 29
3.2.1. RBTV - Tham chiếu
Còn gọi là phụ thuộc tồn tại
Thường có bối cảnh là hai quan hệ
o Nhưng có trường hợp suy biến thành một quan hệ
o 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:
• 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)
NHANVIEN
Khoa CNTT – Đại học Sài Gòn 30
3.2.2. 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
Khoa CNTT – Đại học Sài Gòn 31
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:
• 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)
HOADON, CTHD 
Ví dụ 11
Khoa CNTT – Đại học Sài Gòn 32
3.2.3. 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
9Khoa CNTT – Đại học Sài Gòn 33
Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức
• Bối cảnh:
• 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)
NHANVIEN, PHONGBAN
Ví dụ 12
Khoa CNTT – Đại học Sài Gòn 34
3.2.4. RBTV - Thuộc tính tổng hợp
oThuộ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
oKhi 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
Khoa CNTT – Đại học Sài Gòn 35
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: 
• Biểu diễn:
• Bảng tầm ảnh hưởng:
t PHONGBAN ( 
t.SO_NV  { s NHANVIEN | s.PHG t.MAPHG} )
R13
NHANVIEN
Thêm Xóa Sửa
 (PHG)
PHONGBAN
 (SO_NV, MAPHG)
NHANVIEN, PHONGBAN 
Ví dụ 13
Khoa CNTT – Đại học Sài Gòn 36
3.2.5. RBTV – Chu trình
Lược đồ CSDL có thể được biểu diễn bằng đồ thị
o Đỉnh
• Quan hệ
• Thuộc tính
o 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
o Đồ 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
10
Khoa CNTT – Đại học Sài Gòn 37
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
NHANVIEN DEAN
PHG=PHONG
PHANCONG
SODA=MADAMANV=MA_NVIEN
MANV, MADA
MA_NVIEN, SODA
Ví dụ 14
Khoa CNTT – Đại học Sài Gòn 38
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
• Bối cảnh:
• Biểu diễn:
• Bảng tầm ảnh hưởng:
NHANVIEN, DEAN, PHANCONG
R14
NHANVIEN
Thêm Xóa Sửa
 (MANV,PHG)
DEAN
 (MADA,PHONG)
PHANCONG (MA_NVIEN,SODA)
NVDA  NHANVIEN PHG=PHONG DEAN t PHANCONG ( s NVDA ( 
t.MA_NVIEN s.MANV  t.MADA s.SODA ))
Khoa CNTT – Đại học Sài Gòn 39
4. Cài đặt
1. Assertion
2. Trigger
3. Transaction (giao tác)
4. Stored Procedure (thủ tục lưu trữ nội)
Khoa CNTT – Đại học Sài Gòn 40
oCác RBTV được cài đặt bởi
• Primary key
• Foreign key
• Check contraint
• Assertion
• Trigger
• Transaction
4. Cài đặt
11
Khoa CNTT – Đại học Sài Gòn 41
Sửa bài
•PHONGBAN (MAPHG, TENPHG, TRPHG, NGNC)
Mỗi phòng ban: tên, mã phòng duy nhất. Trưởng phòng là nhân viên của công ty. Ngày 
nhận chức phải lớn hơn ngày sinh của nhân viên đó. 
•DIADIEM_PHG (MAPHG, DIADIEM)
Mỗi phòng ban có thể có nhiều địa điểm khác nhau.
•DEAN (MADA, TENDA, DDIEM_DA, PHONG, NGBD_DK, NGKT_DK)
Mỗi đề án: tên, mã duy nhất. Ngày bắt đầu phải nhỏ hơn ngày kết thúc dự kiến của đề án.
•NHANVIEN (MANV, HONV, TENLOT, TENNV, NGSINH, PHAI, DCHI, MA_NQL, 
PHONG, LUONG)
Phái phải là nam hoặc nữ. Lương của nhân viên phải nhỏ hơn lương của người quản lý
•PHANCONG (MANV, MADA, THOIGIAN)
Mỗi nhân viên chỉ có thể tham gia không quá 3 đề án và các đề án phải do phòng của 
mình chủ trì. Tổng thời gian tham gia đề án của mỗi NV không quá 40h
•THANNHAN (MANV, MATN, TENTN, PHAI, NGSINH, QUANHE)
Mỗi thân nhân phải có quan hệ với nhân viên trong công ty, và chỉ có thể là quan hệ Vo 
chong hoặc Con
Khoa CNTT – Đại học Sài Gòn 42
Sửa bài
•PHONGBAN (MAPHG, TENPHG, TRPHG, NGNC)
Mỗi phòng ban: tên, mã phòng duy nhất. Trưởng phòng là 
nhân viên của công ty. Ngày nhận chức phải lớn hơn ngày 
sinh của nhân viên đó. 
1. Tên phòng ban duy nhất:
2. Trưởng phòng là NV của công ty:
3. Ngày nhận chức phải lớn hơn ngày sinh:
t1, t2 PHONGBAN ( t1 t2  t1.TENPHG t2.TENPHG )
t PHONGBAN ( t1 t2  t1.TENPHG t2.TENPHG )
t PHONGBAN ( s NHANVIEN ( s.MANV t.TRPHG
 t.NGNC s.NGSINH ))
Khoa CNTT – Đại học Sài Gòn 43
Sửa bài
•DEAN (MADA, TENDA, DDIEM_DA, PHONG, 
NGBD_DK, NGKT_DK)
Mỗi đề án: tên, mã duy nhất. Ngày bắt đầu phải nhỏ hơn 
ngày kết thúc dự kiến của đề án.
4. Tên đề án duy nhất:
5. Ngày bắt đầu nhỏ hơn ngày kết thúc:
t1, t2 DEAN ( t1 t2  t1.TENDA t2.TENDA )
t DEAN ( t.NGBD_DK < t.NGKT_DK )
Khoa CNTT – Đại học Sài Gòn 44
Sửa bài
•NHANVIEN (MANV, HONV, TENLOT, TENNV, 
NGSINH, PHAI, DCHI, MA_NQL, PHONG, LUONG)
Phái phải là nam hoặc nữ. Lương của nhân viên phải nhỏ 
hơn lương của người quản lý
6. Phái phải là nam hoặc là nữ:
7. Lương NV nhỏ hơn lương của người quản lý:
t NHANVIEN ( s NHANVIEN ( t.MA_NQL = s.MANV t.LUONG < s.LUONG )) 
t NHANVIEN ( t.PHAI {‘Nam’, ‘Nu’} )
12
Khoa CNTT – Đại học Sài Gòn 45
Sửa bài
•PHANCONG (MANV, MADA, THOIGIAN)
Mỗi nhân viên chỉ có thể tham gia không quá 3 đề án và các đề án 
phải do phòng của mình chủ trì. Tổng thời gian tham gia đề án của 
mỗi NV không quá 40h
8. NV tham gia không quá 3 đề án:
9. NV tham gia đề án do phòng mình chủ trì:
10. Tổng thời gian tham gia đề án không quá 40h
t PHANCONG ( ∑({ s PHANCONG | s.MANV t.MANV}) 3 )
NVDA  NHANVIEN PHG=PHONG DEAN t PHANCONG ( s NVDA ( t.MANV s.MANV  t.MADA s.SODA ))
t PHANCONG (s PHANCONG ( s.MANV t.MANV  ∑ s.THOIGIAN <=40 )) 
Khoa CNTT – Đại học Sài Gòn 46
Sửa bài
•THANNHAN (MANV, MATN, TENTN, PHAI, 
NGSINH, QUANHE)
Mỗi thân nhân phải có quan hệ với nhân viên trong công 
ty, và chỉ có thể là quan hệ Vo chong hoặc Con
11. Thân nhân phải có quan hệ với NV:
12. Quan hệ chỉ có thể là Vo chong hoặc Con:
t THANNHAN (s NHANVIEN ( s.MANV t.MANV)) 
t THANNHAN ( t.QUANHE {‘Vochong’, ‘Con’} )
Khoa CNTT – Đại học Sài Gòn 47
Bài tập – Xác định PK, FK, RBTV
•KHOA (MAKHOA, TENKHOA, NAMTHANHLAP)
Tên khoa không trùng lắp nhau.
•SVIEN (MASV, TEN, NAM, MAKH)
Năm học là một trong các năm từ 1 đến 4.
•MHOC ( MAMH,TENMH, TINCHI, MAKH)
Tên môn học không trùng lắp nhau. Số tín chỉ từ 1 đến 5
•DKIEN (MAMH, MAMH_TRUOC)
Mỗi môn học có ít nhất một môn học bắt buộc phải học trước
•HPHAN (MAHP, MAMH, HOCKY, NAM, GV)
Mỗi học phần chỉ có thể mở tối đa 2 học kì trong cùng 1 năm học
•KQUA (MASV, MAHP, DIEM)
Sinh viên chỉ theo học các khóa học mở môn học thuộc về khoa mà sinh viên đang
theo học. Ứng với một khóa học mà sinh viên theo học, sinh viên có một điểm số
duy nhất (DIEM) từ 0 đến 10 điểm
Khoa CNTT – Đại học Sài Gòn 48
a. Assertion
oLà 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
oCú pháp
oRất khó cài đặt Assertion hiệu quả, do đó một số HQT
không có Assertion.
CREATE ASSERTION CHECK ()
DROP ASSERTION 
13
Khoa CNTT – Đại học Sài Gòn 49
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 )
)
Khoa CNTT – Đại học Sài Gòn 50
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 )
)
Ví dụ 15
Khoa CNTT – Đại học Sài Gòn 51
Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000
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 ))
)
Check Constraint
Khoa CNTT – Đại học Sài Gòn 52
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 )
)
14
Khoa CNTT – Đại học Sài Gòn 53
Ví dụ 16
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
ASSERTION HAY CHECK CONSTRAINT ?
54
Khoa CNTT – Đại học Sài Gòn 55
b. 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ố
Khoa CNTT – Đại học Sài Gòn 56
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. Trigger
15
Khoa CNTT – Đại học Sài Gòn 57
Trigger – FOR
CREATE TRIGGER TênTrigger ON Tên Bảng
FOR Hành động cập nhật
AS
Khai báo biến 
Nhận dữ liệu từ bảng trung gian 
Các kiểm tra .
GO
Khoa CNTT – Đại học Sài Gòn 58
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
Khoa CNTT – Đại học Sài Gòn 59
Ví dụ 15 – cách 1
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
Khoa CNTT – Đại học Sài Gòn 60
Ví dụ 15 – cách 2
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
16
Khoa CNTT – Đại học Sài Gòn 61
c. 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
Khoa CNTT – Đại học Sài Gòn 62
oGiao 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. Transaction
Khoa CNTT – Đại học Sài Gòn 63
Ví dụ 7
Mỗi trận đấu là cuộc thi đấu của đúng 2 đội
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
Khoa CNTT – Đại học Sài Gòn 64
Ví dụ 7
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
17
Khoa CNTT – Đại học Sài Gòn 65
Ví dụ 11
Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn
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
Khoa CNTT – Đại học Sài Gòn 66
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
Khoa CNTT – Đại học Sài Gòn 67
d. 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 
Khoa CNTT – Đại học Sài Gòn 68
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
18
Khoa CNTT – Đại học Sài Gòn 69
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
Thank you!

File đính kèm:

  • pdfbai_giang_mon_co_so_du_lieu_chuong_6_rang_buoc_toan_ven.pdf