← Tất cả bài viết

Chuẩn hoá cơ sở dữ liệu: 1NF, 2NF, 3NF giải thích bằng ví dụ

22/07/2026

Chuẩn hoá (normalization) là quá trình tổ chức bảng để giảm trùng lặp và tránh bất thường khi thêm/sửa/xoá dữ liệu. Ba dạng chuẩn đầu tiên đã đủ cho phần lớn thiết kế thực tế.

1NF — mỗi ô một giá trị

Dạng chuẩn 1 yêu cầu mỗi ô chứa một giá trị nguyên tử, không phải danh sách. Cột phone: "090..., 091..." vi phạm 1NF — tách thành nhiều dòng hoặc bảng con.

2NF — không phụ thuộc một phần khoá

Áp dụng khi khoá chính gồm nhiều cột. 2NF yêu cầu mọi cột không khoá phải phụ thuộc vào toàn bộ khoá, không phải một phần. Ví dụ bảng (order_id, product_id, product_name) vi phạm vì product_name chỉ phụ thuộc product_id.

3NF — không phụ thuộc bắc cầu

3NF loại bỏ phụ thuộc bắc cầu: cột không khoá không được phụ thuộc vào cột không khoá khác. Ví dụ (user_id, city, zip_code) nơi city suy ra từ zip_code — nên tách bảng địa chỉ.

Khi nào phi chuẩn hoá?

Chuẩn hoá tối ưu cho tính đúng đắn khi ghi, nhưng cần nhiều JOIN khi đọc. Với hệ đọc nhiều (báo cáo, dashboard), đôi khi ta cố ý nhân bản dữ liệu (denormalize) hoặc dùng bảng tổng hợp để đọc nhanh — đánh đổi có chủ đích, không phải lười thiết kế.

👉 Dùng thử công cụ liên quan trên dev-hub: SQL Formatter — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.