Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

Quy tắc toàn vẹn thực thể (Entity Integrity Rule) trong RDBMS


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

  1. Mỗi bảng **phải có** một Primary Key (Khóa chính).
  2. Primary Key **không được chứa giá trị NULL**.
  3. Giá trị Primary Key **phải duy nhất** cho mỗi hàng (không trùng lặp).
  4. 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
S001AnGiải Nhất
S002BìnhNULL
S003CườngGiải Ba

Phân tích:

  • Student_ID là PK: Duy nhất, không NULL -> Đúng quy tắc.
  • Student_Awards KHÔ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
E001Nam28Hà Nội
E002Lan32TP.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ầuGiải thích
Mỗi tuple duy nhấtKhông có 2 hàng giống hệt nhau về PK.
Mỗi bảng có PKBắt buộc định nghĩa PRIMARY KEY.
PK NOT NULLTất cả cột trong PK đều NOT NULL.
PK UniqueGiá trị PK không trùng lặp.
Thực thể duy nhấtMỗ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 NULL tườ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).