Chương 5: Ràng buộc toàn vẹn
Các điều kiện, quy định mà tất cả thể hiện của quan hệ phải
thỏa
1. Giới thiệu
- Định nghĩa: Ràng buộc toàn vẹn (RBTV) là các quy định, điều kiện từ ứng dụng thực tế. Các điều kiện này là bất biến.
- Vai trò:
- Ngăn ngừa mất dữ liệu.
- Đảm bảo dữ liệu tuân thủ theo các loại và phạm vi giá trị mong đợi.
- Duy trì liên kết phù hợp giữa dữ liệu trên các bảng khác nhau.
- Yêu cầu: Phải luôn đảm bảo CSDL thoả RBTV sau mỗi thao tác làm thay đổi tình trạng của CSDL (Thêm, Xóa, Sửa).
2. Các đặc trưng của một ràng buộc toàn vẹn
2.1. Nội dung
Phát biểu bằng ngôn ngữ tự nhiên (dễ hiểu) hoặc ngôn ngữ hình thức (tân từ, đại số quan hệ... để đảm bảo sự chặt chẽ).
2.2. Bối cảnh
Là tập hợp các quan hệ mà khi thao tác trên đó có khả năng làm vi phạm ràng buộc.
2.3. Bảng tầm ảnh hưởng
Bảng 2 chiều xác định thao tác nào cần kiểm tra RBTV.
| Ràng buộc Ri | Thêm (T) | Xóa (X) | Sửa (S) |
|---|
| Quan hệ A | + | − | +(T) |
| Quan hệ B | − | + | −(∗) |
- Ký hiệu:
- +: Có khả năng vi phạm (cần kiểm tra).
- −: Không vi phạm (không cần kiểm tra).
- +(T): Vi phạm khi sửa thuộc tính T.
- −(∗): Khóa chính không được sửa nên coi như không vi phạm.
3. Phân loại ràng buộc toàn vẹn
Lược đồ CSDL Quản Lý Giáo Vụ
(Các thuộc tính gạch chân là Khóa chính)
HOCVIEN(MaHV,Ho,Ten,NgSinh,GioiTinh,NoiSinh,MaLop)
LOP(MaLop,TenLop,TrgLop,SiSo,MaGVCN)
KHOA(MaKhoa,TenKhoa,NgTlap,TrgKhoa)
MONHOC(MaMH,TenMh,TCLT,TCTH,MaKhoa)
DIEUKIEN(MaMH,MaMH_Truoc)
GIAOVIEN(MaGV,HoTen,HocVi,HocHam,GioiTinh,NgSinh,NgVL,HeSo,MucLuong,MaKhoa)
GIANGDAY(MaLop,MaMH,MaGV,HocKy,Nam,TuNgay,DenNgay)
KETQUATHI(MaHV,MaMH,LanThi,NgThi,Diem,KQua)
3.1. Ràng buộc toàn vẹn có bối cảnh trên 1 quan hệ
3.1.1. Ràng buộc miền giá trị
Ví dụ R1: Giới tính của học viên chỉ là ‘Nam’ hoặc ‘Nữ’.
- Nội dung: ∀hv∈HOCVIEN:hv.GioiTinh∈{‘Nam’,‘Nữ’}
- Bối cảnh: HOCVIEN
- Bảng tầm ảnh hưởng:
| R1 | Thêm | Xóa | Sửa |
|---|
| HOCVIEN | + | − | +(GioiTinh) |
3.1.2. Ràng buộc liên thuộc tính
Ràng buộc giữa các thuộc tính trên cùng một bộ của quan hệ
Ví dụ R2: Ngày bắt đầu giảng dạy phải nhỏ hơn ngày kết thúc.
- Nội dung: ∀gd∈GIANGDAY:gd.TuNgay<gd.DenNgay
- Bối cảnh: GIANGDAY
- Bảng tầm ảnh hưởng:
| R2 | Thêm | Xóa | Sửa |
|---|
| GIANGDAY | + | − | +(TuNgay,DenNgay) |
3.1.3. Ràng buộc liên bộ
(Ràng buộc giữa các bộ khác nhau trong cùng một quan hệ)
Ví dụ R3: Tất cả các học viên phải có mã số phân biệt với nhau (RBTV Khóa chính).
- Nội dung: ∀h1,h2∈HOCVIEN:h1=h2⇒h1.MaHv=h2.MaHv
- Bối cảnh: HOCVIEN
- Bảng tầm ảnh hưởng:
| R3 | Thêm | Xóa | Sửa |
|---|
| HOCVIEN | + | − | −(∗) |
Ví dụ R4: Các giáo viên có cùng học vị, cùng hệ số lương thì mức lương sẽ bằng nhau.
- Nội dung: ∀gv1,gv2∈GIAOVIEN:(gv1.HocVi=gv2.HocVi∧gv1.HeSo=gv2.HeSo)⇒gv1.MucLuong=gv2.MucLuong
- Bối cảnh: GIAOVIEN
- Bảng tầm ảnh hưởng:
| R4 | Thêm | Xóa | Sửa |
|---|
| GIAOVIEN | + | − | +(HocVi,HeSo,MucLuong) |
3.2. Ràng buộc toàn vẹn có bối cảnh nhiều quan hệ
3.2.1. Ràng buộc tham chiếu (Khóa ngoại)
Ràng buộc tham chiếu hay còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc khóa ngoại
- Ràng buộc tham chiếu là ràng buộc quy định giá trị thuộc tính trong một bộ của quan hệ R (trong đó tập thuộc tính này gọi là khóa ngoại), phải phụ thuộc vào sự tồn tại của một bộ trong quan hệ S ( tập thuộc tính này là khóa chính trong quan hệ S).
- Nói một cách dễ hiểu khi một bảng R muốn lưu giá trị nào đó liên quan đến bảng S, thì giá trị đó phải tồn tại trong bảng R.
- Bảng R có: cột chứa giá trị tham chiếu gọi là khóa ngoại
- Bảng S có: cột chứa giá trị gốc mà bảng R tham chiếu tới gọi là khóa chính
Ví dụ R5: Học viên thi một môn học nào đó thì môn học đó phải có trong danh sách môn học.
- Nội dung: ∀k∈KETQUATHI,∃m∈MONHOC:k.MaMH=m.MaMH
- Bối cảnh: KETQUATHI, MONHOC
- Bảng tầm ảnh hưởng:
| R5 | Thêm | Xóa | Sửa |
|---|
| KETQUATHI | + | − | −(∗) |
| MONHOC | − | + | −(∗) |
Giải thích: Xóa môn học ở bảng MONHOC có thể làm bảng KETQUATHI bị "mồ côi" dữ liệu → Vi phạm.
3.2.2. Ràng buộc liên thuộc tính (giữa các bảng)
Là ràng buộc giữa các thuộc tính trên những quan hệ khác nhau
Ví dụ R6: Ngày giáo viên giảng dạy một môn phải lớn hơn hoặc bằng ngày giáo viên đó vào làm.
- Nội dung: ∀gd∈GIANGDAY:neˆˊu ∃gv∈GIAOVIEN:gd.MaGV=gv.MaGV⇒gv.NgVL≤gd.TuNgay
- Bối cảnh: GIANGDAY, GIAOVIEN
- Bảng tầm ảnh hưởng:
| R6 | Thêm | Xóa | Sửa |
|---|
| GIANGDAY | + | − | +(TuNgay) |
| GIAOVIEN | − | − | +(NgVL) |
3.2.3. Ràng buộc do thuộc tính tổng hợp
- Là ràng buộc giữa các thuộc tính, các bộ trên những quan hệ khác nhau.
- Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị của các thuộc tính khác, các bộ khác.
Ví dụ:
(Các thuộc tính in đậm là Khóa chính)
SANPHAM(MaSP,TenSP,NuocSX,Gia)
KHACHHANG(MaKH,HoTen,DoanhSo)
HOADON(SoHD,NgHD,MaKH,TriGia)
CTHD(SoHD,MaSP,SoLuong,Gia)
Doanh số của khách hàng bằng tổng trị giá các hóa đơn.
-
Bối cảnh: KHACHHANG, HOADON
-
Nội dung: ∀kh∈KHACHHANG:kh.DoanhSo=∑{hd.TriGia∣hd∈HOADON∧hd.MaKh=kh.MaKh}
-
Bảng tầm ảnh hưởng:
| Thêm | Xóa | Sửa |
|---|
| KHACHHANG | − | − | +(DoanhSo) |
| HOADON | + | + | +(TriGia) |
Bài tập (Trích đề thi cuối kỳ)
Câu hỏi: Hãy phát biểu chặt chẽ RBTV sau: "Đề tài thuộc loại cấp ĐHQG-HCM (Loại A, B, C) đã nghiệm thu (NghiemThu=1) phải có tối thiểu 2 bài báo."
-
Lược đồ: DETAI, BAIBAO_KH
-
Nội dung: ∀dt∈DETAI:(dt.LoaiDt∈{‘A’,‘B’,‘C’}∧dt.NghiemThu=1)⇒COUNT({bb∈BAIBAO_KH∣bb.MaDt=dt.MaDt})≥2
-
Bảng tầm ảnh hưởng:
| RBTV | Thêm | Xóa | Sửa |
|---|
| DETAI | − | − | +(LoaiDT,NghiemThu) |
| BAIBAO_KH | − | + | +(MaDT) |