Bài giảng Công nghệ phần mềm - Chương 7: Ràng buộc toàn vẹn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 7: Ràng buộc toàn vẹn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_cong_nghe_phan_mem_chuong_7_rang_buoc_toan_ven.pdf
Nội dung text: Bài giảng Công nghệ phần mềm - Chương 7: Ràng buộc toàn vẹn
- Chương 7 Ràng buộc toàn vẹn
- 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 2
- 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 3
- 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 giáo viên không được vượt quá trưởng bộ môn (R1) - Người quản lý trực tiếp (của một giáo viên) phải là một giáo viên trong cùng bộ môn (R2) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 4
- 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 5
- 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 giáo viên không được vượt quá trưởng bộ môn • Các phép cập nhật Cập nhật lương cho giáo viên Thêm mới một giáo viên vào một bộ môn Bổ nhiệm trưởng bộ môn cho một bộ môn • Bối cảnh: GIAOVIEN, BOMON Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 6
- Bối cảnh (tt) Ví dụ (R2) - Người quản lý trực tiếp (của một giáo viên) phải là một giáo viên trong cùng bộ môn • 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 giáo viên Thêm mới một giáo viên • Bối cảnh: GIAOVIEN Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 7
- 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 8
- Nội dung (tt) Ví dụ (R1) - Ngôn ngữ tự nhiên • Mức lương của một người giáo viên không được vượt quá trưởng bộ môn của giáo viên đó. - Ngôn ngữ hình thức (t)(GIAOVIEN(t) (s)(BOMON(s) (u)(GIAOVIEN(u) s.TRUONGBM u.MAGV s.MABM t.MABM t.LUONG u.LUONG ))) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 9
- Nội dung (tt) Ví dụ (R2) - Ngôn ngữ tự nhiên • Người quản lý trực tiếp của một giáo viên phải là một giáo viên trong cùng bộ môn - Ngôn ngữ hình thức (t)(GIAOVIEN(t) (t.GVQLCM null (s)(GIAOVIEN(s) s.MABM = t.MABM s.MAGV = t.GVQLCM ))) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 10
- 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 11
- Bảng tầm ảnh hưởng một RBTV Tên_RB Thêm Xóa Sửa Quan hệ 1 (Thuộc tính) Quan hệ 2 Quan hệ n ( ) Vi phạm RBTV ( ) Không vi phạm RBTV Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 12
- Bảng tầm ảnh hưởng tổng hợp Ràng buộc 1 Ràng buộc 2 Ràng buộc m T X S T X S T X S Quan hệ 1 + - + + - + + - + Quan hệ 2 - + - Quan hệ 3 - - + - + - Quan hệ n - + - - - + Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 13
- 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 14
- RBTV - Miền giá trị Ràng buộc qui định các giá trị cho một thuộc tính R A B C D 1 1 5 7 9{ , {,1 }10 } 12 3 23 9 Miền giá trị - Liên tục - Rời rạc Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 15
- Ví dụ 3 Giới tính của giáo viên phải là ‘Nam’ hoặc ‘Nữ’ - Bối cảnh: GIÁOVIÊN - Biểu diễn: (t )(GIAOVIEN(t) (t.PHAI = 'Nam' t.PHAI = ‘Nữ‘)) hay DOM(PHAI) {‘Nam’, ‘Nữ’} - Bảng tầm ảnh hưởng: R3 Thêm Xóa Sửa GIÁOVIÊN (PHAI) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 16
- Ví dụ 4 Phụ cấp của mỗi công việc trong đề tài không được vượt quá 20 triệu. - Bối cảnh: THAMGIAĐT - Biểu diễn: (t )(THAMGIAĐT(t) t.PHỤCẤP 20) - Bảng tầm ảnh hưởng: R4 Thêm Xóa Sửa THAMGIAĐT (PHỤCẤP) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 17
- 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ệ R A B C D 1 1 5 7 12 3 23 9 Trường hợp đặc biệt - RB khóa chính - RB duy nhất (unique) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 18
- Ví dụ 5 Tên bộ môn là duy nhất. - Bối cảnh: BOMON - Biểu diễn: (t1, t2) (BOMON(t1) BOMON(t2) (t1 t2 t1.TENBM t2.TENBM)) hay (t1)(BOMON(t1) ¬(t2)(BOMON(t2) t1 t2 t1.TENBM = t2.TENBM) ) - Bảng tầm ảnh hưởng: R5 Thêm Xóa Sửa BOMON (TENBM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 19
- Ví dụ 6 Một giáo viên được tham gia tối đa 5 công việc trong tất cả đề tài - Bối cảnh: THAMGIAĐT - Biểu diễn: (t)(THAMGIADT(t) card({ s | THAMGIADT(s) s.MAGV = t.MAGV}) 5 ) - Bảng tầm ảnh hưởng: R6 Thêm Xóa Sửa THAMGIADT (MAGV) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 20
- 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ệ R A B C D 1 1 5 7 12 3 23 9 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 21
- Ví dụ 8 Một giáo viên không trực tiếp quản lý chuyên môn chính mình - Bối cảnh: GIAOVIEN - Biểu diễn: (t)( GIAOVIEN(t) (t.GVQLCM = null t.GVQLCM t.MAGV) } - Bảng tầm ảnh hưởng: R8 Thêm Xóa Sửa GIAOVIEN + (GVQLCM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 22
- Ví dụ 9 Ngày bắt đầu của đề tài luôn nhỏ hơn ngày kết thúc của đề tài. - Bối cảnh: ĐỀTÀI - Biểu diễn: (t)( ĐỀTÀI(t) t.NGÀYBĐ t.NGÀYKT) - Bảng tầm ảnh hưởng: R9 Thêm Xóa Sửa ĐỀTÀI + (NGÀYBĐ, NGÀYKT) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 23
- Ví dụ 10 Ngày bắt đầu của một công việc luôn nhỏ hơn ngày kết thúc của công việc đó. - Bối cảnh: CÔNGVIỆC - Biểu diễn: (t)( CÔNGVIỆC(t) t.NGÀYBĐ t.NGÀYKT) - Bảng tầm ảnh hưởng: R10 Thêm Xóa Sửa CÔNGVIỆC + (NGÀYBĐ, NGÀYKT) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 24
- 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 R A B C D S E F 1 1 7 1 5 7 3 2 12 3 23 9 Bắt buộc phải tồn tại trước Trường hợp đặc biệt - RB khóa ngoại Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 25
- Ví dụ 11 Mọi giáo viên phải thuộc về một bộ môn cụ thể. - Bối cảnh: BOMON, GIAOVIEN - Biểu diễn: (t)(GIAOVIEN(t) s(BOMON(s) s.MABM = t.MABM)) - Bảng tầm ảnh hưởng: R11 Thêm Xóa Sửa GIAOVIEN + - (MABM) BOMON - + +(MABM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 26
- Ví dụ 12 Trưởng bộ môn phải là một giáo viên trong khoa - Bối cảnh: BOMON, GIAOVIEN - Biểu diễn: (t)(BOMON(t) s(GIAOVIEN(s) s.MAGV = t.TRUONGBM)) - Bảng tầm ảnh hưởng: R12 Thêm Xóa Sửa GIAOVIEN - + (MAGV) BOMON + - +(TRUONGBM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 27
- 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 của một giáo viên phải là một giáo viên trong cùng bộ môn • Bối cảnh: GIAOVIEN • Biểu diễn: ( t)(GIAOVIEN(t) (t.GVQLCM null (s)(GIAOVIEN(s) s.MABM = t.MABM s.MAGV = t.GVQLCM ))) Bảng tầm ảnh hưởng R2 Thêm Xóa Sửa GIAOVIEN (GVQLCM, MABM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 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 R A B C D 1 1 5 7 12 3 23 9 S A B C 2 7 4 7 2 3 2 10 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 29
- Ví dụ 13 Mỗi đề tài phải có ít nhất một công việc thuộc về đề tài đó - Bối cảnh: DETAI, CONGVIEC - Biểu diễn: (t) (DETAI(t) (s)(CONGIVEC(s) t.MADT = s.MADT)) - Bảng tầm ảnh hưởng: R13 Thêm Xóa Sửa DETAI - +(MADT) CONGVIEC - (MADT) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 30
- Ví dụ 14 Mỗi bộ môn phải có ít nhất một giáo viên - Bối cảnh: GIAOVIEN, BOMON - Biểu diễn: (t) (BOMON(t) (s)(GIAOVIEN(s) t.MABM = s.MABM)) - Bảng tầm ảnh hưởng: R14 Thêm Xóa Sửa BOMON - +(MABM) GIAOVIEN - (MABM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 31
- 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 R A B C D S A B C 1 1 2 7 5 7 4 7 12 3 2 3 23 9 2 10 Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 32
- Ví dụ 15 Ngày sinh của trưởng bộ môn phải nhỏ hơn ngày nhận chức: - Bối cảnh: GIAOVIEN, BOMON - Biểu diễn: (t)(BOMON(t) s(GIAOVIEN(s) s.MAGV = t.TRUONGBM s.NGAYSINH < t.NGAYNHANCHUC)) - Bảng tầm ảnh hưởng: R15 Thêm Xóa Sửa GIAOVIEN - (NGAYSINH) BOMON (NGAYNHANCHUC, TRUONGBM) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 33
- Ví dụ 16 Phụ cấp của một công việc trong đề tài luôn luôn nhỏ hơn kinh phí của đề tài đó. - Bối cảnh: THAMGIADT, DETAI - Biểu diễn: (t)(THAMGIADT(t) s(DETAI(s) s.MADT = t.MADT t.PHUCAP < s.KINHPHI)) - Bảng tầm ảnh hưởng: R16 Thêm Xóa Sửa THAMGIADT + (PHUCAP) DETAI + (KINHPHI) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 34
- RBTV - Thuộc tính tổng hợp Thuộc tính tổng hợp (còn gọi là thuộc tính suy diễn) - 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 35
- Ví dụ 17 BOMON(MABM, TENBM, TRUONGBM, NGAYNHANCHUC, SO_GV) Số giáo viên của một bộ môn phải bằng tổng số lượng giáo viên thuộc bộ môn đó đó - Bối cảnh: GIAOVIEN, BOMON - Biểu diễn: (t)(BOMON(t) t.SO_GV = card({ s|GIAOVIEN(g) s.MABM = t.MABM})) - Bảng tầm ảnh hưởng: R17 Thêm Xóa Sửa GIAOVIEN (MABM) BOMON (SO_GV) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 36
- RBTV – Chu trình Lược đồ CSDL có thể được biểu diễn bằng đồ thị - Đỉnh Tên quan hệ • Quan hệ • Thuộc tính Tên 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 Tên quan hệ Tên thuộc tính Chu trình - Đồ thị xuất hiện đường đi khép kín ~ Lược đồ CSDL có chu trình Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 37
- Ví dụ 17 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 PHG=PHONG NHANVIEN MANV, MADA DEAN MANV=MA_NVIEN SODA=MADA MA_NVIEN, SODA PHANCONG Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 38
- Ví dụ 17 (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: NVDA NHANVIEN PHG=PHONG DEAN (t) (PHANCONG(t) (s)(NVDA(s) t.MA_NVIEN s.MANV t.MADA s.SODA )) - Bảng tầm ảnh hưởng: R17 Thêm Xóa Sửa NHANVIEN (MANV,PHG) DEAN + (MADA,PHONG) PHANCONG (MA_NVIEN,SODA) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 39
- Ví dụ 18 DDH (SODDH, NGAYDH, MAKH) CT_DDH (SODDH, MAMH, SOLUONG, DONGIA) GIAOHANG(MAGH, NGAYGH, TONGTIEN, SODDH) CT_GH (MAGH, MAMH) Chỉ được phép giao các mặt hàng mà khách hàng có đặt. MAGH=MAGH CT_DDH MAGH, MAMH GIAOHANG MAMH = MAMH SODDH=SODDH SODDH, MAMH CT_DDH Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 40
- 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 41
- 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 42
- 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 43
- Ví dụ 15 Ngày sinh của trưởng bộ môn phải nhỏ hơn ngày nhận chức CREATE ASSERTION R12 CHECK ( NOT EXISTS ( SELECT * FROM GIAOVIEN, BOMON WHERE MAGV=TRUONGBM AND NGAYSINH > NGAYNHANCHUC ) ) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 44
- Ví dụ 19 Lương của trưởng bộ môn phải lớn hơn 50000 CREATE ASSERTION R15 CHECK ( NOT EXISTS ( SELECT * FROM GIAOVIEN, BOMON WHERE MAGV=TRUONGBM AND LUONG < 50000 ) ) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 45
- Ví dụ 19 (tt) Lương của trưởng bộ môn phải lớn hơn 50000 ALTER TABLE BOMON ( Check Constraint TENBM NVARCHAR(50) UNIQUE, MABM CHAR(10) NOT NULL, TRUONGBM CHAR(10), NGAYNHANCHUC DATETIME, CONSTRAINT CHK_BM_LUONGTRUONGBM CHECK ( TRUONGBM NOT IN (SELECT MAGV FROM GIAOVIEN WHERE LUONG <= 50000 )) ) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 46
- Ví dụ 16 Số lượng giáo viên của mỗi bộ môn không quá 20 người CREATE ASSERTION R16 CHECK ( 20 >= ALL ( SELECT COUNT(MAGV) FROM GIAOVIEN GROUP BY MABM ) ) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 47
- Ví dụ 16 (tt) Số lượng giáo viên của mỗi bộ môn không quá 20 người Check Constraint ALTER TABLE GIAOVIEN ADD CONSTRAINT CHK_GV_SLGVBM CHECK ( 20 >= ALL ( SELECT COUNT(MAGV) FROM GIAOVIEN GROUP BY MABM )) Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 48
- Assertion hay Check Constraint ? Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 49
- 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 đó thêm xóa sửa Biến cố trước sau giá trị mới Thỏa giá trị cũ Điều kiện Tập hợp các lệnh row-level Không thỏa statement-level Thông báo lỗi Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 50
- 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 51
- Ví dụ 15 Lương của trưởng bộ môn phải lớn hơn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF TRUONGBM ON BOMON REFERENCING NEW ROW AS NewTuple FOR EACH ROW WHEN (50000 >= (SELECT LUONG FROM GIAOVIEN WHERE MAGV=NewTuple.TRUONGBM)) Thông báo lỗi cho người dùng Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 52
- Ví dụ 15 (tt) Lương của trưởng bộ môn phải lớn hơn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF TRUONGBM ON BOMON REFERENCING NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW WHEN (50000 >= (SELECT LUONG FROM GIAOVIEN WHERE MAGV=NewTuple.TRUONGBM)) UPDATE BOMON SET TRUONGBM=OldTuple.TRUONGBM WHERE TRUONGBM=NewTuple.TRUONGBM Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 53
- Ví dụ 15 (tt) Lương của trưởng bộ môn phải lớn hơn 50000 CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF LUONG ON GIAOVIEN REFERENCING NEW ROW AS NewTuple OLD ROW AS OldTuple FOR EACH ROW WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MAGV IN ( SELECT TRUONGBM FROM BOMON )) UPDATE GIAOVIEN SET LUONG=OldTuple.LUONG WHERE LUONG=NewTuple.LUONG Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 54
- 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 55
- 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 56
- 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 - ĐH KHTN TPHCM 57
- 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 58
- 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 - ĐH KHTN TPHCM 59
- 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 60
- 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 61
- 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 @@error 0 rollback tran commit tran GO EXEC Thêm_trận_đấu x, y Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 62
- 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 63
- Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM 64
- 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 65