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

Tóm tắt Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn: ...ng là duy nhất ¾Bối cảnh: PHONGBAN ¾Biểu diễn: ¾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) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 20 Ví dụ 6 ‰Một nhân viên được tham gia tối đa 5 đề án ¾Bối cảnh: PHANCONG ¾Biểu di... + (SOHD) CTHD + + + (SOHD) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 30 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ơ...ươ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 )) ) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ...

pdf56 trang | Chia sẻ: havih72 | Lượt xem: 100 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 6
Ràng buộc toàn vẹn
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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 - CĐ KTCN ĐN 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
y 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 QH đều phải thỏa ở bất kỳ thời điểm nào
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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 - CĐ KTCN ĐN 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 - CĐ KTCN ĐN 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
y 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 NV vào một phòng ban
∗ Bổ nhiệm trưởng phòng cho một phòng ban
y Bối cảnh: NHANVIEN, PHONGBAN
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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
y 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
y Bối cảnh: NHANVIEN
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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
y Dễ hiểu nhưng thiếu tính chặt chẽ
¾Ngôn ngữ hình thức
y Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu
y 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 - CĐ KTCN ĐN 9
Nội dung (tt)
‰Ví dụ (R1)
¾Ngôn ngữ tự nhiên
y 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 - CĐ KTCN ĐN 10
Nội dung (tt)
‰Ví dụ (R2)
¾Ngôn ngữ tự nhiên
y 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
y
∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧
∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 11
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 - CĐ KTCN ĐN 12
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 ? (Kiểm tra khi cập nhật)
(−) Không vi phạm RBTV
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 13
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. buộc m
+
-
-
-
+
-
+
-
+
+
-
-
+
+
-
+
-
-
-
+
-
+
-
+
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 14
Nội dung chi tiết
‰Khái niệm
‰Các đặc trưng của RBTV
‰Phân loại RBTV
‰Cài đặt
Một quan hệ Nhiều quan hệ
y Miền giá trị
y Liên bộ
y Liên thuộc tính
y Tham chiếu
y Liên bộ, liên quan hệ
y Liên thuộc tính, liên QH
y Thuộc tính tổng hợp
y Chu trình
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 15
RBTV - Miền giá trị
‰RBTV 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 - CĐ KTCN ĐN 16
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 )
SửaR3 Thêm Xóa
+ − +
(THOIGIAN)
PHANCONG
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 17
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’} )
hay
DOM(PHAI) = {‘Nam’, ‘Nu’}
SửaR4 Thêm Xóa
+ − + (PHAI)NHANVIEN
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 18
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 - CĐ KTCN ĐN 19
Ví dụ 5 
‰Tên phòng là duy nhất
¾Bối cảnh: PHONGBAN
¾Biểu diễn:
¾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)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 20
Ví dụ 6 
‰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, SODA)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 21
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 - CĐ KTCN ĐN 22
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 - CĐ KTCN ĐN 23
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 ≠ 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
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 24
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 - CĐ KTCN ĐN 25
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 - CĐ KTCN ĐN 26
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 - CĐ KTCN ĐN 27
RBTV - Tham chiếu (tt)
‰ 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ệ
¾ Nhưng có trường hợp suy biến thành một QH
¾ Ví dụ (R2)
y Người Q.lý trực tiếp phải là một NV trong cty
y Bối cảnh: NHANVIEN
y Biểu diễn:
y 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_NVIEN)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 28
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
1
7
3
9
α
β
β
β
D
A B
α
S
α
2
4
β
γ
2
2
C
7
7
3
10
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 29
Ví dụ 11 
‰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 - CĐ KTCN ĐN 30
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 - CĐ KTCN ĐN 31
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 - CĐ KTCN ĐN 32
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 - CĐ KTCN ĐN 33
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 - CĐ KTCN ĐN 34
RBTV – Chu trình
‰ Lược đồ CSDL có thể được biểu diễn bằng đồ thị
¾ Đỉnh
y Quan hệ
y Thuộc tính
¾ Cạnh
y Đườ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 - CĐ KTCN ĐN 35
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
NHANVIEN DEAN
PHG=PHONG
PHANCONG
SODA=MADAMANV=MA_NVIEN
MANV, MADA
MA_NVIEN, SODA
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 36
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 - CĐ KTCN ĐN 37
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
¾Check
¾Trigger
¾Transaction (giao tác)
¾Stored Procedure (thủ tục lưu trữ nội)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 38
Cài đặt
‰Các RBTV được cài đặt bởi
¾Primary key
¾Foreign key
¾Check contraint
¾UNIQUE
¾Trigger
¾Transaction
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 39
Ví dụ (tt) Check Constraint
‰Số lượng bán hàng > 0
ALTER TABLE CHITIETDATHANG ADD
Constraint CHK_SLBAN CHECK (SOLUONG > 0),
Constraint CHK_MUCGIAMGIA 
CHECK(MUCGIAMGIA BETWEEN 0 and 10)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 40
Ví dụ (tt) Check Constraint
‰Ngày giao hàng >= ngày dặt hàng
ALTER TABLE DONDATHANG ADD
CONSTRAINT CHK_NGAYGIAO_NGAYDAT CHECK (
NGAYGIAOHANG >= NGAYDATHANG)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 41
Ví dụ 15 (tt) Check Constraint
‰ 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 ))
)
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 42
Ví dụ 16 (tt) Check Constraint
‰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 ))
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 43
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 - CĐ KTCN ĐN 44
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 - CĐ KTCN ĐN 45
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 - CĐ KTCN ĐN 46
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 - CĐ KTCN ĐN 47
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 - CĐ KTCN ĐN 48
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 - CĐ KTCN ĐN 49
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)
y 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 - CĐ KTCN ĐN 50
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
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 51
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 - CĐ KTCN ĐN 52
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
Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 53
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 - CĐ KTCN ĐN 54
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 - CĐ KTCN ĐN 55
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 - CĐ KTCN ĐN 56
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

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_chuong_6_rang_buoc_toan_ven.pdf