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

Bài giảng môn Cơ sở dữ liệu: Chương 7 - ĐH KHTN

Chia sẻ: Vo Hoang Nhan | Ngày: | Loại File: PDF | Số trang:0

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

Tham khảo Bài giảng môn Cơ sở dữ liệu: Chương 7 - Ràng buộc toàn vẹn sẽ giúp cho các bạn sinh viên nắm được một số nội dung về các khái niệm ràng buộc toàn vẹn, các đặc trưng của ràng buộc toàn vẹn, phân loại và cài đặt ràng buộc toàn vẹn. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn Cơ sở dữ liệu: Chương 7 - ĐH KHTN

  1. Nội'dung'chi'@ết' !  Khái&niệm" !  Các"đặc"trưng"của"RBTV" ' CHƯƠNG'7' !  Phân"loại" !  Cài"đặt" Ràng'buộc'toàn'vẹn'(Integrety' Constraints)' Slide&bài&giảng&môn&Cơ&sở&dữ&liệu&& ©"Bộ"môn"Hệ"Thống"Thông"Tin"/"Khoa"Công"Nghệ"Thông"Tin"/"Trường"Đại"học"Khoa"học"Tự"nhiên""" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 2& Khái'niệm' Nội'dung'chi'@ết' !  RBTV"(Integrety"Constraints)"được"phát"hiện"từ"ngữ"nghĩa" !  Khái"niệm"và"phân"loại" của"dữ"liệu"hoặc"thể"hiện"của"dữ"liệu"trong"thực"tế"(1)." !  Các&đặc&trưng&của&RBTV& !  RBTV"nhằm"đảm"bảo"(1):" -  Bối"cảnh" !  Tính"đúng"của"dữ"liệu"và"mô"hình"dữ"liệu." -  Nội"dung" !  Ngữ"nghĩa"của"CSDL" -  Bảng"tầm"ảnh"hưởng" !  Khi"RBTV"được"khai"báo,""mọi"thể"hiện"của"quan"hệ"đều" phải"thỏa"các"RBTV"này"ở"bất"kỳ"thời"điểm"nào"(1)." !  Phân"loại" !  RBTV"được"phát"hiện"và"khai"báo"bởi"các"thiết"kế"viên" !  Cài"đặt" trong"quá"trình"thiết"kế"dữ"liệu"(1)." !  RBTV"được"định"nghĩa"trên"một"quan"hệ"hoặc"liên"quan" đến"nhiều"quan"hệ"(1)." " (1)""Trích"từ"sách:"Fundamental*of*Databases*4th*,*Ramez*Elmasri*&*Shamkant*B.*Navathe,*ISBN* 0A321A12226A7,*2003" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 3& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 4&
  2. Bối'cảnh' Bối'cảnh'(I)' !  Bối"cảnh"của"một"RBTV" !  Ví"dụ"(R2)" -  Là"những"quan"hệ"có"khả"năng"bị"vi"phạm"RBTV"khi"thực" -  Người"quản"lý"trực"tiếp"(của"một"giáo"viên)"phải"là"một"giáo" hiện"các"phép"cập"nhật"dữ"liệu"(thêm,"xóa,"sửa"dữ"liệu)" viên"trong"cùng"bộ"môn" •  Các"phép"cập"nhật"" !  Ví"dụ"(R1)" –  Cập"nhật"người"quản"lý"trực"tiếp"của"một"giáo"viên" -  Mức"lương"của"một"người"giáo"viên"không"được"vượt"quá" –  Thêm"mới"một"giáo"viên" trưởng"bộ"môn" •  Bối"cảnh:"GIAOVIEN" •  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" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 5& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 6& Nội'dung' Nội'dung'(I)' !  Nội"dung"của"một"RBTV"được"phát"biểu"bằng" !  Ví"dụ"(R1)" -  Ngôn"ngữ"tự"nhiên" -  Ngôn"ngữ"tự"nhiên" •  Dễ"hiểu"nhưng"thiếu"tính"chặt"chẽ" •  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" •  Cô"đọng,"chặt"chẽ"nhưng"đôi"lúc"khó"hiểu" -  Ngôn"ngữ"hình"thức"" •  Biểu"diễn"thông"qua"" (∀t)(GIAOVIEN(t) ∧ (∃s)(BOMON(s) ∧ –  Đại"số"quan"hệ" (∃u)(GIAOVIEN(u) ∧ –  Phép"tính"quan"hệ"(biến"bộ)" s.TRUONGBM = u.MAGV ∧ –  Mã"giả"(pseudo"code)" s.MABM = t.MABM ∧ t.LUONG ≤ u.LUONG ))) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 7& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 8&
  3. Nội'dung'(I)' Bảng'tầm'ảnh'hưởng' !  Ví"dụ"(R2)" !  Bảng"tầm"ảnh"hưởng" -  Ngôn"ngữ"tự"nhiên" -  Xác"định"thao"tác"cập"nhật"nào"cần"phải"kiểm"tra"RBTV"khi" •  Người"quản"lý"trực"tiếp"của"một"giáo"viên"phải"là"một"giáo" được"thực"hiện"trên"quan"hệ"bối"cảnh" viên"trong"cùng"bộ"môn" !  Có"2"loại" -  Ngôn"ngữ"hình"thức" -  Bảng"tầm"ảnh"hưởng"cho"một"RBTV" & ∀(t)(GIAOVIEN(t) ∧ (t.GVQLCM ≠ null ⇒ -  Bảng"tầm"ảnh"hưởng"tổng"hợp" (∃s)(GIAOVIEN(s) ∧ s.MABM = t.MABM ∧ s.MAGV = t.GVQLCM ))) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 9& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 10& Bảng'tầm'ảnh'hưởng'một'RBTV' 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ên_RB Thêm Xóa Sửa T X S T X S … … … T X S Quan hệ 1 + - + (Thuộc tính) Quan hệ 1 + - + + - + + - + Quan hệ 2 - + - Quan hệ 2 - + - … Quan hệ 3 - - + - + - Quan hệ n - + - … Quan hệ n - + - - - + (+) Vi phạm RBTV (-) Không vi phạm RBTV ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 11& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 12&
  4. Nội'dung'chi'@ết' Phân'loại' !  Khái"niệm" !  RBTV"được"chia"làm"3"loại"chính"(1):" !  Các"đặc"trưng"của"RBTV" •  RBTV"bắt"buộc"liên"quan"đến"mô"hình"dữ"liệu"(inherent" !  Phân&loại& model"based"contraints)."" !  Cài"đặt" •  Ví"dụ:"Một"quan"hệ"không"được"chứa"các"bộ"dữ"liệu"trùng"nhau." •  RBTV"liên"quan"đến"lược"đồ"của"mô"hình"dữ"liệu" (schema"based"contraints)."" •  Ví"dụ:"Ràng"buộc"miền"giá"trị,"ràng"buộc"trên"khóa,"ràng"buộc" trên"giá"trị"rỗng,"ràng"buộc"tham"chiếu." •  RBTV"dựa"trên"ứng"dụng"(application"based" contraints)."" •  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" (1)""Trích"từ"sách:"Fundamental*of*Databases*4th*,*Ramez*Elmasri*&*Shamkant*B.*Navathe,*ISBN* 0A321A12226A7,*2003" " ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 13& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 14& Phân'loại' RBTV'V'Miền'giá'trị' !  Ràng"buộc"qui"định"các"giá"trị"cho"một"thuộc"tính" !  RBTV"liên"quan"đến"một"quan"hệ:" •  Miền"giá"trị" R A B C D •  Liên"bộ" α α 1 1 •  Liên"thuộc"tính" α β 5 7 β ∈9 {α, {1..10} ∈ β, γ} !  RBTV"liên"quan"đến"nhiều"quan"hệ:" β β 12 3 23 9 •  Tham"chiếu" β β •  Liên"bộ"liên"quan"hệ" !  Miền"giá"trị" •  Liên"thuộc"tính"liên"quan"hệ" -  Liên"tục" •  Thuộc"tính"tổng"hợp" •  Chu"trình" -  Rời"rạc" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 15& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 16&
  5. Ví'dụ'3'' Ví'dụ'4'' !  Giới"tính"của"giáo"viên"phải"là" Nam hoặc" Nữ " !  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:& GIÁOVIÊN -  Bối"cảnh:& THAMGIAĐT -  Biểu"diễn:" ∀(t )(GIAOVIEN(t) ∧ (t.PHAI = 'Nam' ∨ t.PHAI = -  Biểu"diễn:" Nữ )) hay ∀(t )(THAMGIAĐT(t) ∧ t.PHỤCẤP ≤ 20) DOM(PHAI) = { Nam , Nữ } -  Bảng"tầm"ảnh"hưởng:" -  Bảng"tầm"ảnh"hưởng:" R3 Thêm Xóa Sửa R4 Thêm Xóa Sửa GIÁOVIÊN + - + (PHAI) THAMGIAĐT + - + (PHỤCẤP) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 17& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 18& RBTV'V'Liên'bộ' Ví'dụ'5'' !  Sự"tồn"tại"của"một"hay"nhiều"bộ"phụ"thuộc"vào"sự"tồn"tại" !  Tên"bộ"môn"là"duy"nhất.""" của"một"hay"nhiều"bộ"khác"trong"cùng"quan"hệ" -  Bối"cảnh:"" BOMON -  Biểu"diễn:" R A B C D ∀(t1, t2) (BOMON(t1) ∧ BOMON(t2) ∧ α α 1 1 α β 5 7 (t1≠ t2 ⇒ t1.TENBM ≠ t2.TENBM)) β β 12 3 "" hay 23 9 β β " ∀(t1)(BOMON(t1) ∧ ¬(∃t2)(BOMON(t2) ∧ " !  Trường"hợp"đặc"biệt" t1≠ t2 ∧ t1.TENBM = t2.TENBM) ) -  Bảng"tầm"ảnh"hưởng:" -  RB"khóa"chính" -  RB"duy"nhất"(unique)" R5 Thêm Xóa Sửa BOMON + - + (TENBM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 19& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 20&
  6. Ví'dụ'6'' RBTV'V'Liên'thuộc'bnh' !  Một"giáo"viên"được"tham"gia"tối"đa"5"công"việc"trong"tất"cả" !  Là"ràng"buộc"giữa"các"thuộc"tính"trong"cùng"quan"hệ" đề"tài" -  Bối"cảnh:" THAMGIAĐT -  Biểu"diễn:" R A B C D α α 1 1 (∀t)(THAMGIADT(t) ∧ α β 5 7 β β 12 3 card({ s | THAMGIADT(s) ∧ s.MAGV = t.MAGV}) ≤ 5 ) β β 23 9 -  Bảng"tầm"ảnh"hưởng:" R6 Thêm Xóa Sửa THAMGIADT + - + (MAGV) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 21& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 22& Ví'dụ'8'' Ví'dụ'9'' !  Một"giáo"viên"không"trực"tiếp"quản"lý"chuyên"môn""chính" !  Ngày"bắt"đầu"của"đề"tài"luôn"nhỏ"hơn"ngày"kết"thúc"của"đề" mình"" tài." -  Bối"cảnh:"" GIAOVIEN -  Bối"cảnh:"" ĐỀTÀI -  Biểu"diễn:" -  Biểu"diễn:" (∀t)( GIAOVIEN(t) ∧ (t.GVQLCM = null ∨ t.GVQLCM ≠ t.MAGV) } (∀t)( ĐỀTÀI(t) ∧ t.NGÀYBĐ ≤ t.NGÀYKT) -  Bảng"tầm"ảnh"hưởng:" -  Bảng"tầm"ảnh"hưởng:" R9 Thêm Xóa Sửa R8 Thêm Xóa Sửa ĐỀTÀI + - + (NGÀYBĐ, NGÀYKT) GIAOVIEN + - + (GVQLCM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 23& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 24&
  7. Ví'dụ'10'' RBTV'V'Tham'chiếu' !  Ngày"bắt"đầu"của"một"công"việc"luôn"nhỏ"hơn"ngày"kết"thúc" !  Giá"trị"xuất"hiện"tại"các"thuộc"tính"trong"một"quan"hệ"nào" của"công"việc"đó." đó"phải"tham"chiếu"đến"giá"trị"khóa"chính"của"một"quan"hệ" khác"cho"trước" -  Bối"cảnh:"" CÔNGVIỆC R A B C D S E F α α 1 1 7 1 -  Biểu"diễn:" α β 5 7 3 2 β β 12 3 (∀t)( CÔNGVIỆC(t) ∧ t.NGÀYBĐ ≤ t.NGÀYKT) β β 23 9 -  Bảng"tầm"ảnh"hưởng:" Bắt buộc phải tồn tại trước R10 Thêm Xóa Sửa !  Trường"hợp"đặc"biệt" CÔNGVIỆC + - + (NGÀYBĐ, NGÀYKT) -  RB"khóa"ngoại" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 25& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 26& Ví'dụ'11'' Ví'dụ'12'' !  Mọi"giáo"viên"phải"thuộc"về"một"bộ"môn"cụ"thể." !  Trưởng"bộ"môn"phải"là"một"giáo"viên"" -  Bối"cảnh:"" BOMON, GIAOVIEN -  Bối"cảnh:"" BOMON, GIAOVIEN -  Biểu"diễn:" -  Biểu"diễn:" (∀t)(GIAOVIEN(t) ∧ ∃s(BOMON(s) ∧ s.MABM = t.MABM)) (∀t)(BOMON(t) ∧ ∃s(GIAOVIEN(s) ∧ s.MAGV = t.TRUONGBM)) -  Bảng"tầm"ảnh"hưởng:" -  Bảng"tầm"ảnh"hưởng:" R11 Thêm Xóa Sửa R12 Thêm Xóa Sửa GIAOVIEN + - + (MABM) GIAOVIEN - + + (MAGV) BOMON - + +(MABM) BOMON + - +(TRUONGBM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 27& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 28&
  8. RBTV'V'Tham'chiếu'(I)' RBTV'V'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" !  Thường"có"bối"cảnh"là"hai"quan"hệ" nhau" -  Nhưng"có"trường"hợp"suy"biến"thành"một"quan"hệ" R A B C D -  Ví"dụ"(R2)" α α 1 1 •  Người"quản"lý"trực"tiếp"của"một"giáo"viên"phải"là"một"giáo" α β 5 7 viên"trong"cùng"bộ"môn" β β 12 3 β β 23 9 •  Bối"cảnh:"GIAOVIEN" •  Biểu"diễn:" ∀(t)(GIAOVIEN(t) ∧ (t.GVQLCM ≠ null ⇒ S A B C (∃s)(GIAOVIEN(s) ∧ s.MABM = t.MABM ∧ s.MAGV = t.GVQLCM ))) α 2 7 α 4 7 "  Bảng"tầm"ảnh"hưởng" β 2 3 R2 Thêm Xóa Sửa γ 2 10 GIAOVIEN + + + (GVQLCM, MABM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 29& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 30& Ví'dụ'13'' Ví'dụ'14'' !  Mỗi"đề"tài"phải"có"ít"nhất"một"công"việc"thuộc"về"đề"tài"đó" !  Mỗi"bộ"môn"phải"có"ít"nhất"một"giáo"viên" -  Bối"cảnh:" DETAI, CONGVIEC -  Bối"cảnh:" GIAOVIEN, BOMON -  Biểu"diễn:" -  Biểu"diễn:" (∀t) (DETAI(t) ∧ (∃s)(CONGIVEC(s) ∧ t.MADT = s.MADT)) (∀t) (BOMON(t) ∧ (∃s)(GIAOVIEN(s) ∧ t.MABM = s.MABM)) -  Bảng"tầm"ảnh"hưởng:" -  Bảng"tầm"ảnh"hưởng:" R13 Thêm Xóa Sửa R14 Thêm Xóa Sửa DETAI + - +(MADT) BOMON + - +(MABM) CONGVIEC - + + (MADT) GIAOVIEN - + + (MABM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 31& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 32&
  9. RBTV'V'Liên'thuộc'bnh,'liên'quan'hệ' Ví'dụ'15'' !  Là"ràng"buộc"xãy"ra"giữa"các"thuộc"tính"trên"nhiều"quan"hệ" !  Ngày"sinh"của"trưởng"bộ"môn"phải"nhỏ"hơn"ngày"nhận" khác"nhau" chức:"" -  Bối"cảnh:"" GIAOVIEN, BOMON -  Biểu"diễn:" R A B C D S A B C (∀t)(BOMON(t) ∧ ∃s(GIAOVIEN(s) ∧ s.MAGV = t.TRUONGBM α α 1 1 α 2 7 α β 5 7 α 4 7 ∧ s.NGAYSINH < t.NGAYNHANCHUC)) β β 12 3 β 2 3 β β 23 9 γ 2 10 -  Bảng"tầm"ảnh"hưởng:" R15 Thêm Xóa Sửa GIAOVIEN - - + (NGAYSINH) BOMON + - + (NGAYNHANCHUC, TRUONGBM) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 33& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 34& Ví'dụ'16'' RBTV'V'Thuộc'bnh'tổng'hợp' !  Phụ"cấp"của"một"công"việc"trong"đề"tài"luôn"luôn"nhỏ"hơn" !  Thuộc"tính"tổng"hợp"(còn"gọi"là"thuộc"tính"suy"diễn)" kinh"phí"của"đề"tài"đó."" -  Là"thuộc"tính"có"giá"trị"được"tính"toán"từ"các"thuộc"tính"khác" -  Bối"cảnh:"" THAMGIADT, DETAI !  Khi"CSDL"có"thuộc"tính"tổng"hợp" -  Biểu"diễn:" -  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" (∀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) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 35& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 36&
  10. Ví'dụ'17'' RBTV'–'Chu'trình' !  BOMON(MABM,"TENBM,"TRUONGBM,"NGAYNHANCHUC," !  Lược"đồ"CSDL"có"thể"được"biểu"diễn"bằng"đồ"thị" SO_GV)" -  Đỉnh" !  Số"giáo"viên"của"một"bộ"môn"phải"bằng"tổng"số"lượng"giáo" •  Quan"hệ" Tên quan hệ viên"thuộc"bộ"môn"đó"đó" •  Thuộc"tính" Tên thuộc tính -  Bối"cảnh:" GIAOVIEN, BOMON -  Cạnh" -  Biểu"diễn:" •  Đường"nối"một"đỉnh"quan"hệ"với"một"đỉnh"thuộc"tính" trong"lược"đồ"CSDL" (∀t)(BOMON(t) ∧ t.SO_GV = card({ s|GIAOVIEN(s) ∧ Tên thuộc tính s.MABM = t.MABM})) Tên quan hệ -  Bảng"tầm"ảnh"hưởng:" !  Chu"trình" R17 Thêm Xóa Sửa -  Đồ"thị"xuất"hiện"đường"đi"khép"kín"~"Lược"đồ"CSDL"có"chu" GIAOVIEN + + + (MABM) trình" BOMON - - + (SO_GV) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 37& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 38& Ví'dụ'17'' Ví'dụ'17'(I)'' !  Nhân"viên"chỉ"được"phân"công"vào"các"đề"án"do"phòng"ban" !  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" 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 NHANVIEN MANV, MADA DEAN (∀t) (PHANCONG(t) ∧ (∃s)(NVDA(s) ∧ t.MA_NVIEN = s.MANV ∧ t.MADA = s.SODA )) -  Bảng"tầm"ảnh"hưởng:" MANV=MA_NVIEN SODA=MADA MA_NVIEN, SODA R17 Thêm Xóa Sửa NHANVIEN - - + (MANV,PHG) PHANCONG DEAN - + + (MADA,PHONG) PHANCONG + - + (MA_NVIEN,SODA) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 39& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 40&
  11. Ví'dụ'18' Nội'dung'chi'@ết' !  DDH"(SODDH,"NGAYDH,"MAKH)" !  Khái"niệm" !  CT_DDH"(SODDH,"MAMH,"SOLUONG,"DONGIA)"" !  GIAOHANG(MAGH,"NGAYGH,"TONGTIEN,"SODDH)" !  Các"đặc"trưng"của"RBTV" !  CT_GH"(MAGH,&MAMH)" !  Phân"loại" !  Chỉ"được"phép"giao"các"mặt"hàng"mà"khách"hàng"có"đặt." !  Cài&đặt" MAGH=MAGH -  Assertion" -  Trigger" -  Transaction"(giao"tác)" CT_DDH MAGH, MAMH GIAOHANG -  Stored"Procedure"(thủ"tục"lưu"trữ"nội)" MAMH = MAMH SODDH=SODDH SODDH, MAMH CT_DDH ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 41& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 42& Cài'đặt' Asser@on' !  Các"RBTV"được"cài"đặt"bởi" !  Là"một"biểu"thức"SQL"luôn"mang"giá"trị"TRUE"tại"mọi"thời" -  Primary"key" điểm." -  Foreign"key" -  Người"sử"dụng"cần"cho"biết"cái"gì"phải"đúng" -  Check"contraint" !  Cú"pháp" -  Assertion" CREATE ASSERTION CHECK () -  Trigger" -  Transaction" DROP ASSERTION ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 43& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 44&
  12. Ví'dụ'15' Ví'dụ'19' !  Ngày"sinh"của"trưởng"bộ"môn"phải"nhỏ"hơn"ngày"nhận" !  Lương"của"trưởng"bộ"môn"phải"lớn"hơn"50000" chức" CREATE ASSERTION R15 CHECK ( CREATE ASSERTION R12 CHECK ( NOT EXISTS ( NOT EXISTS ( SELECT * SELECT * FROM GIAOVIEN, BOMON FROM GIAOVIEN, BOMON WHERE MAGV=TRUONGBM WHERE MAGV=TRUONGBM AND LUONG < 50000 ) AND NGAYSINH > NGAYNHANCHUC ) ) ) ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 45& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 46& Ví'dụ'19'(I)' Ví'dụ'16' !  Lương"của"trưởng"bộ"môn"phải"lớn"hơn"50000" !  Số"lượng"giáo"viên"của"mỗi"bộ"môn"không"quá"20"người" ALTER TABLE BOMON ( Check Constraint TENBM NVARCHAR(50) UNIQUE, CREATE ASSERTION R16 CHECK ( MABM CHAR(10) NOT NULL, 20 >= ALL ( SELECT COUNT(MAGV) TRUONGBM CHAR(10), FROM GIAOVIEN NGAYNHANCHUC DATETIME, GROUP BY MABM ) CONSTRAINT CHK_BM_LUONGTRUONGBM CHECK ( ) TRUONGBM NOT IN (SELECT MAGV FROM GIAOVIEN WHERE LUONG
  13. Ví'dụ'16'(I)' Trigger' !  Số"lượng"giáo"viên"của"mỗi"bộ"môn"không"quá"20"người" !  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 Check Constraint xóa ALTER TABLE GIAOVIEN ADD sửa Biến cố CONSTRAINT CHK_GV_SLGVBM CHECK ( trước sau 20 >= ALL ( SELECT COUNT(MAGV) FROM GIAOVIEN GROUP BY MABM )) 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 ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 49& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 50& Trigger'(I)' Ví'dụ'15' !  Cú"pháp" !  Lương"của"trưởng"bộ"môn"phải"lớn"hơn"50000" CREATE TRIGGER CREATE TRIGGER TR_BM_UPD AFTER|BEFORE INSERT|UPDATE|DELETE ON AFTER UPDATE OF TRUONGBM ON BOMON REFERENCING REFERENCING NEW ROW|TABLE AS NEW ROW AS NewTuple OLD ROW|TABLE AS FOR EACH ROW FOR EACH ROW | FOR EACH STATEMENT WHEN (50000 >= (SELECT LUONG FROM GIAOVIEN WHEN () WHERE MAGV=NewTuple.TRUONGBM)) Thông báo lỗi cho người dùng DROP TRIGGER ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 51& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 52&
  14. Ví'dụ'15'(I)' Ví'dụ'15'(I)' !  Lương"của"trưởng"bộ"môn"phải"lớn"hơn"50000" !  Lương"của"trưởng"bộ"môn"phải"lớn"hơn"50000" CREATE TRIGGER TR_BM_UPD CREATE TRIGGER TR_BM_UPD AFTER UPDATE OF TRUONGBM ON BOMON AFTER UPDATE OF LUONG ON GIAOVIEN 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 (50000 >= (SELECT LUONG FROM GIAOVIEN WHEN (NewTuple.LUONG
  15. Ví'dụ'7' Ví'dụ'7'(I)' !  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 ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 57& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 58& Ví'dụ'11' Ví'dụ'11'(I)' !  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 ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 59& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 60&
  16. Stored'Procedure' Ví'dụ'7' !  Các"DBMS"thương"mại"cung"cấp"cách"thức"lưu"trữ"các"hàm" !  Mỗi"trận"đấu"là"cuộc"thi"đấu"của"đúng"2"đội" hay"thủ"tục"" -  Được"lưu"trữ"trong"lược"đồ"CSDL" CREATE PROCEDURE Thêm_trận_đấu t THIDAU , s THIDAU -  Được"sử"dụng"trong"các"câu"lệnh"SQL" AS begin tran Thêm t vào THIDAU !  Cú"pháp" If @@error0 rollback tran CREATE PROCEDURE Thêm s vào THIDAU AS If @@error0 rollback tran commit tran Khai báo biến cục bộ GO Thân chương trình GO EXEC Thêm_trận_đấu x, y EXEC ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 61& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 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" ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 63& ©"Bộ"môn"HTTT"/"Khoa"CNTT"/"Trường"ĐH"KHTN" 64&
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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