Bài giảng môn Cơ sở dữ liệu: Chương 7 - ĐH KHTN
lượt xem 35
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng môn Cơ sở dữ liệu: Chương 7 - ĐH KHTN
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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&
- 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
- 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&
- 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
- 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&
- 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&
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Đề Cương Bài Giảng Môn Cơ Sở Dữ Liệu
161 p | 403 | 67
-
Bài giảng môn Cơ sở dữ liệu: Chương 5 - ĐH KHTN
0 p | 226 | 50
-
Bài giảng môn Cơ sở dữ liệu: Chương 1 - ĐH KHTN
0 p | 245 | 42
-
Bài giảng môn Cơ sở dữ liệu: Chương 3 - ĐH KHTN
0 p | 179 | 37
-
Bài giảng môn Cơ sở dữ liệu: Chương 2 - ĐH KHTN
0 p | 168 | 35
-
Bài giảng môn Cơ sở dữ liệu: Chương 4 - ĐH KHTN
0 p | 187 | 35
-
Bài giảng môn Cơ sở dữ liệu: Chương 6 - ĐH KHTN
0 p | 177 | 35
-
Bài giảng môn Cơ sở dữ liệu - Bài 4: Ngôn ngữ đại số quan hệ (ĐH Công nghệ Thông tin)
40 p | 165 | 27
-
Bài giảng Cơ sở dữ liệu: Chương 1 - Tổng quan cơ sở dữ liệu
0 p | 236 | 17
-
Bài giảng môn Cơ sở dữ liệu: Chương 6 - Ngôn ngữ SQL
115 p | 130 | 11
-
Bài giảng môn Cơ sở dữ liệu: Chương 2 - Mô hình thực thể - kết hợp
0 p | 147 | 8
-
Bài giảng môn Cơ sở dữ liệu - Bài 1: Các khái niệm của một hệ cơ sở dữ liệu (ĐH Công nghệ Thông tin)
24 p | 86 | 5
-
Bài giảng môn Cơ sở dữ liệu: Chương 5 - ThS. Thái Bảo Trân
20 p | 76 | 5
-
Bài giảng môn Cơ sở dữ liệu: Chương 3 - Mô hình quan hệ
0 p | 103 | 4
-
Bài giảng môn Cơ sở dữ liệu: Chương 3 - ThS. Thái Bảo Trân
13 p | 59 | 4
-
Bài giảng môn Cơ sở dữ liệu: Chương 4 - ThS. Thái Bảo Trân
35 p | 49 | 4
-
Bài giảng môn Cơ sở dữ liệu: Chương 6 - ThS. Thái Bảo Trân
50 p | 73 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn