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êm
Xóa
Sử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ₙ
RBTV
T
X
S
T
X
S
…
T
X
S
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 RBTV
Cơ chế cài đặt
Ví dụ SQL
Miền giá trị
CHECK constraint
CHECK (GT IN ('Nam', 'Nu'))
Khóa chính
PRIMARY KEY
PRIMARY KEY (MaNV)
Unique
UNIQUE
UNIQUE (TenPhong)
Khóa ngoại
FOREIGN KEY
FOREIGN KEY (TrPhong) REFERENCES NHANVIEN(MaNV)
Liên quan hệ phức tạp
TRIGGER
Viế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