Bài 18. Thực hành xác định cấu trúc và các trường khoá bảng
THỰC HÀNH XÁC ĐỊNH TRƯỜNG KHOÁ
SAU BÀI HỌC NÀY EM SẼ:
Bài 13, các em đã phần nào thấy được lợi ích khi tổ chức CSDL của website âm nhạc với nhiều bảng thay vì phải là một bảng với đầy đủ tất cả các thông tin. Tuy nhiên, làm thế nào để từ yêu cầu ban đầu (quản lí danh sách các bản thu âm với đầy đủ thông tin tên bản nhạc, tên nhạc sĩ, tên ca sĩ) người ta lại đi đến được CSDL với các bảng như đã trình bày ở Bài 13?
Nhiệm vụ. Xác định các dữ liệu, cấu trúc của các bảng và các trường khoá cho CSDL của một website âm nhạc. Hướng dẫn:
1. XEM XÉT BÀI TOÁN
Nhạc sĩ sáng tác bản nhạc là nói đến tên một nhạc sĩ hay tên một nhóm nhạc sĩ sáng tác bản nhạc đó. Tương tự như vậy, ta cũng quy ước khi nói đến tên ca sĩ là nói đến một ca sĩ hay một nhóm ca sĩ biểu diễn tác phẩm. Dưới đây là một ví dụ về một bảng ghi chép lại thông tin các bản thu âm.
| STT | Tên bản nhạc | Tên nhạc sĩ | Tên ca sĩ |
| 1 | Du kích Sông Thao | Đỗ Nhuận | Doãn Tần |
| 2 | Trường ca Sông Lô | Văn Cao | Lê Dung |
| Tình ca | Hoàng Việt | Trần Khánh | |
| 4 | Xa khơi | Nguyễn Tài Tuệ | Tân Nhân |
| 5 | Việt Nam quê hương tôi | Đỗ Nhuận | Quốc Hương |
| 6 | Tiến về Hà Nội | Văn Cao | Doãn Tần |
| 7 | Nhạc rừng | Hoàng Việt | Quốc Hương |
| 8 | Tiếng hát giữa rừng Pắc Bó | Nguyễn Tài Tuệ | Lê Dung |
| Trường ca Sông Lô | Văn Cao | Trần Khánh | |
| 10 | Tiến về Hà Nội | Văn Cao | Quốc Hương |
2. XÁC ĐỊNH CẤU TRÚC BẢNG
Tổng kết tất cả các thông tin cần quản lí, viết ra thành dãy: Số hiệu bản thu âm (STT), tên bản nhạc, tên nhạc sĩ sáng tác, tên ca sĩ thể hiện. Từ đó em có thể hình dung về một bảng dữ liệu tên là banthuam với các trường idBanthuam (để lưu số hiệu bản thu âm), tenBannhac (để lưu tên bản nhạc), tenNhacsi (để lưu tên nhạc sĩ), tenCasi (để lưu tên ca sĩ) và viết mô tả gọn ở dạng:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
Trong đó, trường idBanthuam xác định duy nhất một bản thu âm nên sẽ được lấy làm khoá chính của bảng. Nhóm cả ba trường tenBannhac, tenNhacsi, tenCasi cũng xác định duy nhất một bản thu âm, nên nhóm các trường này có thể làm khoá chính của bảng, nhưng rõ ràng dùng idBanthuam là gọn và thuận lợi hơn. Có thể viết lại mô tả trên với tên trường khoá chính có gạch chân như sau:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
Phân tích và sắp xếp
Một ca sĩ có thể là người thể hiện nhiều bản nhạc khác nhau nên trường tenCasi lặp lại ở nhiều dòng và gây khó khăn khi cần sửa chữa tên của ca sĩ, vì phải tìm và sửa ở tất cả những dòng có tên ca sĩ này. Vì vậy, ta tách tenCasi ra khỏi bảng banthuam, tạo bảng casi(idCasi, tenCasi) với trường khoá là idCasi và thay trường tenCasi trong banthuam bởi idCasi. Như vậy, banthuam sẽ có khoá ngoài tham chiếu đến khoá chính idCasi trong bảng casi.
banthuam(idBanthuam, tenBannhac, tenNhacsi, idCasi) casi(idCasi, tenCasi)
Bảng 18.2. Bảng casi với trường khoá idCasi và trường tenCasi
| idCasi | tenCasi |
| Trần Khánh | |
| 2 | Lê Dung |
| 3 | Tân Nhân |
| 4 | Quốc Hương |
| 5 | Doãn Tần |
Bảng 18.3. Bảng banthuam sau khi thay tenCasi bởi idCasi
| idBanthuam | tenBannhac | tenNhacsi | idCasi |
| Du kích Sông Thao | Đỗ Nhuận | 5 | |
| 2 | Trường ca Sông Lô | Văn Cao | 2 |
| 3 | Tình ca | Hoàng Việt | 1 |
| 4 | Xa khơi | Nguyễn Tài Tuệ | 3 |
| 5 | Việt Nam quê hương tôi | Đỗ Nhuận | 4 |
| 6 | Tiến về Hà Nội | Văn Cao | 5 |
| 7 | Nhạc rừng | Hoàng Việt | 4 |
| 8 | Tiếng hát giữa rừng Pắc Bó | Nguyễn Tài Tuệ | 2 |
| 9 | Trường ca Sông Lô | Văn Cao | 1 |
| 10 | Tiến về Hà Nội | Văn Cao | 4 |
Tương tự, một bản nhạc có thể có nhiều bản thu âm khác nhau do những ca sĩ khác nhau thể hiện. Ví dụ, trong Bảng 18.1, bản nhạc Trường ca Sông Lô xuất hiện ở số 2 và số 9. Do đó, cách tốt hơn là tạo bảng bannhac(idBannhac, tenBannhac, tenNhacsi) với trường khoá là idBannhac và thay cặp (tenBannhac, tenNhacsi) trong banthuam bởi idBannhac.
banthuam(idBanthuam, idBannhac, idCasi) casi(idCasi, tenCasi) bannhac(idBannhac, tenBannhac, tenNhacsi)
Bảng 18.4. Bảng bannhac với trường khoá idBannhac
| idBannhac | tenBannhac | tenNhacsi |
| 1 | Du kích Sông Thao | Đỗ Nhuận |
| 2 | Trường ca Sông Lô | Văn Cao |
| 3 | Tình ca | Hoàng Việt |
| 4 | Xa khơi | Nguyễn Tài Tuệ |
| 5 | Việt Nam quê hương tôi | Đỗ Nhuận |
| 6 | Tiến về Hà Nội | Văn Cao |
| 7 | Nhạc rừng | Hoàng Việt |
| 8 | Tiếng hát giữa rừng Pắc Bó | Nguyễn Tài Tuệ |
Bảng 18.5. Bảng banthuam sau khi sử dụng trường idBannhac
| idBanthuam | idBannhac | idCasi |
| 1 | 5 | |
| 2 | 2 | 2 |
| 3 | 3 | 1 |
| 4 | ||
| 5 | 5 | 4 |
| 6 | 6 | |
| 7 | 7 | 2 |
| 8 | 8 | |
| 9 | 2 | 1 |
| 10 | 6 | 4 |
Tên nhạc sĩ trong bảng bannhac bị lặp lại do một nhạc sĩ có thể sáng tác nhiều bản nhạc. Ví dụ, trong Bảng 18.4, nhạc sĩ Văn Cao xuất hiện trong hai dòng số 2 và số 6. Vì vậy, lại lập bảng nhacsi(idNhacsi, tenNhacsi) và thay thế trường tenNhacsi trong bảng bannhac bởi idNhacsi.
| idNhacsi | tenNhacsi |
| Đỗ Nhuận | |
| 2 | Văn Cao |
| 3 | Hoàng Việt |
| 4 | Nguyễn Tài Tuệ |
Bảng 18.7. Bảng bannhac sau khi dùng trường idNhacsi
| idBannhac | tenBannhac | idNhacsi |
| Du kích Sông Thao | 1 | |
| 2 | Trường ca Sông Lô | 2 |
| 3 | Tình ca | 3 |
| 4 | Xa khơi | 4 |
| 5 | Việt Nam quê hương tôi | |
| 6 | Tiến về Hà Nội | 2 |
| 7 | Nhạc rừng | 3 |
| 8 | Tiếng hát giữa rừng Pắc Bó | 4 |
| idBannhac | tenBannhac | idNhacsi | idBanthuam | idBannhac | idCasi |
| Du kích Sông Thao | |||||
| 2 | Trường ca Sông Lô | 2 | 2 | ||
| 3 | Tình ca | 3 | 3 | 3 | |
| 4 | Xa khơi | 5 | 4 | ||
| 5 | Việt Nam quê hương tôi | 1 | 5 | ||
| 6 | Tiến về Hà Nội | 2 | 6 | ||
| 7 | Nhạc rừng | 3 | 7 | 7 | |
| 8 | Tiếng hát giữa rừng Pắc Bó | 8 | 8 | ||
| 9 | 2 | ||||
| 10 | 6 |

