1. Lý thuyết
Tổng quan về Normalization
Chuẩn hóa CSDL (Cơ sở dữ liệu) là quá trình tổ chức và thiết kế cơ sở dữ liệu một cách chính xác và hiệu quả. Mục tiêu của chuẩn hóa CSDL là loại bỏ các sự không chắc chắn, mâu thuẫn và lặp lại trong dữ liệu để đảm bảo tính nhất quán và độ tin cậy của cơ sở dữ liệu.
Chuẩn hóa CSDL giúp đảm bảo rằng dữ liệu trong cơ sở dữ liệu được lưu trữ và quản lý một cách hiệu quả, giảm thiểu sự mâu thuẫn, và tránh tình trạng dư thừa thông tin. Nó đảm bảo rằng mỗi mục dữ liệu chỉ được lưu trữ ở một nơi duy nhất, giúp tránh việc cập nhật dữ liệu không nhất quán và tăng tính nhất quán của cơ sở dữ liệu.
Quá trình chuẩn hóa CSDL thường bao gồm các bước sau:
Phân tích yêu cầu: Xác định yêu cầu của hệ thống và thu thập thông tin về dữ liệu cần được lưu trữ trong cơ sở dữ liệu.
Thiết kế lược đồ ER (Entity-Relationship): Sử dụng mô hình ER để biểu diễn các thực thể, mối quan hệ giữa chúng và các thuộc tính.
Chuẩn hóa bậc 1 (First Normal Form): Đảm bảo rằng mỗi ô trong bảng chỉ chứa giá trị đơn lẻ và không lặp lại.
Chuẩn hóa bậc 2 (Second Normal Form): Xác định và tách các bảng con chứa thuộc tính phụ thuộc vào một khóa không chính.
Chuẩn hóa bậc 3 (Third Normal Form): Đảm bảo rằng không có sự phụ thuộc dựa trên các thuộc tính không khóa.
Ngoài ra, còn có các bậc chuẩn hóa tiếp theo như bậc 4, bậc 5 và dạng chuẩn hóa cao hơn như Boyce-Codd Normal Form (BCNF) hoặc Fourth Normal Form (4NF). Quá trình chuẩn hóa CSDL có thể tùy chỉnh tùy theo yêu cầu và phức tạp của cơ sở dữ liệu cụ thể.
Xét ví dụ (Normalization)
| EmployeeId | ProjectId | ProjectName | EmployeeName | Grade | Salary |
|---|---|---|---|---|---|
| 142 | 113, 124 | BLUE STAR, MAGNUM | John | A | 20,000 |
| 168 | 113 | BLUE STAR | James | B | 15,000 |
| 263 | 113 | BLUE STAR | Andrew | C | 10,000 |
| 109 | 124 | MAGNUM | Bob | C | 10,000 |
Bảng trên bao gồm các điểm dị thường sau:
- Insertion Anomaly
- Deletion Anomaly
- Updation Anomaly
- Redundancy / Duplication / Repetition
Điểm dị thường về REPEATION
- Cột "ProjectId" và "ProjectName" trong bảng trên chứa các giá trị lặp lại. Ví dụ, dự án có "ProjectId" là 113 và 124 có tên là "BLUE STAR, MAGNUM". Điều này dẫn đến sự lặp lại dữ liệu trong bảng.
- Cột "Grade" tương ứng với Salary trong bảng trên cũng chứa các giá trị lặp lại. Ví dụ, nhân viên có "EmployeeId" là 109 và 263 đều có "Grade" là C và đều là 10,000. Điều này dẫn đến sự lặp lại dữ liệu trong bảng.
Điểm dị thường về INSERTION
- Cột "ProjectId" trong hàng đầu tiên có giá trị "113, 124". Điều này chỉ ra rằng một nhân viên có thể tham gia vào nhiều dự án (113 và 124). Tuy nhiên, trong các hàng tiếp theo, cột "ProjectId" chỉ chứa một giá trị duy nhất cho mỗi hàng. Điều này tạo ra sự không nhất quán trong dữ liệu khi INSERT vào bảng.
- Cột "ProjectName" trong hàng đầu tiên có giá trị "BLUE STAR, MAGNUM", chỉ ra rằng dự án này có tên gồm hai phần "BLUE STAR" và "MAGNUM". Tuy nhiên, trong các hàng tiếp theo, cột "ProjectName" chỉ chứa một tên dự án duy nhất cho mỗi hàng. Điều này cũng tạo ra sự không nhất quán trong dữ liệu khi INSERT vào bảng.
Điểm dị thường INSERTION trên liên quan đến việc chèn (INSERT) dữ liệu vào bảng, khi các giá trị của cột "ProjectId" và "ProjectName" không được đồng nhất cho các hàng tương ứng. Điều này cần được sửa chữa để đảm bảo tính nhất quán và chuẩn hóa dữ liệu trong cơ sở dữ liệu.
Điểm dị thường về DELETION
- Nếu bạn muốn xóa thông tin về một dự án cụ thể, ví dụ như dự án có "ProjectId" là 113, việc xóa dự án này sẽ không chỉ xóa hàng chứa dự án này mà còn ảnh hưởng đến các hàng khác. Ví dụ, nếu bạn xóa hàng chứa dự án có "ProjectId" là 113, thì hàng của nhân viên James và Andrew cũng sẽ bị xóa vì cả hai nhân viên này đều tham gia dự án 113. Điều này gây ra sự không nhất quán và mất mát dữ liệu trong bảng.
- Nếu bạn muốn xóa thông tin về một nhân viên cụ thể, việc xóa nhân viên này cũng sẽ ảnh hưởng đến các hàng khác. Ví dụ, nếu bạn xóa hàng chứa thông tin về nhân viên James, thì hàng của dự án có "ProjectId" là 113 cũng sẽ bị xóa vì nhân viên James tham gia dự án 113. Điều này cũng dẫn đến sự không nhất quán và mất mát dữ liệu trong bảng.
Điểm dị thường DELETION trên liên quan đến việc xóa dữ liệu trong bảng, khi việc xóa một hàng có thể ảnh hưởng đến các hàng khác trong bảng. Điều này cần được xử lý một cách thích hợp để đảm bảo tính nhất quán và bảo toàn dữ liệu trong cơ sở dữ liệu.