Giải Tin Học trang 100

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

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

⚠️ Lưu ý: Hai trang ảnh thực tế là trang 99 (phần cuối Bài 20: Thực hành tạo lập các bảng có khóa ngoài) và trang 100 (mở đầu Bài 21: Thực hành cập nhật và truy xuất dữ liệu các bảng). Mình sẽ giải đầy đủ tất cả các phần xuất hiện.

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

Phần này hướng dẫn thao tác trên phần mềm HeidiSQL (kết nối MariaDB) để làm việc với CSDL mymusic.

Khóa ngoài (Foreign key):

  • Là một (hoặc nhiều) trường trong bảng này tham chiếu đến khóa chính của một bảng khác.
  • Dùng để liên kết dữ liệu giữa các bảng và bảo đảm tính toàn vẹn tham chiếu (không thể nhập giá trị không tồn tại ở bảng được tham chiếu).

Các bước khai báo khóa ngoài trong HeidiSQL (Hình 20.9 và 20.10):

  1. Mở thẻ Foreign keys, chọn Thêm mới.
  2. Chọn cột làm khóa ngoài ở mục Columns (ví dụ: idNhacsi).
  3. Chọn bảng tham chiếu (Reference table) – ví dụ chọn bảng nhacsi.
  4. Chọn trường tham chiếu (Foreign column) trong bảng đó – ví dụ idNhacsi, rồi nhấn OK.
  5. Thiết lập hành vi On UPDATEOn DELETE (ở đây là NO ACTION).
  6. Nhấn Lưu để hoàn tất khởi tạo bảng (ví dụ bảng bannhac).

Cập nhật dữ liệu (Bài 21):

  • Chọn bảng → chọn thẻ Dữ liệu.
  • Thêm hàng mới: nhấn phím Insert, hoặc nhấn biểu tượng ⊕, hoặc nháy phải chọn Chèn hàng.
  • Nháy đúp vào ô để nhập dữ liệu cho từng trường.
  • Trường có kiểu INT, AUTO_INCREMENT (như idNhacsi) sẽ tự sinh giá trị, không cần nhập.
💡 Mẹo nhớ: Khóa chính (Primary key) = định danh duy nhất trong bảng. Khóa ngoài (Foreign key) = "cây cầu" trỏ tới khóa chính của bảng khác.

⚙️ Bài tập

Câu 1 — LUYỆN TẬP

Đề bài: Hãy tạo lập bảng banthuam.

Cách 1 — Tạo bảng bằng giao diện HeidiSQL

Dựa theo CSDL mymusic (gồm các bảng casi, nhacsi, bannhac, banthuam), bảng banthuam (bản thu âm) là bảng liên kết giữa bản nhạcca sĩ thể hiện. Một bản nhạc có thể được nhiều ca sĩ thu âm, và một ca sĩ thu âm nhiều bản nhạc — đây là quan hệ nhiều–nhiều, nên cần bảng trung gian banthuam.

Các bước thực hiện:

  1. Nháy phải vào CSDL mymusicTạo mớiBảng.
  2. Đặt tên bảng là banthuam.
  3. Thêm các trường (cột):
#Tên trườngKiểu dữ liệuGhi chú
1idBanthuamINT, AUTO_INCREMENTKhóa chính
2idBannhacINTKhóa ngoài → bannhac
3idCasiINTKhóa ngoài → casi
  1. Đặt idBanthuam làm khóa chính (Primary key).
  2. Mở thẻ Foreign keysThêm mới:
  • Khóa ngoài 1: Columns = idBannhac, Reference table = bannhac, Foreign column = idBannhac.
  • Khóa ngoài 2: Columns = idCasi, Reference table = casi, Foreign column = idCasi.
  • On UPDATE / On DELETE: NO ACTION.
  1. Nhấn Lưu để khởi tạo bảng.
Cách 2 — Tạo bảng bằng câu lệnh SQL

Vào thẻ Truy vấn và chạy lệnh:

CREATE TABLE banthuam (
    idBanthuam INT AUTO_INCREMENT,
    idBannhac  INT,
    idCasi     INT,
    PRIMARY KEY (idBanthuam),
    FOREIGN KEY (idBannhac) REFERENCES bannhac(idBannhac)
        ON UPDATE NO ACTION ON DELETE NO ACTION,
    FOREIGN KEY (idCasi) REFERENCES casi(idCasi)
        ON UPDATE NO ACTION ON DELETE NO ACTION
);
💡 Mẹo nhớ: Bảng trung gian luôn chứa khóa ngoài trỏ tới khóa chính của cả hai bảng mà nó kết nối.
⚠️ Lưu ý thi: Tên cột khóa ngoài và cột tham chiếu phải cùng kiểu dữ liệu (đều INT). Nếu khác kiểu, MariaDB sẽ báo lỗi không tạo được khóa ngoài.

Câu 2 — VẬN DỤNG

Đề bài: Hãy tạo lập bảng Quận/Huyện trong CSDL quản lí tên Quận/Huyện, Tỉnh/Thành phố.

Cách 1 — Phân tích thiết kế rồi tạo bằng giao diện

Quan hệ: một Tỉnh/Thành phố có nhiều Quận/Huyện; mỗi Quận/Huyện chỉ thuộc một Tỉnh/Thành phố → quan hệ một–nhiều.

Vì vậy cần 2 bảng:

Bảng tinhthanh (Tỉnh/Thành phố):

#Tên trườngKiểu dữ liệuGhi chú
1idTinhthanhINT, AUTO_INCREMENTKhóa chính
2tenTinhthanhVARCHAR(255)Tên Tỉnh/Thành phố

Bảng quanhuyen (Quận/Huyện):

#Tên trườngKiểu dữ liệuGhi chú
1idQuanhuyenINT, AUTO_INCREMENTKhóa chính
2tenQuanhuyenVARCHAR(255)Tên Quận/Huyện
3idTinhthanhINTKhóa ngoài → tinhthanh

Các bước trong HeidiSQL:

  1. Tạo trước bảng tinhthanh (bảng được tham chiếu phải có trước).
  2. Tạo bảng quanhuyen, thêm 3 trường như trên, đặt idQuanhuyen làm khóa chính.
  3. Mở thẻ Foreign keysThêm mới: Columns = idTinhthanh, Reference table = tinhthanh, Foreign column = idTinhthanh.
  4. Nhấn Lưu.
Cách 2 — Tạo bằng câu lệnh SQL
-- Tạo bảng Tỉnh/Thành phố trước
CREATE TABLE tinhthanh (
    idTinhthanh INT AUTO_INCREMENT,
    tenTinhthanh VARCHAR(255),
    PRIMARY KEY (idTinhthanh)
);

-- Sau đó tạo bảng Quận/Huyện có khóa ngoài
CREATE TABLE quanhuyen (
    idQuanhuyen INT AUTO_INCREMENT,
    tenQuanhuyen VARCHAR(255),
    idTinhthanh INT,
    PRIMARY KEY (idQuanhuyen),
    FOREIGN KEY (idTinhthanh) REFERENCES tinhthanh(idTinhthanh)
        ON UPDATE NO ACTION ON DELETE NO ACTION
);
⚠️ Lưu ý thi: Luôn tạo bảng được tham chiếu trước (bảng chứa khóa chính), rồi mới tạo bảng có khóa ngoài. Làm ngược lại sẽ báo lỗi vì bảng tham chiếu chưa tồn tại.
💡 Mẹo nhớ: Quan hệ một–nhiều → đặt khóa ngoài ở bảng phía "nhiều" (mỗi Quận/Huyện chứa một idTinhthanh).

Phần Bài 21 (trang 100) — Lý thuyết thực hành

Trang 100 mở đầu Bài 21: Thực hành cập nhật và truy xuất dữ liệu các bảng, chủ yếu là hướng dẫn thao tác, không có câu hỏi/bài tập cần giải. Tóm tắt nội dung chính:

Mục tiêu: Biết cách cập nhật và truy xuất CSDL.

1. Thêm mới dữ liệu vào bảng nhacsi:

  • Chọn bảng nhacsi → thẻ Dữ liệu (Hình 21.1). Bảng có 2 trường: idNhacsitenNhacsi.
  • Thêm hàng mới: nhấn Insert / biểu tượng ⊕ / nháy phải → Chèn hàng.
  • Một hàng rỗng xuất hiện, nháy đúp vào từng ô để nhập dữ liệu (Hình 21.2).
  • Trường idNhacsi (INT, AUTO_INCREMENT) tự sinh giá trị → bỏ qua, chỉ nhập tenNhacsi.
  • Nhập tên nhạc sĩ → nhấn Enter → nhấn Insert để thêm hàng tiếp theo.
🎯 Ghi nhớ: - Khóa ngoài liên kết các bảng và giữ tính toàn vẹn dữ liệu; bảng tham chiếu phải được tạo trước. - Quan hệ nhiều–nhiều cần bảng trung gian (như banthuam); quan hệ một–nhiều đặt khóa ngoài ở bảng phía "nhiều" (như quanhuyen). - Trường AUTO_INCREMENT tự sinh giá trị, không cần nhập tay khi thêm dữ liệu.
Chế độ đọc sách →