Giải Tin Học trang 94

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

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

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

Hai trang này hướng dẫn thao tác tạo lập bảng trong hệ quản trị cơ sở dữ liệu (CSDL) bằng phần mềm HeidiSQL (kết nối với MariaDB). Các nội dung chính:

a) Khai báo trường kiểu VARCHAR

  • VARCHAR(M) là kiểu chuỗi ký tự có độ dài thay đổi, M là độ dài tối đa của cột (tính bằng số ký tự), M nằm trong khoảng 0 đến 65 535.
  • Dùng cho các trường chứa văn bản, tên gọi (ví dụ: tenNhacsi).

b) Khai báo khoá chính (PRIMARY KEY)

  • Khoá chính là trường (hoặc tập trường) dùng để phân biệt duy nhất mỗi bản ghi trong bảng.
  • Cách khai báo: nháy nút phải chuột vào dòng khai báo trường muốn làm khoá → chọn Create new index → PRIMARY.

c) Sửa khoá chính khai báo nhầm

  • Nháy đúp vào ô tên trường nằm dưới ô PRIMARY KEY ở phần Indexes, chọn lại trường đúng (idNhacsi).

d) Lưu kết quả

  • Chọn Lưu để hoàn tất tạo bảng. Tên bảng (nhacsi) sẽ xuất hiện dưới tên CSDL (mymusic).
💡 Mẹo nhớ: Khoá chính phải thoả 3 điều kiện — không trùng lặp, không để trống (NOT NULL), và xác định duy nhất mỗi bản ghi. Trường id thường được chọn làm khoá chính vì có thuộc tính AUTO_INCREMENT (tự tăng).

⚙️ Bài tập

Câu hỏi giữa bài (trang 93)

Đề bài: Cần phải làm gì trong trường hợp chọn nhầm trường làm khoá chính, chẳng hạn chọn nhầm trường tenNhacsi như Hình 19.7?

Cách 1 — Sửa trực tiếp trên giao diện HeidiSQL

Khi đã lỡ chọn nhầm trường tenNhacsi làm khoá chính, ta thực hiện sửa lại theo các bước (minh hoạ ở Hình 19.8 và 19.9):

  1. Chuyển sang thẻ Indexes ở phần trên cửa sổ khai báo bảng.
  2. Tìm mục PRIMARY KEY, bên dưới đang hiển thị trường sai là tenNhacsi.
  3. Nháy đúp chuột vào ô tenNhacsi (nằm dưới ô PRIMARY KEY).
  4. Trong danh sách thả xuống hiện ra, chọn lại trường idNhacsi (trường đúng).
  5. Kết quả: ô dưới PRIMARY KEY chuyển thành idNhacsi, biểu tượng chìa khoá vàng cũng chuyển sang đứng trước trường idNhacsi ở phần Cột.
  6. Chọn Lưu để ghi lại thay đổi.
Cách 2 — Xoá khoá nhầm rồi khai báo lại

Nếu thấy thao tác sửa trực tiếp khó thực hiện, có thể làm cách thay thế:

  1. Tại thẻ Indexes, chọn mục PRIMARY KEY đang chứa tenNhacsi, nháy Xóa (Dọn dẹp) để loại bỏ khoá chính đã khai báo nhầm.
  2. Quay lại phần Cột, nháy nút phải chuột vào dòng idNhacsi → chọn Create new index → PRIMARY.
  3. Chọn Lưu để hoàn tất.
⚠️ Lưu ý thi: Đề thi thường hỏi "tại sao không nên chọn tenNhacsi làm khoá chính?". Lý do: tên nhạc sĩ có thể trùng nhau (hai người trùng tên), nên không bảo đảm tính duy nhất → vi phạm điều kiện của khoá chính. Trong khi idNhacsi luôn duy nhất nhờ AUTO_INCREMENT.

Câu — LUYỆN TẬP (trang 94)

Đề bài: Khai báo tạo lập bảng casi như thiết kế ở Bài 18.

Cách 1 — Thao tác trên HeidiSQL (theo đúng quy trình bài học)

