Tìm hiểu về chuẩn hóa cơ sở dữ liệu
Bài đăng này đã không được cập nhật trong 6 năm
Chuẩn hóa cơ sở dữ liệu
Chuẩn hóa cơ sở dữ liệu là một kĩ thuật tổ chức dữ liệu trong cơ sở dữ liệu. Chuẩn hóa là một cách tiếp cận có hệ thống của các bảng để loại bỏ sự dư thừa dữ liệu (sự lặp lại) và các đặc điểm không mong muốn như thêm, Cập nhật và Xóa. Đó là một quá trình gồm nhiều bước để đưa dữ liệu vào dạng bảng, loại bỏ dữ liệu trùng lặp khỏi các bảng quan hệ.
Chuẩn hóa được dùng với 2 mục đích chính: - Loại bỏ dữ liệu dư thừa - Đảm bảo phụ thuộc dữ liệu có nghĩa là dữ liệu được lưu trữ hợp lí.
Các vấn đề nếu không có chuẩn hóa: Nếu một bảng không được chuẩn hóa và có dữ liệu dư thừa thì nó sẽ làm tốn dung lượng bộ nhớ và cũng sẽ gây khó khăn trong việc sử lí và cập nhật cơ sở dữ liệu, mà không phải đối diện với việc mất dữ liệu. Thêm, cập nhật và xóa dữ liệu bất thường phải thường xuyên nếu cơ sở dữ liệu không được chuẩn hóa. Để hiểu hơn các dị thường này hãy cùng xem một ví dụ về bảng Student.
rollno | name | branch | hod | office_tel |
---|---|---|---|---|
401 | Akon | CSE | Mr.X | 53337 |
402 | Bkon | CSE | Mr.X | 53337 |
403 | Ckon | CSE | Mr.X | 53337 |
404 | Dkon | CSE | Mr.X | 53337 |
Trong bảng trên, chúng ta thấy có 4 bản ghi. Như chúng ta có thể thấy, dữ liệu ở hai trường branch, hod và official_tel được lặp lại cho các sinh viên có cùng branch trong trường, đây chính là dư thừa dữ liệu.
Bất thường khi thêm dữ liệu
Giả sử với một lần nhập học mới, cho đến khi hoặc trừ khi sinh viên chọn một branch, dữ liệu của sinh viên không thể được thêm, còn không thì chúng ta sẽ phải để thông tin của branch là NULL. Cũng như thế, nếu chúng ta phải thêm 100 sinh viên vào cùng một branch, thì thông tin của branch đó sẽ bị lặp lại cho cả 100 sinh viên. Các trường hợp này chính là bất thường khi thêm dữ liệu.
Bất thường khi cập nhật dữ liệu
Điêuf gì xaỷ ra khi Mr.X rời trường? hoặc là không còn laf trưởng khoa khoa học máy tính? Trong trường hợp đó tất cả các bản ghi sinh viên sẽ phải được cập nhật, và nếu chúng ta bỏ sót vài bản ghi vì lỗi gì đó, nó sẽ dẫn đến xung đột dữ liệu. Đây chinhs là bâts thường khi cập nhật dữ liệu.
Bất thường khi xóa dữ liệu
Trong bảng student, 2 thông tin khác nhau được lưu trữ cùng nhau, Student information và Branch information. Vì thế, vào cuối năm học, nếu bản ghi student bị xóa chúng ta cũng sẽ mất branch information. Đây là bất thường khi xóa dữ liệu.
Quy tắc chuẩn hóa
Các quy tắc chuẩn hóa được chia thành các dạng sau:
- First Normal Form
- Second Normal Form
- Third Normal Form
- BCNF
- Fourth Normal Form Tuy nhiên, chúng ta chỉ tìm hiểu về 1NF, 2NF, 3NF, và BCNF.
First normal form (1NF)
Để một bảng ở dạng chuẩn 1NF, cần tuân theo 4 quy tắc sau:
-
Nó chỉ nên có các thuộc tính / cột là đơn trị:
-
Các giá trị được lưu trữ trong một cột phải cùng tên miền
-
Tất cả các cột trong một bảng nên có tên duy nhất.
-
Và thứ tự lưu trữ dữ liệu, không phải là vấn đề
Sau đây là một ví dụ về chuẩn 1NF để các bạn dễ hình dung hơn, ta có bảng sau:
rollno | name | subject |
---|---|---|
101 | Akon | OS, CN |
102 | Bkon | Java |
103 | Ckon | C, C++ |
Bảng trên đã đáp ứng 3 quy tắc trong số 4 quy tắc, vì tất cả các tên cột là duy nhất, dữ liệu lưu trữ theo thứ tự mình muốn và không trộn lẫn các loại dữ liệu khác nhau trong các cột. Nhưng trong 3 sinh viên, có 2 sinh viên chọn 3 môn học và môn học được lưu trong cùng một cột, vi phạm quy tắc các cột chỉ bao gồm các đơn trị. Để giải quyết vấn đề trên thì đơn giản bởi vì chúng ta chỉ cần tách các giá trị thành các giá trị đơn.
rollno | name | subject |
---|---|---|
101 | Akon | OS |
102 | Bkon | Java |
103 | Ckon | C |
101 | Akon | CN |
103 | Ckon | C++ |
Bằng cách làm như vậy, mặc dù một vài giá trị đang được lặp lại nhưng các giá trị cho cột chủ đề hiện là nguyên tử cho mỗi bản ghi / hàng.
Second Normal Form (2NF)
Bảng ở dạng chuẩn 2NF Trước hết là phải chuẩn 1NF và không có phụ thuộc một phần. Dữ liệu ở dạng chuẩn 1NF có dữ liệu dư thừa tăng, vì sẽ có nhiều cột có cùng dữ liệu trong nhiều hàng nhưng mỗi hàng sẽ là duy nhất.
Third Normal Form (3NF)
Bảng ở dạng chuẩn 3NF Trước hết là phải chuẩn 2NF và không có phụ thuộc bắc câù.
Boyce and Codd Normal Form (BCNF)
Boyce và Codd Form Form là phiên bản cao hơn của 3NF. Chuẩn này liên quan đến một số loại dị thường không được xử lý bởi 3NF. Một bảng 3NF không có nhiều khóa ứng viên chồng chéo được cho là trong BCNF. Để bảng là chuẩn BCNF, các điều kiện sau phải được thỏa mãn:
- R phải ở dạng chuẩn 3NF
- Đối với mỗi phụ thuộc chức năng (X → Y), X phải là một siêu khóa.
All rights reserved