Giải Tin Học trang 106
Lời giải chi tiết SGK Lớp 11 · Môn Tin Há»c · Trang 106–107
Hai trang này thuộc Bài 22: Thực hành cập nhật bảng dữ liệu có tham chiếu. Đây là phần hướng dẫn thực hành, không có bài tập trắc nghiệm hay câu hỏi cần giải đáp án. Mình sẽ tóm tắt lý thuyết và hướng dẫn thao tác để em nắm chắc nội dung nhé.
Mục tiêu bài học
Sau bài này em sẽ hiểu được cách nhập dữ liệu cho các bảng có trường khoá ngoài, tức là trường tham chiếu đến một khoá chính của bảng khác.
Câu hỏi gợi mở đầu bài: Khi cập nhật một bảng có khoá ngoài, dữ liệu của trường khoá ngoài phải là dữ liệu tham chiếu được đến một trường khoá chính của bảng tham chiếu. HeidiSQL hỗ trợ kiểm soát điều này như thế nào?
Trả lời ngắn gọn: HeidiSQL hiển thị sẵn một hộp danh sách (dropdown) chứa các giá trị hợp lệ lấy từ bảng tham chiếu, để em chỉ chọn được giá trị đã tồn tại, tránh nhập sai.
Tóm tắt lý thuyết
Bài học xoay quanh cơ sở dữ liệu mymusic gồm các bảng chính:
| Bảng | Vai trò | Trường chính |
|---|---|---|
bannhac | Lưu thông tin bản nhạc | idBannhac, tenBannhac, idNhacsi |
nhacsi | Lưu thông tin nhạc sĩ | idNhacsi, tenNhacsi... |
Mối quan hệ: trường idNhacsi trong bảng bannhac là khoá ngoài, tham chiếu đến khoá chính idNhacsi của bảng nhacsi.
Nhiệm vụ 1: Cập nhật bảng bannhac
a) Thêm mới dữ liệu vào bảng bannhac
- Chọn bảng
bannhac, nháy thẻ Dữ liệu sẽ thấy ba trườngidBannhac,tenBannhac,idNhacsinhưng chưa có dữ liệu (Hình 22.1). - Trường
idBannhaccó kiểu INT, AUTO_INCREMENT nên không cần nhập, hệ thống tự tăng. (Lưu ý: phần chữ trong sách viết làidNhacsiAUTO_INCREMENT, nhưng đúng về mặt thiết kế thì khoá chính tự tăng phải làidBannhac.) - Nháy đúp vào ô
tenBannhacđể nhập tên bản nhạc, ví dụ "Du kích sông Thao" (Hình 22.2).
Điểm mấu chốt: nhập trường khoá ngoài idNhacsi
Vì idNhacsi là khoá ngoài tham chiếu đến idNhacsi của bảng nhacsi, giá trị hợp lệ chỉ có thể lấy từ các giá trị đã tồn tại trong bảng nhacsi. Khi nháy đúp vào ô idNhacsi, HeidiSQL hiện hộp danh sách các nhạc sĩ để em chọn (Hình 22.3), ví dụ:
- 1: Đỗ Nhuận
- 2: Văn Cao
- 3: Hoàng Việt
- 4: Nguyễn Tài Tuệ
- 5: Nguyễn Văn...
- 6: Phan Nhân
- 7: Phan Huỳnh...
Đây chính là cách HeidiSQL kiểm soát toàn vẹn tham chiếu, em không nhập tay được giá trị sai.
b) Sửa chữa, cập nhật dữ liệu trong bảng bannhac
Thao tác sửa giống Bài 21: chỉ cần nháy đúp vào ô muốn sửa. Ví dụ sửa idNhacsi ở dòng số 2 ("Trường ca Sông Lô") thành "2: Văn Cao" bằng cách chọn lại trong hộp danh sách (Hình 22.4).
c) Xoá dữ liệu trong bảng bannhac
Thực hiện tương tự các bước ở Bài 21 để xoá các dòng dữ liệu trong bảng bannhac.
d) Xoá dữ liệu trong bảng nhacsi
Đây là điểm quan trọng nhất về ràng buộc khoá ngoài:
- Vì bảng
bannhacđã có dữ liệu vớiidNhacsitham chiếu đếnidNhacsicủa bảngnhacsi, ta không thể tuỳ tiện xoá các dòng của bảngnhacsi. - MySQL/MariaDB sẽ kiểm tra và ngăn chặn việc xoá dòng trong bảng
nhacsinếu giá trịidNhacsiđó đang được dùng trong bảngbannhac.
Lý do: nếu cho xoá, các bản nhạc sẽ tham chiếu đến một nhạc sĩ không còn tồn tại, làm mất tính nhất quán dữ liệu. Đây gọi là ràng buộc toàn vẹn tham chiếu (referential integrity).
Ghi nhớ nhanh
- Trường AUTO_INCREMENT không cần nhập, hệ thống tự sinh.
- Trường khoá ngoài chỉ nhận giá trị đã tồn tại ở khoá chính của bảng tham chiếu, chọn qua hộp danh sách.
- Không xoá được dòng ở bảng cha (
nhacsi) khi còn dòng con (bannhac) tham chiếu tới.
Nếu em gửi thêm trang có phần câu hỏi hoặc bài tập cuối bài, mình sẽ giải chi tiết từng câu cho em.