Bảng casi (ca sĩ) ở Bài 18 gồm các trường cơ bản: mã ca sĩ và tên ca sĩ. Thực hiện như sau:

  1. Nháy nút phải vào tên CSDL mymusic → chọn Tạo mới → Bảng, đặt tên bảng là casi.
  2. Khai báo các trường (cột) trong thẻ Basic:
#TênKiểu dữ liệuLengthGhi chú
1idCasiINT11AUTO_INCREMENT
2tenCasiVARCHAR255Tên ca sĩ
  1. Khai báo khoá chính: nháy nút phải vào dòng idCasi → chọn Create new index → PRIMARY.
  2. Chọn Lưu. Tên bảng casi xuất hiện dưới CSDL mymusic.
Cách 2 — Dùng câu lệnh SQL (nhanh, không thao tác giao diện)

Mở thẻ Truy vấn (Query) và gõ lệnh:

CREATE TABLE casi (
    idCasi  INT NOT NULL AUTO_INCREMENT,
    tenCasi VARCHAR(255),
    PRIMARY KEY (idCasi)
);

Nhấn nút thực thi (F9). Bảng casi được tạo ngay lập tức với khoá chính là idCasi.

💡 Mẹo nhớ: Cấu trúc lệnh tạo bảng: CREATE TABLE tên_bảng (tên_trường kiểu_dữ_liệu, ..., PRIMARY KEY (trường_khoá));

Câu — VẬN DỤNG (trang 94)

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

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

Bước 1 — Thiết kế: CSDL cần quản lí hai cấp hành chính, nên gồm 2 bảng:

  • Bảng TinhThanh (Tỉnh/Thành phố): mỗi tỉnh có mã riêng và tên.
  • Bảng QuanHuyen (Quận/Huyện): mỗi quận/huyện thuộc một tỉnh (liên kết qua khoá ngoại idTinh).

Theo yêu cầu, ta tạo bảng Tỉnh/Thành phố với cấu trúc:

#Tên trườngKiểu dữ liệuLengthÝ nghĩa
1idTinhINT11Mã tỉnh/thành phố (khoá chính, AUTO_INCREMENT)
2tenTinhVARCHAR255Tên tỉnh/thành phố

Bước 2 — Thao tác trên HeidiSQL:

  1. Tạo CSDL mới, ví dụ tên diachinh (hành chính Việt Nam).
  2. Tạo bảng TinhThanh, khai báo 2 trường như bảng trên.
  3. Chọn idTinh làm khoá chính (Create new index → PRIMARY).
  4. Chọn Lưu.
Cách 2 — Dùng câu lệnh SQL
-- Tạo CSDL
CREATE DATABASE diachinh;
USE diachinh;

-- Tạo bảng Tỉnh/Thành phố
CREATE TABLE TinhThanh (
    idTinh  INT NOT NULL AUTO_INCREMENT,
    tenTinh VARCHAR(255) NOT NULL,
    PRIMARY KEY (idTinh)
);

Có thể nhập thử vài dữ liệu để kiểm tra:

INSERT INTO TinhThanh (tenTinh) VALUES
    (N'Hà Nội'),
    (N'Thành phố Hồ Chí Minh'),
    (N'Đà Nẵng'),
    (N'Hải Phòng'),
    (N'Cần Thơ');
💡 Mẹo nhớ: Khi mở rộng để quản lí Quận/Huyện, bảng QuanHuyen sẽ có thêm trường idTinh làm khoá ngoại (FOREIGN KEY) trỏ về bảng TinhThanh, thể hiện quan hệ "một tỉnh có nhiều quận/huyện".
⚠️ Lưu ý thi: Khi nhập dữ liệu tiếng Việt có dấu, thêm tiền tố N'...' trước chuỗi và đặt bảng dùng bảng mã utf8 để tránh lỗi font.

🎯 Ghi nhớ: - Tạo bảng gồm 3 việc chính: khai báo các trường (tên + kiểu dữ liệu)chọn khoá chínhlưu bảng. - Khoá chính phải duy nhấtkhông rỗng; nên chọn trường mã (id) tự tăng, không chọn trường tên vì dễ trùng. - Có thể tạo bảng bằng giao diện HeidiSQL hoặc bằng câu lệnh SQL CREATE TABLE — hai cách cho kết quả như nhau, cách dùng lệnh nhanh và chính xác hơn.
Chế độ đọc sách →