0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Chi Tiết Về Chuẩn Hóa Cơ Sở Dữ Liệu (DBMS) - Tối Ưu Thiết Kế Quan Hệ Dữ Liệu

Đăng vào 1 tuần trước

• 5 phút đọc

Khái Niệm về Chuẩn Hóa Cơ Sở Dữ Liệu

Thiết kế cơ sở dữ liệu (database) là một quy trình phức tạp, bao gồm nhiều bước từ việc xác định yêu cầu đến việc xây dựng cơ sở dữ liệu vật lý. Quy trình thiết kế cơ sở dữ liệu có thể được tóm tắt như sau:

  • Phân Tích Yêu Cầu (Requirement Analysis): Thu thập và phân tích các yêu cầu từ người dùng.
  • Mô Hình Hóa Dữ Liệu (Data Modeling): Tạo ra mô hình thực thể - mối quan hệ (ERD) để đại diện cho các thực thể (entities), thuộc tính (attributes) và mối quan hệ (relationships). Xác định khóa chính (primary key) và thuộc tính phụ (foreign key).
  • Thiết Kế Logic (Logical Design): Chuyển mô hình ERD thành mô hình quan hệ và tiến hành chuẩn hóa (1NF, 2NF, 3NF, BCNF…) nhằm loại bỏ sự dư thừa dữ liệu và tăng cường tính toàn vẹn cho hệ thống.
  • Thiết Kế Vật Lý (Physical Design): Thiết kế các bảng (tables), khóa chính, khóa ràng buộc (constraint key), chỉ mục (index) và cấu trúc lưu trữ.
  • Triển Khai (Implementation): Tạo database và thực hiện kiểm thử (testing) cho dữ liệu.
  • Tối Ưu Hóa và Bảo Trì (Optimization & Maintenance): Tối ưu hóa hiệu suất, sao lưu và bảo trì cơ sở dữ liệu.
  • Tài Liệu Hóa (Documentation): Ghi lại quá trình thiết kế và hướng dẫn sử dụng.

Bài viết này sẽ tập trung vào quy trình chuẩn hóa (1NF, 2NF, 3NF, BCNF…) trong thiết kế cơ sở dữ liệu.

Chuẩn hóa cơ sở dữ liệu (Database Normalization) là quá trình biểu diễn dữ liệu theo các tiêu chuẩn nhất định nhằm loại bỏ sự trùng lặp dữ liệu, tối ưu hóa lưu trữ và đảm bảo tính nhất quán cũng như độ tin cậy của dữ liệu. Khái niệm Database Normalization được phát triển bởi hai nhà khoa học máy tính nổi tiếng Edgar F. Codd và Raymond F. Boyce, và là một phần quan trọng của thiết kế quan hệ cơ sở dữ liệu. Có nhiều loại chuẩn hóa được sắp xếp từ thấp đến cao: 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, và 6NF.

Để đạt chuẩn 2NF, cơ sở dữ liệu của chúng ta phải đạt chuẩn 1NF. Tương tự, để có chuẩn 3NF, cơ sở dữ liệu phải đạt chuẩn 1NF và 2NF. Chuẩn BCNF bao gồm cả 3 loại chuẩn: 1NF, 2NF, và 3NF.

Các Loại Chuẩn Hóa Trong DBMS và Ví Dụ Cụ Thể

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

Mỗi cột trong bảng phải chứa một giá trị duy nhất và mỗi dòng (record) phải là duy nhất mà không có sự trùng lặp.

Ví dụ:

Copy
StudentID   StudentName   Courses
1           John Smith     Math, Science, History
2           Jane Doe      English, Math
3           Emily Clark    History, Art

Vấn đề: Cột Courses chứa nhiều giá trị trong cùng một ô, điều này cần phải chuẩn hóa:

Copy
StudentID   StudentName   Course
1           John Smith     Math
1           John Smith     Science
1           John Smith     History
2           Jane Doe      English
2           Jane Doe      Math
3           Emily Clark    History
3           Emily Clark    Art 

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

Loại bỏ sự phụ thuộc một phần vào khóa chính khi khóa chính là khóa tổ hợp (composite key). Mọi thuộc tính cần phải phụ thuộc hoàn toàn vào khóa chính.

Ví dụ:

Copy
OrderID   ProductID   ProductName   Quantity   Price
1         101         Laptop        2          1500
1         102         Mouse         1          20

Vấn đề: Thuộc tính ProductName chỉ phụ thuộc vào ProductID, không phụ thuộc vào cả OrderID và ProductID. Chuẩn hóa cần như sau:

Copy
OrderID   ProductID   Quantity
1         101         2
1         102         1

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

Mọi thuộc tính không khóa cần phụ thuộc trực tiếp vào khóa chính và không phụ thuộc vào các thuộc tính không khóa khác.

Ví dụ:

Copy
StudentID   StudentName   ClassID   ClassName  
1           John Smith     101       Math      

Vấn đề: ClassName không phụ thuộc trực tiếp vào StudentID. Cần chuẩn hóa:

Copy
StudentID   StudentName   ClassID
1           John Smith     101

4. Dạng Chuẩn BCNF (Boyce-Codd Normal Form)

Chỉ có khóa (hoặc khóa tổ hợp) mới có thể xác định các thông tin khác, không phải ngược lại.

Ví dụ:

Copy
Teacher   Subjects
Nga       Toán
Thu       Văn

Vấn đề: Không xác định được Subjects từ Teacher nếu không có khóa chính. Cần chuẩn hóa:

Copy
TeacherCode   TeacherName
GV01          Nga
GV02          Thu

5. Dạng Chuẩn 4NF (Fourth Normal Form)

Loại bỏ sự dư thừa dữ liệu do các phụ thuộc đa trị.

6. Dạng Chuẩn 5NF (Fifth Normal Form)

Nếu một bảng có thể được chia nhỏ thành nhiều bảng nhỏ hơn mà khi nối lại vẫn tái tạo được dữ liệu ban đầu, thì bảng đó cần được tách ra.

7. Dạng Chuẩn 6NF (Sixth Normal Form)

Chuẩn 6NF đảm bảo rằng mỗi bảng chỉ chứa một khóa chính và tối đa một thuộc tính không khóa. Mục tiêu của 6NF là loại bỏ hoàn toàn các vấn đề về NULL trong bảng và phân tách dữ liệu đến mức tối thiểu.

Với những thông tin trên, hầu hết các ứng dụng thông thường chỉ cần đạt chuẩn hóa tới 5NF là đủ. Việc triển khai 6NF thường không cần thiết trừ khi có lý do cụ thể.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào