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):
- Mở thẻ Foreign keys, chọn Thêm mới.
- Chọn cột làm khóa ngoài ở mục Columns (ví dụ:
idNhacsi). - Chọn bảng tham chiếu (Reference table) – ví dụ chọn bảng
nhacsi. - Chọn trường tham chiếu (Foreign column) trong bảng đó – ví dụ
idNhacsi, rồi nhấn OK. - Thiết lập hành vi On UPDATE và On DELETE (ở đây là NO ACTION).
- 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ạc và ca 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:
- Nháy phải vào CSDL
mymusic→ Tạo mới → Bảng. - Đặt tên bảng là
banthuam. - Thêm các trường (cột):
| # | Tên trường | Kiểu dữ liệu | Ghi chú |
|---|---|---|---|
| 1 | idBanthuam | INT, AUTO_INCREMENT | Khóa chính |
| 2 | idBannhac | INT | Khóa ngoài → bannhac |
| 3 | idCasi | INT | Khóa ngoài → casi |
- Đặt
idBanthuamlàm khóa chính (Primary key). - Mở thẻ Foreign keys → Thê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.
- 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ường | Kiểu dữ liệu | Ghi chú |
|---|---|---|---|
| 1 | idTinhthanh | INT, AUTO_INCREMENT | Khóa chính |
| 2 | tenTinhthanh | VARCHAR(255) | Tên Tỉnh/Thành phố |
Bảng quanhuyen (Quận/Huyện):
| # | Tên trường | Kiểu dữ liệu | Ghi chú |
|---|---|---|---|
| 1 | idQuanhuyen | INT, AUTO_INCREMENT | Khóa chính |
| 2 | tenQuanhuyen | VARCHAR(255) | Tên Quận/Huyện |
| 3 | idTinhthanh | INT | Khóa ngoài → tinhthanh |
Các bước trong HeidiSQL:
- Tạo trước bảng
tinhthanh(bảng được tham chiếu phải có trước). - Tạo bảng
quanhuyen, thêm 3 trường như trên, đặtidQuanhuyenlàm khóa chính. - Mở thẻ Foreign keys → Thêm mới: Columns =
idTinhthanh, Reference table =tinhthanh, Foreign column =idTinhthanh. - 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:idNhacsivàtenNhacsi. - 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ậptenNhacsi. - 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.
