Nếu bạn đã làm việc với cơ sở dữ liệu một thời gian, rất có thể bạn đã nghe đến thuật ngữ chuẩn hóa. Có lẽ ai đó đã hỏi bạn, "Cơ sở dữ liệu đó có được chuẩn hóa không?" hoặc "Đó có phải là trong BCNF không?" Bình thường hóa thường được coi là một điều xa xỉ chỉ các học giả mới có thời gian. Tuy nhiên, biết các nguyên tắc chuẩn hóa và áp dụng chúng cho các nhiệm vụ thiết kế cơ sở dữ liệu hàng ngày của bạn không phải là quá phức tạp và nó có thể cải thiện đáng kể hiệu suất của DBMS của bạn.
Trong bài viết này, chúng tôi sẽ giới thiệu khái niệm chuẩn hóa và xem xét sơ lược về các dạng chuẩn hóa phổ biến nhất.
Chuẩn hóa là gì?
Chuẩn hóa là quá trình tổ chức dữ liệu một cách hiệu quả trong cơ sở dữ liệu. Có hai mục tiêu của quá trình chuẩn hóa:loại bỏ dữ liệu thừa (ví dụ:lưu trữ cùng một dữ liệu trong nhiều bảng) và đảm bảo các phụ thuộc dữ liệu có ý nghĩa (chỉ lưu trữ dữ liệu liên quan trong một bảng). Cả hai điều này đều là những mục tiêu xứng đáng, vì chúng làm giảm dung lượng mà cơ sở dữ liệu sử dụng và đảm bảo rằng dữ liệu được lưu trữ một cách hợp lý.
Biểu mẫu thông thường
Cộng đồng cơ sở dữ liệu đã phát triển một loạt các hướng dẫn để đảm bảo rằng cơ sở dữ liệu được chuẩn hóa. Chúng được gọi là dạng bình thường và được đánh số từ một (dạng chuẩn hóa thấp nhất, được gọi là dạng chuẩn đầu tiên hoặc 1NF) đến năm (dạng chuẩn thứ năm hoặc 5NF). Trong các ứng dụng thực tế, bạn sẽ thường thấy 1NF, 2NF và 3NF, cùng với 4NF không thường xuyên. Dạng bình thường thứ năm rất hiếm khi được nhìn thấy và sẽ không được thảo luận trong bài viết này.
Trước khi chúng ta bắt đầu thảo luận về các biểu mẫu thông thường, điều quan trọng là phải chỉ ra rằng chúng chỉ là nguyên tắc và hướng dẫn. Đôi khi, cần phải đi lạc khỏi chúng để đáp ứng các yêu cầu kinh doanh thực tế. Tuy nhiên, khi các biến thể diễn ra, bạn bắt buộc phải đánh giá bất kỳ sự phân nhánh nào mà chúng có thể có trên hệ thống của bạn và giải thích các mâu thuẫn tiềm ẩn. Điều đó nói rằng, chúng ta hãy khám phá các biểu mẫu thông thường.
Dạng chuẩn đầu tiên (1NF)
Dạng chuẩn đầu tiên (1NF) đặt ra các quy tắc cơ bản cho cơ sở dữ liệu có tổ chức:
- Loại bỏ các cột trùng lặp khỏi cùng một bảng.
- Tạo các bảng riêng biệt cho từng nhóm dữ liệu có liên quan và xác định từng hàng bằng một cột hoặc tập hợp cột duy nhất (khóa chính).
Dạng chuẩn thứ hai (2NF)
Dạng chuẩn thứ hai (2NF) giải quyết thêm khái niệm loại bỏ dữ liệu trùng lặp:
- Đáp ứng tất cả các yêu cầu của biểu mẫu thông thường đầu tiên.
- Xóa các tập hợp con dữ liệu áp dụng cho nhiều hàng của bảng và đặt chúng vào các bảng riêng biệt.
- Tạo mối quan hệ giữa các bảng mới này và các bảng trước đó của chúng thông qua việc sử dụng các khóa ngoại.
Dạng chuẩn thứ ba (3NF)
Dạng chuẩn thứ ba (3NF) tiến thêm một bước quan trọng:
- Đáp ứng tất cả các yêu cầu của biểu mẫu thông thường thứ hai.
- Xóa các cột không phụ thuộc vào khóa chính.
Dạng thông thường Boyce-Codd (BCNF hoặc 3.5NF)
Biểu mẫu thông thường Boyce-Codd, còn được gọi là "biểu mẫu thông thường thứ ba và một nửa (3.5)," thêm một yêu cầu nữa:
- Đáp ứng tất cả các yêu cầu của biểu mẫu thông thường thứ ba.
- Mọi yếu tố quyết định phải là một khóa ứng viên.
Dạng chuẩn thứ tư (4NF)
Cuối cùng, biểu mẫu bình thường thứ tư (4NF) có một yêu cầu bổ sung:
- Đáp ứng tất cả các yêu cầu của biểu mẫu thông thường thứ ba.
- Một quan hệ nằm trong 4NF nếu nó không có phụ thuộc nhiều giá trị.
Hãy nhớ rằng, các nguyên tắc chuẩn hóa này là tích lũy. Để cơ sở dữ liệu nằm trong 2NF, trước tiên nó phải đáp ứng tất cả các tiêu chí của cơ sở dữ liệu 1NF.
Tôi có nên chuẩn hóa không?
Mặc dù chuẩn hóa cơ sở dữ liệu thường là một ý tưởng hay, nhưng nó không phải là một yêu cầu tuyệt đối. Có một số trường hợp cố tình vi phạm các quy tắc chuẩn hóa là một thông lệ tốt.
Nếu bạn muốn đảm bảo cơ sở dữ liệu của mình được chuẩn hóa, hãy bắt đầu với việc tìm hiểu cách đặt cơ sở dữ liệu của bạn vào Biểu mẫu Thông thường Đầu tiên.