Tôi cố gắng giải thích sự bình thường hóa theo thuật ngữ giáo dân ở đây. Trước hết, nó là thứ áp dụng cho cơ sở dữ liệu quan hệ (Oracle, Access, MySQL) nên nó không chỉ dành cho MySQL.
Chuẩn hóa là đảm bảo mỗi bảng có các trường tối thiểu duy nhất và loại bỏ các trường phụ thuộc. Hãy tưởng tượng bạn có một hồ sơ nhân viên, và mỗi nhân viên thuộc một bộ phận. Nếu bạn lưu trữ phòng ban dưới dạng một trường cùng với dữ liệu khác của nhân viên, bạn sẽ gặp vấn đề - điều gì sẽ xảy ra nếu một phòng ban bị xóa? Bạn phải cập nhật tất cả các trường của bộ phận, và có khả năng xảy ra sai sót. Và điều gì sẽ xảy ra nếu một số nhân viên không có phòng ban (có lẽ là mới được giao?). Bây giờ sẽ có giá trị null.
Vì vậy, nói ngắn gọn, việc chuẩn hóa là để tránh có các trường là giá trị rỗng và đảm bảo rằng tất cả các trường trong bảng chỉ thuộc về một miền dữ liệu được mô tả. Ví dụ, trong bảng nhân viên, các trường có thể là id, tên, số an sinh xã hội, nhưng ba trường đó không liên quan gì đến bộ phận. Chỉ id nhân viên mới mô tả nhân viên đó thuộc bộ phận nào. Vì vậy, điều này ngụ ý rằng một nhân viên đang ở bộ phận nào nên ở trong một bảng khác.
Đây là một quy trình chuẩn hóa đơn giản.
EMPLOYEE ( < employee_id >, name, social_security, department_name)
Điều này không được chuẩn hóa, như đã giải thích. Biểu mẫu chuẩn hóa có thể trông giống như
EMPLOYEE ( < employee_id >, name, social_security)
Ở đây, bảng Nhân viên chỉ chịu trách nhiệm cho một tập dữ liệu. Vậy chúng ta lưu trữ nhân viên đó thuộc bộ phận nào? Trong một bảng khác
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )
Điều này không phải là tối ưu. Nếu tên bộ phận thay đổi thì sao? (nó xảy ra trong chính phủ Hoa Kỳ mọi lúc). Do đó, tốt hơn là làm điều này
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )
Có dạng bình thường đầu tiên, dạng bình thường thứ hai và dạng bình thường thứ ba. Nhưng trừ khi bạn đang học một khóa DB, tôi thường chỉ chọn dạng chuẩn hóa nhất mà tôi có thể hiểu được.
Hy vọng điều này sẽ hữu ích.