I. MỤC TIÊU BÀI HỌC
- Biết cách tạo mới các bảng có khóa ngoài.
- Biết khai báo khóa chính.
- Biết khai báo khóa cấm trùng lặp (UNIQUE).
- Biết khai báo khóa ngoài (FOREIGN KEY).
- Biết chọn bảng được tham chiếu và trường được tham chiếu.
⭐ Công thức nhớ nhanh: KHÓA NGOÀI = LIÊN KẾT GIỮA CÁC BẢNG
II. NHIỆM VỤ & CẤU TRÚC BẢNG bannhac

Cấu trúc bảng bannhac:
bannhac(idBannhac, tenBannhac, idNhacsi)| STT | Tên trường | Kiểu dữ liệu | Thuộc tính |
|---|---|---|---|
| 1 | idBannhac | INT | AUTO_INCREMENT, PRIMARY KEY |
| 2 | tenBannhac | VARCHAR(255) | UNIQUE |
| 3 | idNhacsi | INT | UNIQUE, FOREIGN KEY |
⭐ Nhớ nhanh
bannhac
├── idBannhac → INT → PRIMARY KEY → AUTO_INCREMENT
├── tenBannhac → VARCHAR(255) → UNIQUE
└── idNhacsi → INT → UNIQUE → FOREIGN KEYIII. KHAI BÁO CÁC TRƯỜNG CỦA BẢNG bannhac
📋 Bước 1 – Tạo bảng:
- Trong CSDL mymusic: Tạo mới → Bảng
- Nhập tên bảng:
bannhac - Chọn Thêm mới để thêm các trường.
🔹 Trường idBannhac:
Nhập idBannhac → Kiểu: INT → Không NULL → AUTO_INCREMENT
Ý nghĩa: mã số định danh cho mỗi bản nhạc.
| idBannhac | tenBannhac |
|---|---|
| 1 | Tiến quân ca |
| 2 | Như có Bác Hồ |
| 3 | Việt Nam quê hương tôi |
🔹 Trường tenBannhac:
Thêm trường tenBannhac → Kiểu: VARCHAR(255)
Trường này lưu tên bản nhạc.
🔹 Trường idNhacsi:
Thêm trường idNhacsi → Kiểu: INT
Trường này lưu mã nhạc sĩ sáng tác bản nhạc.
| idBannhac | tenBannhac | idNhacsi |
|---|---|---|
| 1 | Tiến quân ca | 1 |
| 2 | Làng tôi | 2 |
IV. KHÓA NGOÀI LÀ GÌ?
Khóa ngoài (Foreign Key) là trường của một bảng dùng để tham chiếu đến khóa chính của bảng khác.
│ tham chiếu
│
⭐ Công thức nhớ: Bảng con → khóa ngoài → tham chiếu → khóa chính bảng cha
V. KHAI BÁO KHÓA CHÍNH & KHÓA CẤM TRÙNG
🔑 Khai báo khóa chính idBannhac:
- Chọn trường
idBannhac - Nháy chuột phải → Create new index → PRIMARY
Khóa chính giúp phân biệt duy nhất từng bản ghi trong bảng.
🔒 Khai báo khóa cấm trùng lặp (UNIQUE):
Chọn hai trường: tenBannhac và idNhacsi → Create new index → UNIQUE
Ý nghĩa: Không cho phép cặp (tenBannhac + idNhacsi) bị trùng nhau.
| tenBannhac | idNhacsi | Kết quả |
|---|---|---|
| Bài hát A | 1 | ✓ Được phép |
| Bài hát A | 2 | ✓ Được phép |
| Bài hát A | 1 | ✗ Không được |
⭐ UNIQUE = KHÔNG ĐƯỢC TRÙNG
VI. KHAI BÁO KHÓA NGOÀI idNhacsi
⚡ Đây là nội dung quan trọng nhất của Bài 20!
📋 CÁC BƯỚC KHAI BÁO KHÓA NGOÀI:
- Bước 1: Chọn thẻ
Foreign keys - Bước 2: Thêm một khóa ngoài mới → Trong phần Columns, chọn:
idNhacsi - Bước 3: Trong Reference table, chọn:
nhacsi - Bước 4: Chọn trường tham chiếu:
idNhacsicủa bảng nhacsi - Bước 5: Nhấn Lưu
KẾT QUẢ LIÊN KẾT
⭐ nhacsi là bảng được tham chiếu → bannhac là bảng có khóa ngoài
VII. SƠ ĐỒ LIÊN KẾT & CÁC BẢNG TRONG mymusic
SƠ ĐỒ LIÊN KẾT HAI BẢNG
PK idNhacsi
tenNhacsi
PK idBannhac
tenBannhac
FK idNhacsi
Các bảng trong CSDL mymusic:
| Bảng | Các trường | Khóa |
|---|---|---|
| nhacsi | idNhacsi, tenNhacsi | idNhacsi – PK |
| casi | idCasi, tenCasi | idCasi – PK |
| bannhac | idBannhac, tenBannhac, idNhacsi | idBannhac – PK; idNhacsi – FK |
| banthuam | idBanthuam, idBannhac, idCasi | idBanthuam – PK; có các FK |
📝 VIII. LUYỆN TẬP – TẠO BẢNG banthuam
❓ Hãy tạo lập bảng banthuam.
Theo cấu trúc: banthuam(idBanthuam, idBannhac, idCasi)
| STT | Tên trường | Kiểu dữ liệu | Thuộc tính |
|---|---|---|---|
| 1 | idBanthuam | INT | PRIMARY KEY, AUTO_INCREMENT |
| 2 | idBannhac | INT | FOREIGN KEY |
| 3 | idCasi | INT | FOREIGN KEY |
LIÊN KẾT
✅ Đáp án: Tạo bảng banthuam gồm idBanthuam, idBannhac, idCasi; trong đó idBanthuam là khóa chính, idBannhac và idCasi là các khóa ngoài tham chiếu lần lượt đến bảng bannhac và casi.
🔎 IX. VẬN DỤNG
❓ Hãy tạo lập bảng Phường/Xã trong CSDL quản lí tên phường/xã, tỉnh/thành phố.
💡 GỢI Ý THIẾT KẾ:
Bảng tinhthanhpho:
| Tên trường | Kiểu dữ liệu | Khóa |
|---|---|---|
| idTinhThanhPho | INT | PRIMARY KEY |
| tenTinhThanhPho | VARCHAR(255) | — |
Bảng phuongxa:
| Tên trường | Kiểu dữ liệu | Khóa |
|---|---|---|
| idPhuongXa | INT | PRIMARY KEY |
| tenPhuongXa | VARCHAR(255) | — |
| idTinhThanhPho | INT | FOREIGN KEY |
✅ Đáp án: Tạo bảng phuongxa gồm idPhuongXa, tenPhuongXa, idTinhThanhPho. Chọn idPhuongXa làm khóa chính. Trường idTinhThanhPho làm khóa ngoài, tham chiếu đến idTinhThanhPho của bảng tinhthanhpho.
🧠 X. TÓM TẮT – HỌC THUỘC NHANH
🔹 1. Khóa chính – PRIMARY KEY
Xác định duy nhất một bản ghi. Ví dụ: idBannhac → PRIMARY KEY
🔹 2. Khóa cấm trùng – UNIQUE
Không cho phép giá trị bị trùng. Trong bài: tenBannhac + idNhacsi → UNIQUE
🔹 3. Khóa ngoài – FOREIGN KEY
Liên kết hai bảng với nhau. Ví dụ: bannhac.idNhacsi → nhacsi.idNhacsi
| Loại khóa | Nhớ bằng từ khóa |
|---|---|
| PRIMARY KEY | DUY NHẤT BẢN GHI |
| UNIQUE | KHÔNG TRÙNG |
| FOREIGN KEY | LIÊN KẾT BẢNG |
