Primary Key và Unique: Giải thích sự khác biệt chính

Điểm giống nhau Primary Key và Unique:

  1. Đảm bảo tính duy nhất của các giá trị: Cả Primary Index (hay còn gọi là Primary Key) và Unique Index đều đảm bảo rằng không có hai hàng nào trong bảng có cùng giá trị trong cột hoặc tập hợp các cột mà chúng được áp dụng. Điều này có nghĩa là giá trị trong các cột đó phải duy nhất cho mỗi hàng.
  2. Được sử dụng để tối ưu hóa hiệu suất truy vấn: Cả Primary Index và Unique Index đều có thể giúp tối ưu hóa hiệu suất của các truy vấn bằng cách sử dụng index để truy xuất dữ liệu nhanh hơn thay vì phải duyệt toàn bộ bảng.

Điểm khác nhau Primary Key và Unique:

Đặc điểmPrimary Index (Primary Key)Unique Index
Bản chấtLà một loại ràng buộc (constraint) xác định khóa chính của bảng, đảm bảo tính duy nhất và không cho phép giá trị NULL.Là một dạng chỉ mục (index) đặc biệt đảm bảo rằng các giá trị trong cột hoặc nhóm cột được chỉ định là duy nhất, nhưng có thể cho phép giá trị NULL.
Giá trị NULLKhông cho phép giá trị NULL trong bất kỳ hàng nào.Cho phép giá trị NULL, nhưng các giá trị không phải NULL phải là duy nhất.
Chỉ một hay nhiều?Mỗi bảng chỉ có thể có một Primary Index (Primary Key).Một bảng có thể có nhiều Unique Index trên các cột khác nhau.
Mục đíchĐược sử dụng để xác định duy nhất mỗi hàng trong bảng và thường được sử dụng làm khóa chính cho bảng (để liên kết với các bảng khác).Được sử dụng để đảm bảo các giá trị trong cột hoặc nhóm cột là duy nhất nhưng không phải là khóa chính của bảng.
Liên kết với các bảng khácThường được sử dụng làm khóa chính (primary key) và có thể được liên kết với các bảng khác thông qua khóa ngoại (foreign key).Không thường được sử dụng để liên kết với các bảng khác thông qua khóa ngoại.

Ví dụ:

Primary Index (Primary Key):

sql

CREATE TABLE employees (
  id INT PRIMARY KEY,  -- Primary Key, giá trị id phải duy nhất và không được NULL
  name VARCHAR(100)
);

Unique Index:

sql

CREATE TABLE employees (
  id INT,
  email VARCHAR(100),
  UNIQUE (email)  -- Unique Index, giá trị email phải duy nhất nhưng có thể NULL
);

Tóm lại:

  • Primary Key không cho phép giá trị NULL và mỗi bảng chỉ có một primary key.
  • Unique Index có thể cho phép giá trị NULL và một bảng có thể có nhiều unique index.