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

Từ danh sách bản thu đến bảng ca sĩ

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 danh sách dễ ghi nhưng khó sửa

Xét một **ví dụ âm nhạc hư cấu** mở rộng từ Bài 17. Cần quản lí mỗi bản thu gồm tên bài, nhạc sĩ sáng tác và ca sĩ thể hiện. Bốn bản thu là: | Mã bản thu | Tên bài | Nhạc sĩ | Ca sĩ | |---|---|---|---| | R01 | Mưa đầu mùa | Mai An | Linh Chi | | R02 | Mưa đầu mùa | Mai An | Quang Minh | | R03 | Ngày nắng | Mai An | Linh Chi | | R04 | Đêm yên | Hà Vy | Quang Minh | Ban đầu có thể lập một bảng `banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)`. `idBanthuam` xác định từng bản thu, nên là **khóa chính**. Mã R01 khác R02 dù cùng bài: mỗi hàng nói về một lần thể hiện theo phạm vi bài toán. Bảng gộp đủ thông tin để đọc, nhưng tên “Linh Chi” và “Quang Minh” bị ghi nhiều lần.

Tách tên ca sĩ, giữ mã để nối

Nếu cần sửa cách ghi tên Linh Chi, bảng gộp phải sửa cả R01 và R03. Sửa sót một hàng sẽ làm dữ liệu không thống nhất. Hãy lập bảng `casi(idCasi, tenCasi)` với C01 = Linh Chi, C02 = Quang Minh. Trong `banthuam`, thay tên ca sĩ bằng `idCasi`: R01/R03 mang C01, R02/R04 mang C02. `idCasi` ở bảng **casi** là khóa chính; `idCasi` ở bảng **banthuam** là **khóa ngoại** tham chiếu khóa ấy. Khi đọc R03, tra C01 ở casi để biết ca sĩ là Linh Chi. Khi tên cần chỉnh, sửa một hàng C01; các bản thu vẫn nối bằng mã. Việc tách bảng có ích khi mã và quan hệ được nhập, kiểm đúng; chỉ đổi tên cột mà không nối dữ liệu thì chưa giải quyết được vấn đề.

Bài luyện

Trong bảng gộp banthuam, vì sao idBanthuam phù hợp làm khóa chính?
Chọn một đáp án

Bài luyện

Trong ví dụ, nếu tên Linh Chi cần sửa ở bảng gộp, phải kiểm những hàng nào?
Chọn một đáp án

Bài luyện

Sau khi tách bảng casi, idCasi ở banthuam có vai trò gì?
Chọn một đáp án

Đang học