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

pdf 40 trang ngocly 3620
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Chương 5: 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:

  • pdfbai_giang_co_so_du_lieu_chuong_5_rang_buoc_toan_ven.pdf

Nội dung text: Bài giảng Cơ sở dữ liệu - Chương 5: Ràng buộc toàn vẹn

  1. Chương 5 Ràng buộc toàn vẹn
  2. 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 2
  3. Khái niệm Các RBTV (Integrety Constraints) 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. RBTV 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ơ sở dữ liệu - Khoa CNTT 3
  4. 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 4
  5. Các đặc trưng của RBTV Bối cảnh Nội dung Bảng tầm ảnh hưởng Cơ sở dữ liệu - Khoa CNTT 5
  6. 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  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 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 Cơ sở dữ liệu - Khoa CNTT 6
  7. 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  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  Bối cảnh: NHANVIEN Cơ sở dữ liệu - Khoa CNTT 7
  8. 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 8
  9. Nội dung (tt) Ví dụ (R1) - 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á 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 9
  10. Nội dung (tt) Ví dụ (R2) - 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 công ty - Ngôn ngữ hình thức  t NHANVIEN ( t.MA_NQL null  s NHANVIEN (t.MA_NQL s.MANV )) Cơ sở dữ liệu - Khoa CNTT 10
  11. 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 11
  12. 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 12
  13. 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 13
  14. Phân loại Một quan hệ Nhiều quan hệ Cơ sở dữ liệu - Khoa CNTT 14
  15. Một quan hệ Miền giá trị Liên bộ Liên thuộc tính Liên bộ, liên thuộc tính Cơ sở dữ liệu - Khoa CNTT 15
  16. 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   12 3   23 9 Miền giá trị - Liên tục - Rời rạc Cơ sở dữ liệu - Khoa CNTT 16
  17. 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 - Nội dung: 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 17
  18. 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’} ) hay DOM(PHAI) {‘Nam’, ‘Nu’} - Bảng tầm ảnh hưởng: R4 Thêm Xóa Sửa NHANVIEN (PHAI) Cơ sở dữ liệu - Khoa CNTT 18
  19. 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 19
  20. 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 20
  21. 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 21
  22. 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 ^ t.DOI # s.DOI )) - 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 22
  23. 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 23
  24. 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 24
  25. 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 25
  26. RBTV - Liên bộ liên thuộc tính Đây là RBTV liên quan đến nhiều bộ có thể có thể có nhiều thuộc tính trong một quan hệ R A B C D 1 1  5 7   12 3   23 9 Cơ sở dữ liệu - Khoa CNTT 26
  27. Ví dụ 10 HOADON(MSHD, LOAIHD, DonGia_NX) Hoá đơn có 2 loại: nhập và xuất, quy định: nhập trước, xuất sau. - Bối cảnh: HOADON - Nội dung: h hoaDon (h.loaiHD=‘X’ ^(t hoadon(t.loaiHD=‘N’ ^ h.mshd=t.mshd ))) - Tầm ảnh hưởng R10 Thêm Xóa Sửa HOADON - Muốn sửa khóa chính thì bỏ hẳn rồi thêm bộ khác Cơ sở dữ liệu - Khoa CNTT 27
  28. 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ơ sở dữ liệu - Khoa CNTT 28
  29. 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 Có 2 trường hợp - Chỉ có sự hiện diện của khoá ngoại. - Có sự lồng khoá. Cơ sở dữ liệu - Khoa CNTT 29
  30. Chỉ có sự hiện diện của khoá ngoại Mỗi nhân viên phải làm việc ở một phòng trong công ty. - Bối cảnh: NHANVIEN, PHONGBAN - Biểu diễn: t NHANVIEN ( s PHONGBAN ( s.MAPH t.PHG )) hay NHANVIEN.PHG  PHONGBAN.MAPH - Bảng tầm ảnh hưởng: R11 Thêm Xóa Sửa PHONGBAN - NHANVIEN (PHG) Cơ sở dữ liệu - Khoa CNTT 30
  31. Có sự lồng khoá 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 (t.ma_nvien # null ^ s NHANVIEN ( s.MANV t.MA_NVIEN )) - Bảng tầm ảnh hưởng: R12 Thêm Xóa Sửa NHANVIEN (MANV) THANNHAN (MA_NVIEN) Cơ sở dữ liệu - Khoa CNTT 31
  32. 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 32
  33. Ví dụ 13 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: R13 Thêm Xóa Sửa HOADON (SOHD) CTHD (SOHD) Cơ sở dữ liệu - Khoa CNTT 33
  34. 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 34
  35. 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 35
  36. 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 36
  37. 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 37
  38. 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 38
  39. 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 39
  40. 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 40