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ảngVai tròTrường chính
bannhacLưu thông tin bản nhạcidBannhac, tenBannhac, idNhacsi
nhacsiLư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ường idBannhac, tenBannhac, idNhacsi nhưng chưa có dữ liệu (Hình 22.1).
  • Trường idBannhac có 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à idNhacsi AUTO_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

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ới idNhacsi tham chiếu đến idNhacsi của bảng nhacsi, ta không thể tuỳ tiện xoá các dòng của bảng nhacsi.
  • MySQL/MariaDB sẽ kiểm tra và ngăn chặn việc xoá dòng trong bảng nhacsi nếu giá trị idNhacsi đó đang được dùng trong bảng bannhac.

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.

Chế độ đọc sách →