4. CÁC LOẠI KHOÁ
Có thể tóm tắt lại về cấu trúc các bảng và quan hệ của các bảng theo tham chiếu từ khoá ngoài đến khoá chính ở dạng sơ đồ như Hình 18.2.

5. VỀ CÁC KIỂU DỮ LIỆU CỦA CÁC TRƯỜNG
Em hãy chỉ ra những lợi ích có được khi tổ chức CSDL âm nhạc với các bảng trình bày trong bài học.
LUYỆN TẬP
VẬN DỤNG
Thực hiện các bước phân tích để thiết lập mô hình dữ liệu cho một bài toán quản lí thực tế, ví dụ quản lí danh sách tên phường/xã của các tỉnh, thành phố.
Tài liệu bài học
Bản scan SGK xem ngay trên web · slide và phiếu mở từ Google Drive (cần đăng nhập Google để tải).
Xem nguyên văn trang sách của bài Thực hành xác định cấu trúc và các trường khoá bảng ngay dưới đây.
Xem ngay Slide bài giảngBài trình chiếu đã dạy trên lớp (PowerPoint).
Mở Drive Phiếu học tậpPhiếu ghi bài trên lớp của bài Thực hành xác định cấu trúc và các trường khoá bảng.
Mở Drive Phiếu thực hànhBài tập thực hành kèm theo bài Thực hành xác định cấu trúc và các trường khoá bảng.
Mở Drive Trắc nghiệm12 câu ôn tập bài Thực hành xác định cấu trúc và các trường khoá bảng — bấm Kiểm tra để xem đúng/sai ngay.
Làm ngayNội dung SGK · bản scan
Bài Thực hành xác định cấu trúc và các trường khoá bảng — trang 86–90 của sách giáo khoa.




