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