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

Chương 6: 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

pdf56 trang | Chia sẻ: phuongt97 | Lượt xem: 587 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Cơ sở dữ liệu (Database) - Chương 6: Ràng buộc toàn vẹn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ChChươươngng 66 RRààngng bubuộộcc totoàànn vvẹẹnn 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 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 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 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 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 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 - CĐ KTCN ĐN 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 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 6 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 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 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 8 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 9 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 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 - CĐ KTCN ĐN 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 ? (Kiểm tra khi cập nhật) (−) Không vi phạm RBTV Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 12 Bảng tầm ảnh hưởng tổng hợp Ràng buộc 1 Ràng buộc 2 R. buộc m TXSTXSTXS Quan hệ 1 + - + + - + + - + Quan hệ 2 - + - Quan hệ 3 - - + - + - Quan hệ n - + - - - + Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 13 Nội dung chi tiết ‰Khái niệm ‰Các đặc trưng của RBTV ‰Phân loại RBTV Một quan hệ Nhiều quan hệ y Miền giá trị y Tham chiếu y Liên bộ y Liên bộ, liên quan hệ y Liên thuộc tính y Liên thuộc tính, liên QH y Thuộc tính tổng hợp y Chu trình ‰Cài đặt Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 14 RBTV - Miền giá trị ‰RBTV qui định các giá trị cho một thuộc tính R ABC 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 - CĐ KTCN ĐN 15 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: ∀t ∈ PHANCONG ( t.THOIGIAN ≤ 60 ) ¾Bảng tầm ảnh hưởng: R3 Thêm Xóa Sửa PHANCONG + −+ (THOIGIAN) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 16 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: ∀t ∈ NHANVIEN ( t.PHAI ∈ {‘Nam’, ‘Nu’} ) ¾Bảng tầm ảnh hưởng: hay DOM(PHAI) = {‘Nam’, ‘Nu’} R4 Thêm Xóa Sửa NHANVIEN + −+(PHAI) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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 ABC 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 - CĐ KTCN ĐN 18 Ví dụ 5 ‰Tên phòng là duy nhất ¾Bối cảnh: PHONGBAN ¾Biểu diễn: ∀t1, t2 ∈ PHONGBAN ( t1≠ t2 ∧ t1.TENPHG ≠ T2.TENPHG ) ¾Bảng tầm ảnh hưởng: R5 Thêm Xóa Sửa PHONGBAN + −+(TENPHG) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 19 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: ∀t ∈ PHANCONG ( card({ s ∈ PHANCONG | s.MA_NVIEN = t.MA_NVIEN}) ≤ 5 ) ¾Bảng tầm ảnh hưởng: R6 Thêm Xóa Sửa PHANCONG + −+(MA_VIEN, SODA) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 20 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: ∀t ∈ THIDAU ( ∃!s ∈ THIDAU ( t ≠ s ∧ t.NGAY = s.NGAY ∧ t.GIO = s.GIO )) ¾Bảng tầm ảnh hưởng R7 Thêm Xóa Sửa THIDAU + ++(NGAY, GIO, DOI) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 21 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 ABC D α α 1 1 α β 5 7 β β 12 3 β β 23 9 Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 22 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: ∀t ∈ NHANVIEN ( t.MA_NQL ≠ t.MANV ∨ t.MA_NQL = null ) ¾Bảng tầm ảnh hưởng: R8 Thêm Xóa Sửa NHANVIEN − −+(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 23 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: ∀t ∈ KHOAHOC ( t.KTHUC − t.BDAU ≥ 3 ) ¾Bảng tầm ảnh hưởng: R9 Thêm Xóa Sửa KHOAHOC + −+(BDAU, KTHUC) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 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 ABC D S EF α α 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 - CĐ KTCN ĐN 25 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: ∀t ∈ THANNHAN ( ∃s ∈ NHANVIEN ( s.MANV = t.MA_NVIEN )) ¾Bảng tầm ảnh hưởng: THANNHAN.MA_NVIEN ⊆ NHANVIEN.MANV hay R10 Thêm Xóa Sửa NHANVIEN − + + (MANV) THANNHAN + −+(MA_NVIEN) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 26 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: ∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧ ∃s ∈ NHANVIEN (t.MA_NQL = s.MANV )) y Bảng tầm ảnh hưởng R2 Thêm Xóa Sửa NHANVIEN + + + (MANV, MA_NVIEN) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 27 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 ABC D α α 1 1 α β 5 7 β β 12 3 β β 23 9 S ABC α 2 7 α 4 7 β 2 3 γ 2 10 Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 28 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: ∀t ∈ HOADON ( ∃s ∈ CTHD ( t.SOHD = s.SOHD )) ¾Bảng tầm ảnh hưởng: R11 Thêm Xóa Sửa HOADON + + + (SOHD) CTHD + ++(SOHD) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 29 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 ABC D S ABC α α 1 1 α 2 7 α β 5 7 α 4 7 β β 12 3 β 2 3 β β 23 9 γ 2 10 Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 30 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: ∀t ∈ PHONGBAN ( ∃s ∈ NHANVIEN ( s.MANV = t.TRPHG ∧ t.NG_NHANCHUC > s.NGSINH )) ¾Bảng tầm ảnh hưởng: R12 Thêm Xóa Sửa NHANVIEN − − + (NGSINH, MANV) PHONGBAN + − + (NG_NHANCHUC, TRPHG) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 31 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 32 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: ∀t ∈ PHONGBAN ( t.SO_NV = card { s ∈ NHANVIEN | s.PHG = t.MAPHG} ) ¾ Bảng tầm ảnh hưởng: R13 Thêm Xóa Sửa NHANVIEN + + + (PHG) PHONGBAN − − + (SO_NV, MAPHG) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 33 RBTV – Chu trình ‰ Lược đồ CSDL có thể được biểu diễn bằng đồ thị ¾ Đỉnh y Quan hệ Tên quan hệ y Thuộc tính Tên 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 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 - CĐ KTCN ĐN 34 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 PHG=PHONG NHANVIEN MANV, MADA DEAN MANV=MA_NVIEN SODA=MADA MA_NVIEN, SODA PHANCONG Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 35 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: NVDA ← NHANVIEN PHG=PHONG DEAN ∀t ∈ PHANCONG ( ∃s ∈ NVDA ( t.MA_NVIEN = s.MANV ∧ t.MADA = s.SODA )) ¾ Bảng tầm ảnh hưởng: R14 Thêm Xóa Sửa NHANVIEN − − + (MANV,PHG) DEAN − −+(MADA,PHONG) PHANCONG + − + (MA_NVIEN,SODA) Cơ sở dữ liệu - Khoa CNTT - CĐ KTCN ĐN 36 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 37 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 38 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 39 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 40 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 41 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 42 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 - CĐ KTCN ĐN 43 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 44 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 45 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 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 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 47 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 48 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 49 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 50 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 51 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 52 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 53 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 54 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 55 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 - CĐ KTCN ĐN 56

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_co_so_du_lieu_database_chuong_6_rang_buoc_toan_ven.pdf