btvn.vn
Tìm kiếm Đăng nhập

Luyện tập bản thu âm có hai khóa ngoại

Lưu trên thiết bị này
Thực hành tạo và khai thác cơ sở dữ liệu — ICT · Chọn bài khác

Một bản thu nối hai bảng cha

`banthuam(idBanthuam,idBannhac,idCasi)` đã được tạo ở Bài 20. Mở `bannhac` để đọc mã bài “Ngày nắng” và `casi` để đọc mã ca sĩ hư cấu “Linh Chi”. Trên máy thử, hai mã lần lượt là 6 và 1; máy khác có thể khác. Trong thẻ Data của `banthuam`, thêm hàng, để mã bản thu tự tăng, chọn đúng **hai mã đã tồn tại**, chốt từng ô rồi Post. Đọc lại hàng mới theo mã bản thu. Nếu cặp bài–ca sĩ ấy đã có, không thêm lặp vì mô hình đang đặt UNIQUE trên cặp `(idBannhac,idCasi)`. Khóa ngoại thứ nhất kiểm mã bài có trong `bannhac`, khóa thứ hai kiểm mã ca sĩ có trong `casi`; cả hai đều cần đúng. Một mã 99 không tồn tại ở một trong hai bảng sẽ bị từ chối dù mã còn lại hợp lệ. Đây chỉ là bài tập dữ liệu giả: cùng bài có thể gắn nhiều ca sĩ, còn quy tắc một cặp bài–ca sĩ chỉ có một hàng là giả định của mô hình, không phải quy luật mọi bản thu thực tế.

Đọc mã khi danh sách có tên giống nhau

Trong dữ liệu mẫu, hai bài “Mưa đầu mùa” có mã 1 và 2. Danh sách mã bài của HeidiSQL hiện tên kèm mã; chỉ nhìn tên chưa đủ chọn đúng bài. Trên bản sao thử, cặp `(2,1)` chưa có nên có thể dùng để luyện thêm một bản thu khác: 1. Data của `banthuam` → Insert. Để trống mã bản thu tự tăng. 2. Mở danh sách `idBannhac`, chọn **Mưa đầu mùa (2)**, nhấn Tab. Mở danh sách `idCasi`, chọn **Linh Chi (1)**, nhấn Tab; sau đó Post. 3. F5 và đọc lại: hàng mới có mã bài 2, mã ca sĩ 1. Trên bản sao thử, mã bản thu được cấp là 7; trên máy khác phải đọc mã thực tế. Khi luyện sửa, chọn đúng hàng theo mã bản thu, đổi **một mã tham chiếu** sang mã có thật và cặp chưa trùng, chốt ô rồi Post. Ví dụ bản thu mã 6 từ cặp `(6,1)` đổi sang `(6,2)`; mã bản thu và mã bài giữ nguyên. Khi xóa bản thu thử, chọn đầu hàng, Ctrl+Delete, kiểm hộp xác nhận một hàng rồi đọc lại. Xóa một bản thu không tự xóa bài hát hoặc ca sĩ ở bảng cha. Các thao tác này dùng HeidiSQL 12.21.1.1 bản GTK2, tiếng Anh trên Linux; nếu nháy đúp mới hiện ô mã, bấm mũi tên để mở danh sách.

Tìm một cặp bằng mã

Sau khi thêm, có thể dùng thẻ Data lọc `idBannhac` và `idCasi`, hoặc chạy: ```sql SELECT idBanthuam, idBannhac, idCasi FROM btvn19_lab.banthuam WHERE idBannhac = 6 AND idCasi = 1 ORDER BY idBanthuam; ``` Trên máy thử, câu này trả một hàng mang `idBanthuam = 6`; con số phụ thuộc các lần thêm trước. Nếu muốn xem **mọi ca sĩ** của một bài, chỉ giữ điều kiện `idBannhac = 6`; nếu muốn xem **mọi bài** của một ca sĩ, dùng `idCasi = 1`. Câu SELECT một bảng trả các mã đang chọn, không tự trả tên bài và tên ca sĩ. Trước khi sửa/xóa bản thu, chọn đúng hàng theo mã và đọc số hàng dự kiến thay đổi.

Bài luyện

Thêm một hàng banthuam hợp lệ cần kiểm gì?
Chọn một đáp án

Bài luyện

Muốn xem mọi bản thu của bài mã 6, bất kể ca sĩ, điều kiện nào đúng?
Chọn một đáp án

Bài luyện

Câu SELECT chỉ lấy idBannhac và idCasi từ banthuam trả về điều gì?
Chọn một đáp án

Đang học