intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Cơ sở dữ liệu: Chương 6 - Lê Nhị Lãm Thúy

Chia sẻ: Tầm Y | Ngày: | Loại File: PDF | Số trang:18

39
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn" cung cấp cho người học các kiến thức: Khái niệm, các đặc trưng của ràng buộc toàn vẹn, phân loại, cài đặt. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cơ sở dữ liệu: Chương 6 - Lê Nhị Lãm Thúy

  1. Chương 6 RÀNG BUỘC TOÀN VẸN CƠ SỞ DỮ LIỆU Khoa Công nghệ thông tin – Đại học Sài Gòn Nội dung chi tiết 1. Khái niệm •RBTV (Integrety Constraints) xuất phát từ những qui định 1. Khái niệm hay điều kiện – Trong thực tế 2. Các đặc trưng của RBTV – 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 3. Phân loại một cách tùy tiện vì có thể đưa CSDL đến một tình trạng ‘xấu’ 4. Cài đặt •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 Khoa CNTT – Đại học Sài Gòn 3 Khoa CNTT – Đại học Sài Gòn 4 1
  2. 1. Khái niệm 2. Các đặc trưng của RBTV Tại sao cần phải có RBTV? 1. Bối cảnh  Bảo đảm tính kết dính của các thành phần cấu tạo nên CSDL 2. Nội dung  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ế 3. Bảng tầm ảnh hưởng 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 5 Khoa CNTT – Đại học Sài Gòn 6 a. Bối cảnh a. Bối cảnh Ví dụ (R1) Bối cảnh của một RBTV Mức lương của một người nhân viên không được Là những quan hệ có khả năng bị vượt quá trưởng phòng • Các phép cập nhật vi phạm RBTV khi thực hiện các – Cập nhật lương cho nhân viên phép cập nhật – 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 Khoa CNTT – Đại học Sài Gòn 7 Khoa CNTT – Đại học Sài Gòn 8 2
  3. a. Bối cảnh b. Nội dung Ví dụ (R2) Nội dung của một RBTV được phát biểu bằng 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 • Dễ hiểu nhưng thiếu tính chặt chẽ công ty Ngôn ngữ hình thức • Các phép cập nhật • Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu – Cập nhật người quản lý trực tiếp của một nhân • Biểu diễn thông qua – Đại số quan hệ viên – Phép tính quan hệ – Thêm mới một nhân viên – Mã giả (pseudo code) • Bối cảnh: NHANVIEN Khoa CNTT – Đại học Sài Gòn 9 Khoa CNTT – Đại học Sài Gòn 10 b. Nội dung b. Nội dung Ví dụ (R1) Ví dụ (R2) o Ngôn ngữ tự nhiên 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á • Người quản lý trực tiếp phải là một nhân viên trong công ty trưởng phòng o Ngôn ngữ hình thức o Ngôn ngữ hình thức t  NHANVIEN ( t.MA_NQL  null  t  NHANVIEN ( s  NHANVIEN (t.MA_NQL  s.MANV )) u  PHONGBAN ( v  NHANVIEN ( u.TRPHG  v.MANV  u.MAPHG  t.PHG  t.LUONG  v.LUONG ))) Khoa CNTT – Đại học Sài Gòn 11 Khoa CNTT – Đại học Sài Gòn 12 3
  4. c. Bảng tầm ảnh hưởng Bảng tầm ảnh hưởng một RBTV Bảng tầm ảnh hưởng Tên_RB Thêm Xóa Sửa – Xác định thao tác cập nhật nào cần phải kiểm tra Quan hệ 1    (Thuộc tính) RBTV khi được thực hiện trên quan hệ bối cảnh Quan hệ 2    … Có 2 loại Quan hệ n    – Bảng tầm ảnh hưởng cho một RBTV () Vi phạm RBTV – Bảng tầm ảnh hưởng tổng hợp () Không vi phạm RBTV Khoa CNTT – Đại học Sài Gòn 13 Khoa CNTT – Đại học Sài Gòn 14 Bảng tầm ảnh hưởng tổng hợp 3. Phân loại 3.1. Một quan hệ Ràng buộc 1 Ràng buộc 2 Ràng buộc m 3.1.1. Miền giá trị T X S T X S … … … T X S 3.1.2. Liên bộ Quan hệ 1 + - + + - + + - + 3.1.3. Liên thuộc tính Quan hệ 2 - + - Quan hệ 3 - - + - + - 3.2. Nhiều quan hệ … 3.2.1. Tham chiếu Quan hệ n - + - - - + 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 Khoa CNTT – Đại học Sài Gòn 15 Khoa CNTT – Đại học Sài Gòn 16 4
  5. 3.1.1. RBTV - Miền giá trị Ví dụ 3 oRàng buộc qui định các giá trị cho một thuộc tính Thời gian tham gia đề án của một nhân viên không quá 60 giờ • Bối cảnh: R A B C D PHANCONG   1 1   5 7   9{,  , } {1..10}   12 3 • Biểu diễn:   23 9 t  PHANCONG ( t.THOIGIAN  60 ) oMiền giá trị • Bảng tầm ảnh hưởng: • Liên tục R3 Thêm Xóa Sửa • Rời rạc PHANCONG    (THOIGIAN) Khoa CNTT – Đại học Sài Gòn 17 Khoa CNTT – Đại học Sài Gòn 18 Ví dụ 4 3.1.2. RBTV - Liên bộ Giới tính của nhân viên là ‘Nam’ hoặc ‘Nu’ 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ệ o Bối cảnh: NHANVIEN R A B C D o Biểu diễn:   1 1   5 7 t  NHANVIEN ( t.PHAI  {‘Nam’, ‘Nu’} )   12 3 hay   23 9 DOM(PHAI)  {‘Nam’, ‘Nu’} o Bảng tầm ảnh hưởng: oTrường hợp đặc biệt R4 Thêm Xóa Sửa • RB khóa chính NHANVIEN    (PHAI) • RB duy nhất (unique) Khoa CNTT – Đại học Sài Gòn 19 Khoa CNTT – Đại học Sài Gòn 20 5
  6. Ví dụ 5 Ví dụ 6 Tên phòng là duy nhất Một nhân viên được tham gia tối đa 5 đề án o Bối cảnh: o Bối cảnh: PHONGBAN PHANCONG o Biểu diễn: o Biểu diễn: t  PHANCONG ( ∑({ s  PHANCONG | s.MA_NVIEN  t.MA_NVIEN})  5 ) t1, t2  PHONGBAN ( t1 t2  t1.TENPHG  T2.TENPHG ) o Bảng tầm ảnh hưởng: o Bảng tầm ảnh hưởng: R5 Thêm Xóa Sửa R6 Thêm Xóa Sửa PHONGBAN    (TENPHG) PHANCONG    (MA_VIEN, SODA) Khoa CNTT – Đại học Sài Gòn 21 Khoa CNTT – Đại học Sài Gòn 22 Ví dụ 7 3.1.3. RBTV - Liên thuộc tính THIDAU(NGAY, GIO, DOI, SOBAN) Là ràng buộc giữa các thuộc tính trong cùng quan hệ Mỗi trận đấu là cuộc thi đấu của đúng 2 đội • Bối cảnh: R A B C D THIDAU   1 1 • Biểu diễn:   5 7   12 3 t  THIDAU ( !s  THIDAU ( t  s  t.NGAY  s.NGAY  t.GIO  s.GIO ))   23 9 • Bảng tầm ảnh hưởng R7 Thêm Xóa Sửa THIDAU    (NGAY, GIO, DOI) Khoa CNTT – Đại học Sài Gòn 23 Khoa CNTT – Đại học Sài Gòn 24 6
  7. Ví dụ 8 Ví dụ 9 Một nhân viên không quản lý trực tiếp chính mình KHOAHOC(MAKH, TENKH, BDAU, KTHUC) • Bối cảnh: Mỗi khóa học kéo dài ít nhất 3 tháng • Bối cảnh: NHANVIEN • Biểu diễn: KHOAHOC • Biểu diễn: t  NHANVIEN ( t.MA_NQL  t.MANV  t.MA_NQL  null ) t  KHOAHOC ( t.KTHUC  t.BDAU  3 ) • Bảng tầm ảnh hưởng: R8 Thêm Xóa Sửa • Bảng tầm ảnh hưởng: NHANVIEN +   (MA_NQL) R9 Thêm Xóa Sửa Ở thời điểm thêm 1 bộ vào NHANVIEN, MA_NQL là null KHOAHOC    (BDAU, KTHUC) Khoa CNTT – Đại học Sài Gòn 25 Khoa CNTT – Đại học Sài Gòn 26 3.2.1. RBTV - Tham chiếu Ví dụ 10 o Giá trị xuất hiện tại các thuộc tính trong một quan hệ nào đó 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 phải tham chiếu đến giá trị khóa chính của một quan hệ khác • Bối cảnh: cho trước R A B C D THANNHAN, NHANVIEN S E F   1 1 • Biểu diễn:   5 7 7 1 t  THANNHAN ( s  NHANVIEN ( s.MANV  t.MA_NVIEN ))   12 3 3 2 hay   23 9 THANNHAN.MA_NVIEN  NHANVIEN.MANV Bắt buộc phải tồn tại trước • Bảng tầm ảnh hưởng: o Trường hợp đặc biệt R10 Thêm Xóa Sửa NHANVIEN    (MANV) • RB khóa ngoại THANNHAN    (MA_NVIEN) Khoa CNTT – Đại học Sài Gòn 27 Khoa CNTT – Đại học Sài Gòn 28 7
  8. 3.2.1. RBTV - Tham chiếu 3.2.2. RBTV - Liên bộ, liên quan hệ Còn gọi là phụ thuộc tồn tại Là ràng buộc xảy ra giữa các bộ trên nhiều quan hệ khác nhau Thường có bối cảnh là hai quan hệ R A B C D o Nhưng có trường hợp suy biến thành một quan hệ   1 1 o Ví dụ (R2)   5 7   12 3 • Người quản lý trực tiếp phải là một nhân viên trong công ty   23 9 • Bối cảnh: NHANVIEN • Biểu diễn: S A B C t  NHANVIEN ( t.MA_NQL  null   2 7 s  NHANVIEN (t.MA_NQL  s.MANV ))  4 7  2 3 • Bảng tầm ảnh hưởng  2 10 R2 Thêm Xóa Sửa NHANVIEN    (MANV, MA_NQL) Khoa CNTT – Đại học Sài Gòn 29 Khoa CNTT – Đại học Sài Gòn 30 Ví dụ 11 3.2.3. RBTV - Liên thuộc tính, liên quan hệ HOADON(SOHD, MAKH, NGAYHD) Là ràng buộc xảy ra giữa các thuộc tính trên nhiều quan hệ CTHD(SOHD, MAHH, DGIA, SLG) khác nhau Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn • Bối cảnh: R A B C D S A B C HOADON, CTHD   1 1  2 7 • Biểu diễn:   5 7  4 7   12 3  2 3 t  HOADON ( s  CTHD ( t.SOHD  s.SOHD ))   23 9  2 10 • Bảng tầm ảnh hưởng: R11 Thêm Xóa Sửa HOADON    (SOHD) CTHD    (SOHD) Khoa CNTT – Đại học Sài Gòn 31 Khoa CNTT – Đại học Sài Gòn 32 8
  9. Ví dụ 12 3.2.4. RBTV - Thuộc tính tổng hợp Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức oThuộc tính tổng hợp • Bối cảnh: • Là thuộc tính có giá trị được tính toán từ các thuộc NHANVIEN, PHONGBAN tính khác • Biểu diễn: t  PHONGBAN ( s  NHANVIEN ( oKhi CSDL có thuộc tính tổng hợp s.MANV  t.TRPHG  t.NG_NHANCHUC  s.NGSINH )) • RBTV bảo đảm quan hệ giữa thuộc tính tổng hợp và • Bảng tầm ảnh hưởng: các thuộc tính nguồn R12 Thêm Xóa Sửa NHANVIEN  +  (NGSINH, MANV) PHONGBAN    (NG_NHANCHUC, TRPHG) Khoa CNTT – Đại học Sài Gòn 33 Khoa CNTT – Đại học Sài Gòn 34 Ví dụ 13 3.2.5. RBTV – Chu trình PHONGBAN(TENPHG, MAPHG, TRPHG, NG_NHANCHUC, SO_NV) Lược đồ CSDL có thể được biểu diễn bằng đồ thị Số nhân viên của một phòng ban phải bằng tổng số lượng o Đỉnh nhân viên thuộc phòng đó • Quan hệ Tên quan hệ • Bối cảnh: • Thuộc tính Tên thuộc tính • Biểu diễn: NHANVIEN, PHONGBAN o Cạnh • Đường nối một đỉnh quan hệ với một đỉnh thuộc tính trong t  PHONGBAN ( t.SO_NV   { s  NHANVIEN | s.PHG  t.MAPHG} ) lược đồ CSDL Tên quan hệ Tên thuộc tính • Bảng tầm ảnh hưởng: Chu trình R13 Thêm Xóa Sửa NHANVIEN    (PHG) o Đồ thị xuất hiện đường đi khép kín ~ Lược đồ CSDL có PHONGBAN    (SO_NV, MAPHG) chu trình Khoa CNTT – Đại học Sài Gòn 35 Khoa CNTT – Đại học Sài Gòn 36 9
  10. Ví dụ 14 Ví dụ 14 Nhân viên chỉ được phân công vào các đề án do phòng 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 ban của mình phụ trách • Bối cảnh: NHANVIEN, DEAN, PHANCONG PHG=PHONG • Biểu diễn: NVDA  NHANVIEN PHG=PHONG DEAN t  PHANCONG ( s  NVDA ( NHANVIEN MANV, MADA DEAN t.MA_NVIEN  s.MANV  t.MADA  s.SODA )) • Bảng tầm ảnh hưởng: MANV=MA_NVIEN SODA=MADA R14 Thêm Xóa Sửa MA_NVIEN, SODA NHANVIEN    (MANV,PHG) PHANCONG DEAN    (MADA,PHONG) PHANCONG    (MA_NVIEN,SODA) Khoa CNTT – Đại học Sài Gòn 37 Khoa CNTT – Đại học Sài Gòn 38 4. Cài đặt 4. Cài đặt oCác RBTV được cài đặt bởi 1. Assertion • Primary key 2. Trigger • Foreign key 3. Transaction (giao tác) • Check contraint 4. Stored Procedure (thủ tục lưu trữ nội) • Assertion • Trigger • Transaction Khoa CNTT – Đại học Sài Gòn 39 Khoa CNTT – Đại học Sài Gòn 40 10
  11. Sửa bài Sửa bài •PHONGBAN (MAPHG, TENPHG, TRPHG, NGNC) •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 đó. Mỗi phòng ban: tên, mã phòng duy nhất. Trưởng phòng là •DIADIEM_PHG (MAPHG, DIADIEM) nhân viên của công ty. Ngày nhận chức phải lớn hơn ngày Mỗi phòng ban có thể có nhiều địa điểm khác nhau. sinh của nhân viên đó. •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. 1. Tên phòng ban duy nhất: •NHANVIEN (MANV, HONV, TENLOT, TENNV, NGSINH, PHAI, DCHI, MA_NQL, t1, t2  PHONGBAN ( t1 t2  t1.TENPHG  t2.TENPHG ) 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ý 2. Trưởng phòng là NV của công ty: •PHANCONG (MANV, MADA, THOIGIAN) t PHONGBAN ( t1 t2  t1.TENPHG  t2.TENPHG ) 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) 3. Ngày nhận chức phải lớn hơn ngày sinh: 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 t  PHONGBAN ( s  NHANVIEN ( s.MANV t.TRPHG chong hoặc Con  t.NGNC  s.NGSINH )) Khoa CNTT – Đại học Sài Gòn 41 Khoa CNTT – Đại học Sài Gòn 42 Sửa bài Sửa bài •DEAN (MADA, TENDA, DDIEM_DA, PHONG, •NHANVIEN (MANV, HONV, TENLOT, TENNV, NGBD_DK, NGKT_DK) NGSINH, PHAI, DCHI, MA_NQL, PHONG, LUONG) Mỗi đề án: tên, mã duy nhất. Ngày bắt đầu phải nhỏ hơn Phái phải là nam hoặc nữ. Lương của nhân viên phải nhỏ ngày kết thúc dự kiến của đề án. hơn lương của người quản lý 4. Tên đề án duy nhất: 6. Phái phải là nam hoặc là nữ: t1, t2  DEAN ( t1 t2  t1.TENDA  t2.TENDA ) t  NHANVIEN ( t.PHAI  {‘Nam’, ‘Nu’} ) 5. Ngày bắt đầu nhỏ hơn ngày kết thúc: 7. Lương NV nhỏ hơn lương của người quản lý: t DEAN ( t.NGBD_DK < t.NGKT_DK ) t  NHANVIEN ( s  NHANVIEN ( t.MA_NQL = s.MANV t.LUONG < s.LUONG )) Khoa CNTT – Đại học Sài Gòn 43 Khoa CNTT – Đại học Sài Gòn 44 11
  12. Sửa bài Sửa bài •PHANCONG (MANV, MADA, THOIGIAN) •THANNHAN (MANV, MATN, TENTN, PHAI, Mỗi nhân viên chỉ có thể tham gia không quá 3 đề án và các đề án NGSINH, QUANHE) 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 Mỗi thân nhân phải có quan hệ với nhân viên trong công 8. NV tham gia không quá 3 đề án: ty, và chỉ có thể là quan hệ Vo chong hoặc Con t  PHANCONG ( ∑({ s  PHANCONG | s.MANV  t.MANV})  3 ) 11. Thân nhân phải có quan hệ với NV: 9. NV tham gia đề án do phòng mình chủ trì: t  THANNHAN (s  NHANVIEN ( s.MANV  t.MANV)) NVDA  NHANVIEN PHG=PHONG DEAN t  PHANCONG ( s  NVDA ( t.MANV  s.MANV  t.MADA  s.SODA )) 12. Quan hệ chỉ có thể là Vo chong hoặc Con: t  THANNHAN ( t.QUANHE  {‘Vochong’, ‘Con’} ) 10. Tổng thời gian tham gia đề án không quá 40h t  PHANCONG (s  PHANCONG ( s.MANV  t.MANV  ∑ s.THOIGIAN
  13. Ví dụ 12 Ví dụ 15 Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức Lương của trưởng phòng phải lớn hơn 50000 CREATE ASSERTION R12 CHECK CREATE ASSERTION R15 CHECK ( ( NOT EXISTS ( NOT EXISTS ( SELECT * SELECT * FROM NHANVIEN, PHONGBAN FROM NHANVIEN, PHONGBAN WHERE MANV=TRPHG AND NGSINH > NGAY_NHANCHUC ) WHERE MANV=TRPHG ) AND LUONG < 50000 ) ) Khoa CNTT – Đại học Sài Gòn 49 Khoa CNTT – Đại học Sài Gòn 50 Ví dụ 15 Ví dụ 16 Lương của trưởng phòng phải lớn hơn 50000 Số lượng nhân viên của mỗi phòng ban không quá 20 ALTER TABLE PHONGBAN người ( Check Constraint CREATE ASSERTION R16 CHECK TENPB VARCHAR(20) UNIQUE, ( MAPHG INT NOT NULL, 20 >= ALL ( SELECT COUNT(MANV) TRPHG CHAR(9), FROM NHANVIEN NG_NHANCHUC DATETIME, GROUP BY PHG ) CONSTRAINT CHK_PB_LUONGTRPHG CHECK ( ) TRPHG NOT IN (SELECT MANV FROM NHANVIEN WHERE LUONG < 50000 )) ) Khoa CNTT – Đại học Sài Gòn 51 Khoa CNTT – Đại học Sài Gòn 52 13
  14. Ví dụ 16 Số lượng nhân viên của mỗi phòng ban không quá 20 người Check Constraint ALTER TABLE NHANVIEN ADD CONSTRAINT CHK_NV_SLNVPB CHECK ( 20 >= ALL ( SELECT COUNT(MANV) FROM NHANVIEN ASSERTION HAY CHECK CONSTRAINT ? GROUP BY PHG ) ) 54 Khoa CNTT – Đại học Sài Gòn 53 b. Trigger b. Trigger Là tập hợp các lệnh được thực hiện tự động khi xuất hiện Cú pháp một biến cố nào đó CREATE TRIGGER thêm AFTER|BEFORE INSERT|UPDATE|DELETE ON xóa sửa Biến REFERENCING cố trước NEW ROW|TABLE AS sau OLD ROW|TABLE AS FOR EACH ROW | FOR EACH STATEMENT giá trị Thỏa WHEN () Điều kiện Tập hợp các lệnh mới giá trị cũ Không row-level thỏa statement- Thông báo lỗi level DROP TRIGGER Khoa CNTT – Đại học Sài Gòn 55 Khoa CNTT – Đại học Sài Gòn 56 14
  15. Trigger – FOR Ví dụ 15 Lương của trưởng phòng phải lớn hơn 50000 CREATE TRIGGER TênTrigger ON Tên Bảng CREATE TRIGGER TR_PB_UPD FOR Hành động cập nhật AFTER UPDATE OF TRPHG ON PHONGBAN AS REFERENCING Khai báo biến … NEW ROW AS NewTuple FOR EACH ROW Nhận dữ liệu từ bảng trung gian … WHEN (50000 >= (SELECT LUONG Các kiểm tra …. FROM NHANVIEN WHERE MANV=NewTuple.TRPHG) GO ) Thông báo lỗi cho người dùng Khoa CNTT – Đại học Sài Gòn 57 Khoa CNTT – Đại học Sài Gòn 58 Ví dụ 15 – cách 1 Ví dụ 15 – cách 2 Lương của trưởng phòng phải lớn hơn 50000 Lương của trưởng phòng phải lớn hơn 50000 CREATE TRIGGER TR_PB_UPD CREATE TRIGGER TR_PB_UPD AFTER UPDATE OF TRPHG ON PHONGBAN AFTER UPDATE OF LUONG ON NHANVIEN REFERENCING REFERENCING NEW ROW AS NewTuple NEW ROW AS NewTuple OLD ROW AS OldTuple OLD ROW AS OldTuple FOR EACH ROW FOR EACH ROW WHEN (NewTuple.LUONG = (SELECT LUONG SELECT TRPHG FROM PHONGBAN )) FROM NHANVIEN WHERE MANV=NewTuple.TRPHG)) UPDATE NHANVIEN SET LUONG=OldTuple.LUONG UPDATE PHONGBAN WHERE LUONG=NewTuple.LUONG SET TRPHG=OldTuple.TRPHG WHERE TRPHG=NewTuple.TRPHG Khoa CNTT – Đại học Sài Gòn 59 Khoa CNTT – Đại học Sài Gòn 60 15
  16. c. Transaction 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 oGiao tác phải đảm bảo • Hoặc là tất cả các lệnh đều được thực hiện thành công • Tính nguyên tố (atomicity) • Hoặc là không có lệnh nào được thực hiện • Tính nhất quán của CSDL (consistency) Các RBTV không bị vi phạm Ví dụ: xử lý chuyển tiền trong ngân hàng  Trong khi thực hiện giao tác Giao tác Chuyển_tiền Giảm tiền trong tài khoản người gửi  Trước và sau khi thực hiện giao tác 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 61 Khoa CNTT – Đại học Sài Gòn 62 Ví dụ 7 Ví dụ 7 Mỗi trận đấu là cuộc thi đấu của đúng 2 đội Giao tác Xóa_trận_đấu(ngay, gio) Giao tác Thêm_trận_đấu(t, s) Với mọi sTHIDAU (s.NGAYngay  s.GIOgio) Thêm t vào THIDAU Xóa s khỏi THIDAU Thêm s vào THIDAU Cuối với mọi Nếu có một thao tác thất bại thì Nếu có một thao tác thất bại thì Quay lui giao tác Quay lui giao tác Ngược lại Ngược lại Hoàn tất giao tác Hoàn tất giao tác Cuối nếu Cuối nếu Cuối giao tác Cuối giao tác Khoa CNTT – Đại học Sài Gòn 63 Khoa CNTT – Đại học Sài Gòn 64 16
  17. Ví dụ 11 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 Giao tác Thêm_hóa_đơn Thêm HOADON Thêm HOADON Thêm chi tiết thứ 1 vào CTHD Thêm chi tiết thứ 1 vào CTHD Thêm chi tiết thứ 2 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ì Nếu có một thao tác thêm thất bại thì Quay lui giao tác Quay lui giao tác Ngược lại Ngược lại Hoàn tất giao tác Hoàn tất giao tác Cuối nếu Cuối nếu Cuối giao tác Cuối giao tác Khoa CNTT – Đại học Sài Gòn 65 Khoa CNTT – Đại học Sài Gòn 66 d. Stored Procedure Ví dụ 7 Các DBMS thương mại cung cấp cách thức lưu trữ các Mỗi trận đấu là cuộc thi đấu của đúng 2 đội hàm hay thủ tục CREATE PROCEDURE Thêm_trận_đấu – Được lưu trữ trong lược đồ CSDL t THIDAU , s THIDAU AS – Được sử dụng trong các câu lệnh SQL begin tran Thêm t vào THIDAU If @@error0 rollback tran Cú pháp Thêm s vào THIDAU CREATE PROCEDURE If @@error0 rollback tran AS commit tran GO Khai báo biến cục bộ Thân chương trình EXEC Thêm_trận_đấu x, y GO EXEC Khoa CNTT – Đại học Sài Gòn 67 Khoa CNTT – Đại học Sài Gòn 68 17
  18. 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 Thank you! • Application  Trigger quá nhiều  hệ thống chậm chạm  Stored Procedure  hiệu quả cao Khoa CNTT – Đại học Sài Gòn 69 18
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2