Giải Tin Học trang 88

Lời giải chi tiết SGK Lớp 11 · Môn Tin Học · Trang 88–89

Nguon: Tin Hoc 11 - Ket Noi Tri Thuc Voi Cuoc Song (trang 88 – 89)

⚠️ Lưu ý: Hai trang này thuộc Bài 18 – Thực hành xác định cấu trúc bảng và các trường khoá, phần mục 2 (Tạo lập bảng)mục 3 (Tổ chức lại bảng dữ liệu). Đây là nội dung lý thuyết và minh hoạ, không có câu hỏi/bài tập đánh số. Dưới đây thầy tóm tắt đầy đủ kiến thức trọng tâm để các em nắm chắc.

🔍 Kiến thức cần nhớ

2. Tạo lập bảng

Ý tưởng xuất phát: Tổng hợp tất cả thông tin cần quản lí về các bản thu âm thành một bảng dữ liệu duy nhất tên là banthuam, gồm các trường:

TrườngÝ nghĩa
idBanthuamLưu số hiệu bản thu âm (STT)
tenBannhacLưu tên bản nhạc
tenNhacsiLưu tên nhạc sĩ sáng tác
tenCasiLưu tên ca sĩ thể hiện

Mô tả bảng ở dạng:

banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)

Về khoá chính:

  • Trường idBanthuam xác định duy nhất một bản thu âm → được chọn làm khoá chính.
  • 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 về lí thuyết cũng có thể làm khoá chính. Tuy nhiên, dùng idBanthuam thì ngắn gọn và thuận lợi hơn.
  • Khoá chính được biểu diễn bằng cách gạch chân tên trường:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
            ‾‾‾‾‾‾‾‾‾‾
💡 Mẹo nhớ: Khi có nhiều phương án làm khoá chính, hãy chọn trường đơn giản, ngắn gọn, ổn định nhất (thường là một mã số) thay vì một nhóm nhiều trường dài.

3. Tổ chức lại bảng dữ liệu

Mục tiêu: Phân tích và sắp xếp lại bảng để hạn chế dữ liệu bị lặp lại (gây tốn bộ nhớ lưu trữ và khó sửa chữa).

a) Tách bảng casi (xử lí lặp tên ca sĩ)

Vấn đề: Một ca sĩ có thể thể hiện nhiều bản nhạc → trường tenCasi bị lặp; tên ca sĩ lại dài → tốn dung lượng, khó sửa. Ví dụ ca sĩ Trần Khánh xuất hiện ở dòng 3 và 9; khi sửa tên phải sửa ở tất cả các dòng.

Cách khắc phục: Lập riêng bảng casi và thay tenCasi trong bảng banthuam bằng idCasi:

banthuam(idBanthuam, tenBannhac, tenNhacsi, idCasi)
casi(idCasi, tenCasi)

Khi đó idCasi trong bảng banthuamkhoá ngoài, tham chiếu đến khoá chính idCasi trong bảng casi.

💡 Mẹo nhớ: Khoá ngoài (foreign key) là trường trong bảng này nhưng "chỉ tới" khoá chính của bảng kia, giúp liên kết hai bảng mà không cần lặp lại dữ liệu dài dòng.
b) Tách bảng bannhac (xử lí lặp bản nhạc)

Vấn đề: Một bản nhạc có thể có nhiều bản thu âm do các ca sĩ khác nhau thể hiện → cặp (tenBannhac, tenNhacsi) bị lặp. Ví dụ "Trường ca Sông Lô" xuất hiện ở dòng 2 và 9.

Cách khắc phục: Lập bảng bannhac với khoá chính idBannhac, và thay cặp (tenBannhac, tenNhacsi) trong bảng banthuam bằng idBannhac:

banthuam(idBanthuam, idBannhac, idCasi)
casi(idCasi, tenCasi)
bannhac(idBannhac, tenBannhac, tenNhacsi)
c) Tiếp tục tách bảng nhacsi (xử lí lặp tên nhạc sĩ)

Vấn đề: Tên nhạc sĩ trong bảng bannhac vẫn bị lặp vì một nhạc sĩ có thể sáng tác nhiều bản nhạc. Ví dụ nhạc sĩ Văn Cao xuất hiện ở dòng 2 và 6.

Cách khắc phục: Lập thêm bảng nhacsi(idNhacsi, tenNhacsi) và thay trường tenNhacsi trong bảng bannhac bằng idNhacsi.


Minh hoạ các bảng sau khi tổ chức lại

Bảng 18.2 – casi:

idCasitenCasi
1Trần Khánh
2Lê Dung
3Tân Nhân
4Quốc Hương
5Doãn Tần

Bảng 18.4 – bannhac:

idBannhactenBannhactenNhacsi
1Du kích sông ThaoĐỗ Nhuận
2Trường ca Sông LôVăn Cao
3Tình caHoàng Việt
4Xa khơiNguyễn Tài Tuệ
5Việt Nam quê hương tôiĐỗ Nhuận
6Tiến về Hà NộiVăn Cao
7Nhạc rừngHoàng Việt
8Tiếng hát giữa rừng Pắc BóNguyễn Tài Tuệ

Bảng 18.5 – banthuam (chỉ còn các trường mã số):

idBanthuamidBannhacidCasi
115
222
331
443
554
665
774
882
921
1064
⚠️ Lưu ý: Quan sát dòng 2 và 9 đều có idBannhac = 2 (cùng bản "Trường ca Sông Lô") nhưng idCasi khác nhau (2 và 1) → đúng tinh thần "một bản nhạc, nhiều bản thu âm". Tương tự dòng 6 và 10 cùng idBannhac = 6 ("Tiến về Hà Nội").

🎯 Ghi nhớ: - Quá trình chuẩn hoá chính là việc tách bảng lớn thành nhiều bảng nhỏ để loại bỏ dữ liệu trùng lặp. - Mỗi bảng con có khoá chính riêng (gạch chân); các bảng liên kết với nhau qua khoá ngoài. - Sau khi tổ chức lại: bảng banthuam chỉ chứa các mã số (idBanthuam, idBannhac, idCasi) → gọn nhẹ, dễ cập nhật. Muốn sửa tên ca sĩ/nhạc sĩ/bản nhạc chỉ cần sửa một chỗ duy nhất trong bảng tương ứng. - Lợi ích: tiết kiệm bộ nhớ, tránh sai sót khi cập nhật, đảm bảo tính nhất quán của dữ liệu.
Chế độ đọc sách →