Scroll to top
Tìm hiểu về chuẩn hóa cơ sở dữ liệu - Lý do, phương pháp và lợi ích

Tìm hiểu về chuẩn hóa cơ sở dữ liệu - Lý do, phương pháp và lợi ích

ByAdmin 2023-09-12 16:52
14 min read

Tìm hiểu về sự cần thiết của việc chuẩn hóa cơ sở dữ liệu. Bài viết này giới thiệu về lý do, các phương pháp chuẩn hóa khác nhau và lợi ích mà quá trình này mang lại cho dự án.

Giới thiệu về Chuẩn hóa cơ sở dữ liệu

Trong thế giới số hóa ngày nay, dữ liệu trở thành trung tâm của hầu hết mọi hoạt động kinh doanh và nghiên cứu. Để dữ liệu có thể được lưu trữ và sử dụng một cách hiệu quả, chúng ta cần đến việc chuẩn hóa cơ sở dữ liệu. Nhưng chuẩn hóa cơ sở dữ liệu là gì và tại sao nó lại quan trọng đến vậy? Chúng ta hãy cùng tìm hiểu nhé.

Chuẩn hóa cơ sở dữ liệu là gì?

Chuẩn hóa cơ sở dữ liệu là kĩ thuật tổ chức dữ liệu trong cơ sở dữ liệu. Đây là quá trình tái cấu trúc cơ sở dữ liệu theo một số quy tắc và tiêu chuẩn nhất định, nhằm loại bỏ dữ liệu trùng lặp, tối ưu hóa lưu trữ và đảm bảo tính nhất quán, độ tin cậy của dữ liệu.

Tầm quan trọng của việc chuẩn hóa cơ sở dữ liệu

Khi không được chuẩn hóa, cơ sở dữ liệu có thể chứa nhiều thông tin trùng lặp, gây lãng phí về không gian lưu trữ và tạo ra khả năng xảy ra lỗi khi cập nhật dữ liệu. Đồng thời, việc truy vấn dữ liệu cũng trở nên khó khăn hơn. Chuẩn hóa giúp khắc phục những vấn đề này, giúp cơ sở dữ liệu trở nên linh hoạt, dễ dàng mở rộng và bảo trì.

Chuẩn hóa không chỉ là một bước quan trọng trong quá trình thiết kế cơ sở dữ liệu, mà còn là một công cụ giúp các nhà phát triển và quản trị viên cơ sở dữ liệu đảm bảo rằng dữ liệu được lưu trữ một cách tối ưu nhất.

Các dạng chuẩn hóa cơ sở dữ liệu

file

Có 4 dạng chuẩn hóa cơ sở dữ liệu cơ bản, được sắp xếp từ thấp đến cao, đó là 1NF, 2NF, 3NF, BCNF.

Để chuẩn hóa 2NF thì CSDL phải đạt chuẩn 1NF, để đạt chuẩn 3NF thì CSDL phải đạt chuẩn 1NF và 2NF, và tương tự để đạt chuẩn BCNF thì phải chuẩn 1NF, 2NF và 3NF.

Ví dụ ban đầu: Giả sử chúng ta có một bảng dữ liệu về các sinh viên, các khóa học mà họ tham gia, và giảng viên dạy mỗi khóa học:

Mã sinh viên Tên sinh viên Khóa học Giảng viên
SV01 Thiện Toán, Văn Nga, Thu
SV02 Toàn Toán Nga

Dạng chuẩn 1NF (First Normal Form)

Chuẩn 1NF là khi mỗi bảng chỉ nên chứa thông tin về một chủ đề duy nhất và mỗi cột chỉ chứa một loại thông tin.

Ở ví dụ trên chưa đạt chuẩn 1NF, bởi vì cột Khóa họcGiảng viên đang chứa nhiều giá trị trong một ô.

Để đạt chuẩn 1NF thì ta tách các giá trị trong cột Khóa họcGiảng viên ra sao cho mỗi khóa học và giảng viên chỉ chiếm một hàng.

Kết quả đã chuẩn 1NF:

Mã sinh viên Tên sinh viên Khóa học Giảng viên
SV01 Thiện Toán Nga
SV01 Thiện Văn Thu
SV02 Toàn Toán Nga

Dạng chuẩn 2NF (Second Normal Form)

Chuẩn 2NF là khi đã đạt chuẩn 1NF, và các thuộc tính không phải khóa (non-key attribute) phải phụ thuộc hoàn toàn vào khóa chính (primary key).

Ở ví dụ hiện tại, Mã sinh viên giống như một số CMND - nó là duy nhất cho mỗi sinh viên. Khi bạn biết Mã sinh viên, bạn có thể biết được Tên sinh viên mà không cần biết họ đã đăng ký khóa học nào hoặc khóa học đó do giảng viên nào dạy. Nhưng trong bảng hiện tại, tên của sinh viên Thiện lại xuất hiện hai lần chỉ vì anh ấy đăng ký hai khóa học khác nhau. Điều này không hiệu quả và gây lãng phí không gian lưu trữ.

Để đạt chuẩn 2NF thì ta tách thông tin về sinh viên ra khỏi thông tin về việc đăng ký khóa học để tránh lặp lại tên sinh viên.

Kết quả đã chuẩn 2NF:

Bảng Sinh viên:

