Bài 1: Giới thiệu về Trình quản lý quảng cáo
Bài giảng: Lý thuyết Cơ sở Dữ liệu - Chuẩn hóa Cơ sở Dữ liệu
1. Giới thiệu về Chuẩn hóa Cơ sở Dữ liệu
Chuẩn hóa cơ sở dữ liệu là quá trình tổ chức dữ liệu thành các bảng nhỏ hơn và loại bỏ dư thừa, nhằm cải thiện tính chính xác và hiệu quả của dữ liệu. Quá trình này giúp giảm thiểu sự trùng lặp, đảm bảo tính toàn vẹn và tối ưu hóa truy vấn.
2. Lợi ích của Chuẩn hóa
- Giảm dư thừa dữ liệu: Tránh lặp lại dữ liệu trong nhiều bảng.
- Đảm bảo tính toàn vẹn dữ liệu: Hạn chế lỗi cập nhật và xóa dữ liệu.
- Tối ưu hóa truy vấn: Giảm kích thước bảng, tăng tốc độ truy xuất.
- Dễ dàng mở rộng và bảo trì: Hệ thống linh hoạt hơn khi có thay đổi.
3. Các dạng chuẩn (Normal Forms - NF)
3.1. Dạng chuẩn thứ nhất (1NF - First Normal Form)
📌 Yêu cầu:
- Mỗi ô trong bảng chỉ chứa một giá trị đơn (atomic value).
- Không có nhóm giá trị lặp trong một cột.
📌 Ví dụ bảng chưa đạt 1NF:
| Mã KH | Tên KH | SĐT | Sản phẩm đã mua |
|---|---|---|---|
| 001 | A | 0987654321 | Laptop, Chuột |
| 002 | B | 0976543210 | Điện thoại |
📌 Bảng chuẩn hóa thành 1NF:
| Mã KH | Tên KH | SĐT | Sản phẩm đã mua |
|---|---|---|---|
| 001 | A | 0987654321 | Laptop |
| 001 | A | 0987654321 | Chuột |
| 002 | B | 0976543210 | Điện thoại |
3.2. Dạng chuẩn thứ hai (2NF - Second Normal Form)
📌 Yêu cầu:
- Đạt 1NF.
- Loại bỏ phụ thuộc một phần vào khóa chính (bảng có khóa chính tổng hợp phải tách bảng).
📌 Ví dụ bảng chưa đạt 2NF:
| Mã đơn | Mã SP | Tên SP | Giá SP | Số lượng |
|---|---|---|---|---|
| 1001 | A1 | Laptop | 15tr | 2 |
| 1001 | B2 | Chuột | 500k | 1 |
| 1002 | A1 | Laptop | 15tr | 1 |
👉 Vấn đề: Tên SP và Giá SP phụ thuộc vào Mã SP, không phải vào Mã đơn.
📌 Bảng chuẩn hóa thành 2NF:
Bảng Đơn hàng
| Mã đơn | Mã SP | Số lượng |
|---|---|---|
| 1001 | A1 | 2 |
| 1001 | B2 | 1 |
| 1002 | A1 | 1 |
Bảng Sản phẩm
| Mã SP | Tên SP | Giá SP |
|---|---|---|
| A1 | Laptop | 15tr |
| B2 | Chuột | 500k |
3.3. Dạng chuẩn thứ ba (3NF - Third Normal Form)
📌 Yêu cầu:
- Đạt 2NF.
- Loại bỏ phụ thuộc bắc cầu (cột không khóa không phụ thuộc vào khóa chính qua một cột khác).
📌 Ví dụ bảng chưa đạt 3NF:
| Mã KH | Tên KH | Mã TP | Tên TP |
|---|---|---|---|
| 001 | A | HN | Hà Nội |
| 002 | B | SG | Hồ Chí Minh |
👉 Vấn đề: Tên TP phụ thuộc vào Mã TP, không phụ thuộc trực tiếp vào Mã KH.
📌 Bảng chuẩn hóa thành 3NF:
Bảng Khách hàng
| Mã KH | Tên KH | Mã TP |
|---|---|---|
| 001 | A | HN |
| 002 | B | SG |
Bảng Thành phố
| Mã TP | Tên TP |
|---|---|
| HN | Hà Nội |
| SG | Hồ Chí Minh |
4. Các dạng chuẩn cao hơn
- BCNF (Boyce-Codd Normal Form): Khắt khe hơn 3NF, xử lý các quan hệ có nhiều khóa chính.
- 4NF & 5NF: Xử lý dữ liệu phụ thuộc đa trị và ràng buộc phức tạp, ít dùng trong thực tế.
5. Kết luận
✅ Chuẩn hóa giúp cải thiện hiệu suất, bảo toàn dữ liệu, và tối ưu truy vấn.
✅ Thực tế, 3NF hoặc BCNF là đủ cho hầu hết hệ thống.
✅ Khi thiết kế CSDL, cần cân bằng giữa chuẩn hóa và hiệu suất (tránh quá nhiều bảng gây khó khăn khi truy vấn).
📌 Câu hỏi ôn tập:
- Mô tả mục đích của quá trình chuẩn hóa cơ sở dữ liệu.
- Giải thích sự khác biệt giữa 1NF, 2NF và 3NF với ví dụ.
- Tại sao một số hệ thống không áp dụng chuẩn hóa quá cao (4NF, 5NF)
📌 Bài tập thực hành:
👉 Yêu cầu: Chuẩn hóa bảng "Quản lý mượn sách" của thư viện về 3NF.
Dưới đây là bảng dữ liệu mẫu với 10 dòng để học viên dễ hình dung trước khi chuẩn hóa:
| Mã phiếu | Mã SV | Tên SV | Lớp | Mã sách | Tên sách | Tác giả | Ngày mượn | Ngày trả |
|---|---|---|---|---|---|---|---|---|
| P001 | SV01 | Nguyễn Văn A | K14A | S001 | Lập trình C++ | John Smith | 01/03/2024 | 15/03/2024 |
| P002 | SV02 | Trần Thị B | K14B | S002 | Cơ sở dữ liệu | Nguyễn Văn Nam | 02/03/2024 | 16/03/2024 |
| P003 | SV01 | Nguyễn Văn A | K14A | S003 | Toán rời rạc | Alan Turing | 03/03/2024 | 17/03/2024 |
| P004 | SV03 | Lê Văn C | K14C | S001 | Lập trình C++ | John Smith | 04/03/2024 | 18/03/2024 |
| P005 | SV04 | Phạm Thị D | K14A | S004 | Trí tuệ nhân tạo | Andrew Ng | 05/03/2024 | 19/03/2024 |
| P006 | SV02 | Trần Thị B | K14B | S005 | Học máy | Geoffrey Hinton | 06/03/2024 | 20/03/2024 |
| P007 | SV05 | Hoàng Văn E | K14C | S002 | Cơ sở dữ liệu | Nguyễn Văn Nam | 07/03/2024 | 21/03/2024 |
| P008 | SV01 | Nguyễn Văn A | K14A | S004 | Trí tuệ nhân tạo | Andrew Ng | 08/03/2024 | 22/03/2024 |
| P009 | SV06 | Bùi Thị F | K14B | S006 | Mạng máy tính | Kurose & Ross | 09/03/2024 | 23/03/2024 |
| P010 | SV03 | Lê Văn C | K14C | S003 | Toán rời rạc | Alan Turing | 10/03/2024 | 24/03/2024 |
Gợi ý:
- Xác định dữ liệu dư thừa, các lỗi có thể sảy ra nếu thay đổi thông tin lớp sinh viên
- Xác định quan hệ giữa Sinh viên, Sách, và Phiếu mượn để thiết kế các bảng hợp lý.
Yêu cầu: Viết nội dung trả lời trực tiếp hoặc nộp file word