Entity Integrity Rule (Quy tắc toàn vẹn thực thể) là quy tắc cơ bản trong mô hình quan hệ đảm bảo mỗi thực thể (entity/tuple/hàng) trong bảng là **duy nhất** và **có thể nhận diện được**.
Nội dung quy tắc
- Mỗi bảng **phải có** một Primary Key (Khóa chính).
- Primary Key **không được chứa giá trị NULL**.
- Giá trị Primary Key **phải duy nhất** cho mỗi hàng (không trùng lặp).
- Mỗi tuple (hàng) đại diện cho một thực thể duy nhất trong thế giới thực.
Ví dụ 1: Bảng Student
| Student_ID (PK) | Student_Name | Student_Awards |
|---|---|---|
| S001 | An | Giải Nhất |
| S002 | Bình | NULL |
| S003 | Cường | Giải Ba |
Phân tích:
Student_IDlà PK: Duy nhất, không NULL -> Đúng quy tắc.Student_AwardsKHÔNG thể làm PK: Có giá trị NULL (Bình chưa giải thưởng) và có thể trùng (nhiều người cùng giải Nhất).
Ví dụ 2: Bảng Employee
| Employee_ID (PK) | Employee_Name | Employee_Age | Employee_Location |
|---|---|---|---|
| E001 | Nam | 28 | Hà Nội |
| E002 | Lan | 32 | TP.HCM |
Employee_ID là PK: Duy nhất, NOT NULL -> Tuân thủ Entity Integrity.
Tóm tắt Entity Integrity Rule
| Yêu cầu | Giải thích |
|---|---|
| Mỗi tuple duy nhất | Không có 2 hàng giống hệt nhau về PK. | Mỗi bảng có PK | Bắt buộc định nghĩa PRIMARY KEY. |
| PK NOT NULL | Tất cả cột trong PK đều NOT NULL. |
| PK Unique | Giá trị PK không trùng lặp. |
| Thực thể duy nhất | Mỗi hàng = 1 thực thể thực tế duy nhất. |
| Ví dụ | Employee_ID không được NULL trong bảng Employee. |
Tại sao quan trọng?
- Đảm bảo **addressability**: Mọi hàng đều có thể truy cập trực tiếp qua PK.
- Cơ sở cho **Referential Integrity** (FK tham chiếu đến PK phải hợp lệ).
- Tránh dữ liệu trùng lặp, mơ hồ (duplicate, ambiguous).
- Hỗ trợ indexing, join hiệu quả.
Vi phạm thường gặp
- Quên định nghĩa PK khi
CREATE TABLE. - Cho phép NULL trên cột PK (DB cho phép nếu không khai báo
NOT NULLtường minh). - Insert trùng PK (lỗi duplicate key).
- Dùng composite PK nhưng một cột thành phần bị NULL.
Lưu ý: Entity Integrity áp dụng cho **Primary Key**. Unique Key/Alternate Key cho phép NULL (tùy DBMS, thường cho phép 1 NULL).