Mã sinh viên Tên sinh viên
SV01 Thiện
SV02 Toàn

Bảng Đăng ký môn học:

Mã sinh viên Khóa học Giảng viên
SV01 Toán Nga
SV01 Văn Thu
SV02 Toán Nga

Dạng chuẩn 3NF (Third Normal Form)

Chuẩn 3NF là khi đã đạt chuẩn 2NF, và các thuộc tính không phải khóa chỉ phụ thuộc vào khóa chính và không phụ thuộc vào các thuộc tính không phải khóa khác.

Ở ví dụ hiện tại, trong bảng Đăng ký môn học, giảng viên dạy một môn học cụ thể (ví dụ: Nga dạy Toán) không thay đổi dựa vào sinh viên nào đăng ký. Tuy nhiên, tên giảng viên lại lặp lại mỗi lần một sinh viên đăng ký môn học đó.

Để đạt chuẩn 3NF thì ta tách thông tin về môn học và giảng viên ra khỏi bảng Đăng ký môn học để tránh lặp lại thông tin giảng viên.

Kết quả đã chuẩn 3NF:

Bảng Sinh viên:

Mã sinh viên Tên sinh viên
SV01 Thiện
SV02 Toàn

Bảng Môn học:

Môn học Giảng viên
Toán Nga
Văn Thu

Bảng Đăng ký môn học:

Mã sinh viên Môn học
SV01 Toán
SV01 Văn
SV02 Toán

Dạng chuẩn BCNF (Boyce-Codd Normal Form):

Chuẩn BCNF là khi đã đạt chuẩn 3NF, và đảm bảo rằng trong mỗi bảng, chỉ có khóa (hoặc một tập hợp các thuộc tính làm khóa) mới có thể xác định các thông tin khác, chứ không phải ngược lại.

Ở ví dụ hiện tại, trong bảng Môn học, mỗi giảng viên chỉ dạy một môn học duy nhất. Điều này có nghĩa là, chỉ cần biết tên giảng viên, ta đã có thể xác định được môn học mà họ dạy. Tuy nhiên, Giảng viên không phải là khóa của bảng, mà lại có thể xác định một thuộc tính khác (Môn học). Điều này vi phạm BCNF.

Để đạt chuẩn BCNF thì chúng ta sẽ tách dữ liệu liên quan đến Môn họcGiảng viên thành ba bảng riêng biệt:

  • Một bảng chứa thông tin về giảng viên.
  • Một bảng chứa thông tin về môn học.
  • Một bảng liên kết giữa giảng viên và môn học mà họ dạy.

Kết quả đã chuẩn BCNF:

  1. Bảng Sinh viên: Chứa thông tin về sinh viên.
Mã sinh viên Tên sinh viên
SV01 Thiện
SV02 Toàn
  1. Bảng Giảng viên: Chứa thông tin về giảng viên.
Mã giảng viên Tên giảng viên
GV01 Nga
GV02 Thu
  1. Bảng Môn học: Chứa thông tin về môn học.
Mã môn học Môn học
MH01 Toán
MH02 Văn
  1. Bảng Giảng dạy: Liên kết giữa giảng viên và môn học mà họ dạy.
Mã giảng viên Mã môn học
GV01 MH01
GV02 MH02
  1. Bảng Đăng ký môn học: Theo dõi mỗi sinh viên đã đăng ký môn học nào.
Mã sinh viên Mã môn học
SV01 MH01
SV01 MH02
SV02 MH01

Kết luận

Chuẩn hóa cơ sở dữ liệu là một quá trình cần thiết và quan trọng, giúp tối ưu hóa việc lưu trữ và truy vấn dữ liệu, đồng thời giảm thiểu sự trùng lặp và nguy cơ xảy ra lỗi. Qua bài viết này, chúng ta đã cùng nhau tìm hiểu về các dạng chuẩn hóa từ 1NF đến BCNF, cùng với ví dụ cụ thể để minh họa.

Nhớ rằng, mặc dù việc chuẩn hóa mang lại nhiều lợi ích, nhưng nó không phải lúc nào cũng cần thiết phải thực hiện đến mức tối đa. Trong một số trường hợp, việc giữ dữ liệu ở dạng không chuẩn hoá có thể phù hợp hơn với mục tiêu cụ thể của ứng dụng hoặc hệ thống.

Tuy nhiên, việc nắm vững các nguyên tắc chuẩn hóa sẽ giúp bạn có những quyết định thông minh hơn trong thiết kế cơ sở dữ liệu, đảm bảo dữ liệu được lưu trữ một cách hiệu quả và chính xác.

Cảm ơn bạn đã theo dõi bài viết! Hy vọng rằng nó sẽ giúp ích cho bạn trong việc thiết kế và quản lý cơ sở dữ liệu của mình.

Đánh giá bài viết: 5/5 (25 đánh giá)
Bạn chưa đánh giá

Bình luận

Author
hoclaptrinh.io author
Tác giả:Yuto Yasunaga

Mình là một full stack developer, tốt nghiệp và làm việc tại Nhật Bản. Trang web này là nơi mình tổng hợp, đúc kết và lưu trữ lại những kiến thức trong quá trình học và làm việc liên quan đến IT.
Hy vọng những bài viết ở website này sẽ có ích cho bạn.