Xin chào tất cả anh em, hôm nay mình sẽ giới thiệu về một chủ đề mới mà cũ, cũ với ai đã biết và mới với ai chưa biết, cùng bắt đầu luôn nhé.
- Chuẩn hóa cơ sở dữ liệu là gì? Tại sao phải làm điều này?
Theo wiki thì nó như này:
Chuẩn hóa cơ sở dữ liệu là một phương pháp khoa học để phân tách (scientific method of breaking down) một bảng có cấu trúc phức tạp (complex table structures) thành những bảng có cấu trúc đơn giản (simple table structures) theo những quy luật đảm bảo (certain rule) không làm mất thông tin dữ liệu.
Đơn giản anh em có thể hiểu đây là cách để sửa lại database, các table của anh em làm sao cho nó tối ưu nhất có thể về mặt hiệu năng cũng như lưu trữ
- Có mấy loại chuẩn hóa dữ liệu?
Thông thường có 3 loại như sau:
- Dạng chuẩn 1 (First Normal Form – 1NF)
- Dạng chuẩn 2 (Second Normal Form – 2NF)
- Dạng chuẩn 3 (Third Normal Form – 3NF)
Thực tế có đến 6 chuẩn dữ liệu, tuy nhiên khi đi làm thường các công ty hoặc team tech đa số sẽ sử dụng dạng chuẩn 2 hoặc 3 vì nó dễ sử dụng, truy vấn cũng như dễ tiếp cận nên trong bài hôm nay mình sẽ chỉ đề cập đến 3 chuẩn cơ bản thôi nhé
- Dạng 1NF
Điều kiện: Các cột và các hàng trong table chỉ chứa các giá trị nguyên tố (duy nhất)
Ta có table lưu trữ thông tin về việc thuê phim và thông tin người thuê như sau:
Ở đây ta thấy được cột movies_rented
đang chứa nhiều hơn một giá trị, vậy giải quyết điều này như nào, ta có thể làm như sau:
- Dạng 2NF
Điều kiện:
- Đạt chuẩn 1NF
- Các thuộc tính không khoá phải phụ thuộc hàm đầy đủ về mặt chức năng vào khoá chính (Nếu anh em nào chưa biết hoặc chưa nhớ phụ thuộc hàm là gì thì anh em có thể search ggle xem lại nhé)
Như ở Bảng 1.2 các thông tin về phim và người thuê vẫn đang lưu chung 1 chỗ, ta cần tách nó thành 2 table riêng, điều này giúp chúng ta xác định rõ chức năng của từng table
- Dạng 3NF
Điều kiện:
- Đạt chuẩn 2NF
- Không chứa phụ thuộc hàm bắc cầu
Nếu anh em để ý Bảng 2.1 thì khi thay đổi "full_name
” sẽ dẫn đến “saluation” bị sai hoặc thay đổi theo, cái này chính là phụ thuộc hàm bắc cầu, ta có thể xử lý việc này như sau:
Trên đây là 3 dạng chuẩn hóa dữ liệu cơ bản nhất, hi vọng bài viết có thể giúp ích anh em ít nhiều.
Một số hình ảnh và ví dụ mình có tham khảo những nguồn bên dưới, anh em nếu cần thông tin chi tiết hơn thì có thể tìm hiểu nhé:
http://huungocit.com/