SAU BÀI HỌC NÀY EM SẼ
- Hiểu được cách thức nhập dữ liệu đối với các bảng có trường khóa ngoài – trường tham chiếu đến một khóa chính của bảng khác.
❓ CÂU HỎI MỞ ĐẦU
Hỏi: Khi cập nhật một bảng có khóa ngoài, dữ liệu của trường khóa ngoài phải là dữ liệu tham chiếu được đến một trường khóa chính của một bảng tham chiếu. HeidiSQL hỗ trợ kiểm soát điều này như thế nào?
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 chuột chọn thẻ Dữ liệu. - Bảng gồm các trường:
idBannhac,tenBannhac,idNhacsi. - Trường
idBannhaccó kiểu INT, AUTO_INCREMENT → không cần nhập. - Nháy đúp chuột vào ô trường
tenBannhacđể nhập tên bản nhạc. - Trường
idNhacsilà trường khóa ngoài (tham chiếu đếnidNhacsicủa bảngnhacsi). - Khi nhập, nháy đúp chuột vào ô
idNhacsi, HeidiSQL sẽ hiển thị danh sách tên nhạc sĩ có sẵn để chọn → đảm bảo tính nhất quán dữ liệu.
⭐ Cần nhớ: Khóa ngoài → HeidiSQL hiển thị danh sách thả xuống (drop-down) chứa giá trị hợp lệ từ bảng tham chiếu.
b) Sửa chữa, cập nhật dữ liệu trong bảng bannhac:
Nháy đúp chuột vào ô dữ liệu muốn sửa (tương tự Bài 21).
c) Xoá dữ liệu trong bảng bannhac:
Thực hiện tương tự các bước ở Bài 21 để xóa các dòng dữ liệu.
d) Xoá dữ liệu trong bảng nhacsi:
Bảng bannhac chứa idNhacsi tham chiếu đến idNhacsi của bảng nhacsi.
Quy tắc: MySQL/HeidiSQL sẽ kiểm tra và ngăn chặn việc xóa các dòng trong bảng nhacsi nếu idNhacsi đó đã được dùng/tham chiếu trong bảng bannhac (tránh lỗi vi phạm tính toàn vẹn dữ liệu).
⭐ Cần nhớ: Không thể xóa bản ghi ở bảng mẹ (nhacsi) nếu bản ghi đó đang được tham chiếu bởi bảng con (bannhac).
e) Truy xuất dữ liệu trong bảng bannhac:
Thực hiện các truy xuất dữ liệu theo thứ tự tăng/giảm dần hoặc lọc danh sách tên các bản nhạc theo tiêu chí.
Ví dụ: tìm các bản nhạc của nhạc sĩ Văn Cao.
NHIỆM VỤ 2: TÌM HIỂU GIAO DIỆN ỨNG DỤNG QUẢN LÍ DỮ LIỆU ÂM NHẠC
Đặc điểm giao diện chuyên biệt (Hình 22.7):
- Nhập bản nhạc mới: Nhập tên bản nhạc, chọn nhạc sĩ từ danh sách có sẵn → bấm Nhập.
- Tìm kiếm: Nhập từ khóa tên bản nhạc/nhạc sĩ → bấm Tìm.
- Sửa: Chọn nút radio (○) ở dòng tương ứng để hiển thị thông tin lên biểu mẫu, chỉnh sửa rồi bấm Nhập.
- Xóa: Chọn checkbox (☐) ở đầu các dòng cần xóa rồi bấm Xoá.
⭐ Ưu điểm: Người dùng không cần nhớ cấu trúc bảng CSDL hay câu lệnh SQL phức tạp mà vẫn thực hiện được Thêm, Sửa, Xóa, Tìm kiếm một cách trực quan, an toàn.
📌 TÓM TẮT DỄ HỌC (GHI NHỚ CỐT LÕI)
| Nội dung | Cần nhớ |
|---|---|
| Khóa ngoài (Foreign Key) | Dữ liệu nhập vào phải tồn tại ở khóa chính của bảng tham chiếu |
| HeidiSQL hỗ trợ | Hiển thị drop-down list chứa giá trị hợp lệ khi nhập/sửa khóa ngoài |
| Tính toàn vẹn khi xóa | Không thể xóa bản ghi ở bảng mẹ nếu đang được tham chiếu bởi bảng con |
| Phần mềm ứng dụng | Giúp thao tác Thêm, Sửa, Xóa, Tìm kiếm trực quan, không cần nhớ SQL |
✍ ️ GIẢI CÁC CÂU HỎI TRONG BÀI HỌC
1. Trả lời Câu hỏi mở đầu:
HeidiSQL hỗ trợ bằng cách khi người dùng nhập/sửa dữ liệu tại trường khóa ngoài, hệ thống sẽ hiển thị một danh sách chọn (drop-down) chứa các bản ghi hợp lệ từ bảng tham chiếu. Ngoài ra, khi người dùng cố tình xóa dữ liệu đang được tham chiếu, hệ thống sẽ xuất thông báo lỗi và ngăn chặn thao tác đó.
2. Câu hỏi Nhiệm vụ 2:
Câu 1: Người sử dụng có cần biết, nhớ cấu trúc của bảng bannhac, bảng nhacsi không?
→ Không. Giao diện ứng dụng đã che giấu sự phức tạp của CSDL bên dưới. Người dùng chỉ cần thao tác trên các ô nhập liệu và nút bấm trực quan.
Câu 2: Giao diện trên có dễ hiểu, dễ sử dụng không?
→ Có. Giao diện tích hợp đầy đủ các chức năng (thêm, sửa, xóa, tìm kiếm) trên cùng một màn hình với các nút chức năng rõ ràng, thao tác đơn giản hơn rất nhiều so với việc nhập liệu trực tiếp trong hệ QTCSDL.
📝 LUYỆN TẬP
Cập nhật dữ liệu vào bảng banthuam:
- Mở bảng
banthuamtrong HeidiSQL. idBanthuamđể tự động tăng (AUTO_INCREMENT).- Chọn
idBannhacvàidCasitừ danh sách tham chiếu thả xuống.
Truy xuất dữ liệu bảng banthuam:
Sử dụng chức năng Sắp xếp/Lọc (Filter) trên thanh công cụ của HeidiSQL để lọc các bản thu âm theo ca sĩ hoặc bản nhạc.
🔎 VẬN DỤNG
❓ Thực hành cập nhật và truy xuất bảng PhuongXa trong CSDL quản lý danh sách tên các phường/xã, tỉnh/thành phố.
💡 Cách làm:
- Bảng
PhuongXasẽ có khóa ngoài làidQuanHuyen. - Nhập tên Phường/Xã, còn trường
idQuanHuyenchọn từ danh sách thả xuống của bảng Quận/Huyện có sẵn. - Thực hiện sửa, xóa và lọc danh sách Phường/Xã theo từng Quận/Huyện cụ thể.