Chương 5: Ràng Buộc Toàn Vẹn (RBTV)


1. Giới thiệu

Ràng buộc toàn vẹn (RBTV) là những yêu cầu (điều kiện) mà tất cả thể hiện của quan hệ (tức là toàn bộ dữ liệu trong bảng tại mọi thời điểm) phải thỏa mãn.

Mục đích

  • Đảm bảo tính đúng đắn về mặt ngữ nghĩa: Dữ liệu lưu trữ phải phản ánh đúng thực tế nghiệp vụ. Ví dụ: điểm không thể âm, ngày kết thúc không thể trước ngày bắt đầu.
  • Đảm bảo tính nhất quán: Dữ liệu giữa các bảng không được mâu thuẫn nhau.

Nguồn gốc của RBTV

  • Từ yêu cầu quản lý thực tế: Ví dụ điểm thi từ 0–10, ngày giao hàng phải sau ngày đặt hàng, lương tối thiểu theo thâm niên…
  • Từ mô hình dữ liệu quan hệ: Khóa chính (Primary Key), khóa ngoại (Foreign Key).

2. Các đặc trưng của RBTV

Mỗi RBTV được mô tả bởi 3 đặc trưng:

2.1 Nội dung

Phát biểu RBTV bằng ngôn ngữ hình thức: phép tính quan hệ, đại số quan hệ, hoặc mã giả. Nội dung cho biết điều kiện cụ thể cần phải thỏa mãn.

2.2 Bối cảnh

Là tập hợp các quan hệ (bảng) có khả năng làm vi phạm RBTV khi có thao tác thêm/xóa/sửa xảy ra trên chúng.

2.3 Bảng tầm ảnh hưởng (BTAH)

Là bảng 2 chiều, liệt kê các quan hệ trong bối cảnh và xác định với mỗi thao tác (Thêm/Xóa/Sửa) thì thao tác đó có thể vi phạm hay không thể vi phạm RBTV.

Quan hệThêmXóaSửa
Quan hệ 1++- (*)
Quan hệ n--+ (A)

Ký hiệu:

Ký hiệuÝ nghĩa
+Thao tác có thể gây vi phạm RBTV → cần kiểm tra
-Thao tác không thể gây vi phạm RBTV → không cần kiểm tra
+ (A)Có thể vi phạm khi sửa thuộc tính A cụ thể
- (*)Không thể vi phạm vì thao tác không thực hiện được (thường là sửa khóa chính — bị cấm)

3. Phân loại RBTV

graph TD A[Ràng buộc toàn vẹn] --> B[1. Bối cảnh trên 1 quan hệ] A --> C[2. Bối cảnh trên nhiều quan hệ] B --> B1[Miền giá trị] B --> B2[Liên thuộc tính] B --> B3[Liên bộ] C --> C1[Khóa ngoại] C --> C2[Liên thuộc tính liên quan hệ] C --> C3[Liên bộ liên quan hệ] C --> C4[Do thuộc tính tổng hợp] C --> C5[Do chu trình]

4. RBTV có bối cảnh trên 1 quan hệ

4.1 RBTV Miền giá trị

Định nghĩa: Quy định miền giá trị hợp lệ của một thuộc tính — tức là thuộc tính đó chỉ được nhận các giá trị trong một tập hoặc khoảng xác định.




4.2 RBTV Liên thuộc tính

Định nghĩa: Ràng buộc giữa các thuộc tính khác nhau trong cùng một quan hệ — giá trị của thuộc tính này phụ thuộc hoặc phải thỏa điều kiện so với giá trị của thuộc tính kia.




4.3 RBTV Liên bộ

Định nghĩa: Ràng buộc giữa các bộ (hàng) khác nhau trong cùng một quan hệ — tức là giá trị của các bộ phải thỏa mãn điều kiện nào đó khi đặt cạnh nhau.

Các loại phổ biến:

  • Khóa chính: Mỗi bộ phân biệt nhau bởi giá trị khóa.
  • Unique (duy nhất): Một thuộc tính không phải khóa cũng phải có giá trị duy nhất.
  • Ràng buộc về số bộ: Giới hạn số lượng bộ thỏa điều kiện nào đó.





5. RBTV có bối cảnh trên nhiều quan hệ

5.1 RBTV Khóa ngoại (Foreign Key)

Định nghĩa: Còn gọi là ràng buộc tham chiếu hay ràng buộc tồn tại. Giá trị của thuộc tính ở quan hệ này phải tồn tại ở quan hệ kia (được tham chiếu đến).



5.2 RBTV Liên thuộc tính liên quan hệ

Định nghĩa: Ràng buộc so sánh giá trị giữa các thuộc tính thuộc các quan hệ khác nhau.




5.3 RBTV Liên bộ liên quan hệ

Định nghĩa: Ràng buộc về số lượng bộ hoặc sự tồn tại của bộ giữa các quan hệ khác nhau.




5.4 RBTV do thuộc tính tổng hợp

Định nghĩa: Ràng buộc liên quan đến thuộc tính tính toán (derived attribute) — giá trị của thuộc tính này phải bằng kết quả tính toán từ các thuộc tính khác ở quan hệ khác.



5.5 RBTV do sự hiện diện của chu trình

Định nghĩa: Xảy ra khi có chu trình tham chiếu giữa các quan hệ — quan hệ A tham chiếu B và B tham chiếu lại A (hoặc qua trung gian). Chu trình này tạo ra ràng buộc kết hợp phức tạp hơn ràng buộc tham chiếu thông thường.




6. Bảng tầm ảnh hưởng tổng hợp

Khi có m ràng buộc trên n quan hệ, ta lập bảng tổng hợp:

QH₁QH₂QHₙ
RBTVTXSTXSTXS
R₁
R₂
Rₘ

7. Cài đặt RBTV trong CSDL

flowchart TD A[RBTV cần cài đặt] --> B{Bối cảnh trên mấy quan hệ?} B -->|1 quan hệ| C[Dùng CONSTRAINT\ntrong CREATE TABLE] B -->|Nhiều quan hệ| D[Dùng TRIGGER]
Loại RBTVCơ chế cài đặtVí dụ SQL
Miền giá trịCHECK constraintCHECK (GT IN ('Nam', 'Nu'))
Khóa chínhPRIMARY KEYPRIMARY KEY (MaNV)
UniqueUNIQUEUNIQUE (TenPhong)
Khóa ngoạiFOREIGN KEYFOREIGN KEY (TrPhong) REFERENCES NHANVIEN(MaNV)
Liên quan hệ phức tạpTRIGGERViết trigger kiểm tra sau INSERT/UPDATE/DELETE

8. Tổng kết

mindmap root((RBTV)) Giới thiệu Đảm bảo đúng ngữ nghĩa Đảm bảo nhất quán Đặc trưng Nội dung Bối cảnh Bảng tầm ảnh hưởng Phân loại 1 quan hệ Miền giá trị Liên thuộc tính Liên bộ Nhiều quan hệ Khóa ngoại Liên thuộc tính liên QH Liên bộ liên QH Thuộc tính tổng hợp Chu trình Cài đặt CONSTRAINT TRIGGER