Mã ở bảng này dẫn sang bảng khác
**Khóa ngoài** là trường hoặc nhóm trường trong một bảng dùng để tham chiếu tới khóa ở bảng khác. Trong bộ dữ liệu giả định, **Bản nhạc.Mã tác giả** dẫn tới **Tác giả.Mã tác giả**. Bảng **Bản thu** lưu ba trường **Mã bản thu**, **Mã bài**, **Mã ca sĩ**:
| Mã bản thu | Mã bài | Mã ca sĩ |
|---|---|---|
| R01 | K01 | S01 |
| R02 | K03 | S02 |
| R03 | K01 | S02 |
Ở đây Mã bản thu định danh từng bản thu. Mã bài và Mã ca sĩ là khóa ngoài: cùng một bài có thể được thu bởi nhiều ca sĩ. Mã `K01` xuất hiện hai lần trong Bản thu là bình thường; nó vẫn chỉ một hàng trong Bản nhạc.
Lần theo một bản thu
Bảng **Bản nhạc** có `K01` → “Mưa đầu mùa”, tác giả `T01`; `K03` → “Gió qua hiên”, cũng có tác giả `T01`. Bảng **Tác giả** có `T01` → An. Bảng **Ca sĩ** gồm `S01` → Chi, `S02` → Dung.
Muốn đọc R03, trước hết tìm R03 trong Bản thu: mã bài `K01`, mã ca sĩ `S02`. Đối chiếu `K01` với Bản nhạc được “Mưa đầu mùa” và mã tác giả `T01`; đối chiếu `S02` với Ca sĩ được Dung; đối chiếu `T01` với Tác giả được An. Vậy R03 là bản thu “Mưa đầu mùa” do Dung thể hiện, tác giả An.
Việc lấy thông tin qua các mã chung gọi là **liên kết dữ liệu** giữa các bảng. Chỉ viết cùng tên cột chưa đủ: mã tham chiếu phải được hiểu đúng theo quy tắc dữ liệu và phải có bản ghi tương ứng ở bảng được tham chiếu.
Bài luyện
Trong Bản thu, trường nào dẫn tới khóa Mã bài ở bảng Bản nhạc?
Mã bản thu định danh bản thu.
Mã ca sĩ dẫn tới bảng Ca sĩ.
Bản thu không lưu trực tiếp tên tác giả.
Mã bài là trường tham chiếu tới Bản nhạc.
Lời giải
Bản thu có Mã bài như K01; đối chiếu K01 với khóa Mã bài của Bản nhạc để lấy tên bài. Vì vậy Mã bài ở Bản thu là khóa ngoài.
Bài luyện
Theo các bảng đã cho, bản thu R02 là bài nào và do ai thể hiện?
R02 có mã bài K03 và ca sĩ S02.
K03 là “Gió qua hiên”; S02 là Dung.
An là tác giả của K03, không phải ca sĩ S02.
K02 mới là “Ngày nắng”.
Lời giải
Hàng R02 cho K03 và S02. Tra K03 ở Bản nhạc được “Gió qua hiên”; tra S02 ở Ca sĩ được Dung.
Bài luyện
Vì sao K01 có thể xuất hiện ở cả R01 và R03 mà không vi phạm khóa chính của Bản nhạc?
Một bản nhạc có thể được tham chiếu ở nhiều bản thu.
Không có quy tắc bắt buộc trùng mã.
R01 và R03 có mã bản thu riêng.
Tên bài của K01 giữ nguyên trong Bản nhạc.
Lời giải
Khóa chính Mã bài phân biệt các hàng của Bản nhạc, nơi K01 chỉ có một hàng. Bản thu có thể dùng K01 ở hai hàng khác nhau để dẫn tới cùng bài.
Đang học