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

Tạo bảng ca sĩ và kiểm hai bảng đơn

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

Làm tiếp bảng ca sĩ

**Nhiệm vụ:** tạo bảng `casi` trong CSDL thực hành chưa có bảng tên này, chẳng hạn `btvn19_lab` ở bài trước. Không xóa bảng cũ để làm lại khi chưa kiểm dữ liệu. Phần mẫu dùng **HeidiSQL 12.21.1.1 Linux, giao diện English**, kết nối **MySQL 8.0.46**. Nháy phải CSDL → **Create new → Table**, đặt tên `casi`; dùng **Add** để thêm hai trường. `idCasi` có Datatype **INT**, bỏ Allow NULL và chọn **AUTO_INCREMENT** trong Default. `tenCasi` có Datatype **VARCHAR**, Length/Set **255**, bỏ Allow NULL, Default là **No default value**. Chọn đúng dòng `idCasi`, nháy phải → **Create new index → PRIMARY**; mở Indexes để kiểm khóa chỉ có mã này rồi Save. **Kết quả cần thấy:** bảng `casi` xuất hiện trên cây. Mở lại cấu trúc để kiểm hai trường và khóa; Foreign keys bằng 0. Nếu Save báo cột tự tăng phải là một khóa, kiểm lại PRIMARY ở `idCasi`; chưa có tên bảng trên cây thì chưa xem là tạo xong. Sau bước này, hai bảng người `nhacsi` và `casi` chưa có khóa ngoại; Bài 20 mới thêm các bảng có mã tham chiếu.

Không nhầm tên người với mã người

SGK nói đến khóa cấm trùng khi bài toán yêu cầu một giá trị hoặc một **cặp giá trị** không lặp. Tên nhạc sĩ/ca sĩ có thể trùng giữa hai người nên không tự đặt UNIQUE trên `tenNhacsi` hoặc `tenCasi`. Mã tự tăng phân biệt các hàng cùng tên. PRIMARY KEY đã ngăn trùng mã; UNIQUE của cặp tên bài–mã nhạc sĩ và cặp mã bài–mã ca sĩ thuộc những bảng tạo ở Bài 20, theo giả định Bài 18. Ví dụ hai hàng hư cấu dưới đây vẫn hợp lệ vì mã khác nhau: | idCasi | tenCasi | |---|---| | 1 | Minh An | | 2 | Minh An | Hai tên giống nhau chưa đủ để kết luận đó là cùng một người. Nếu tự đặt UNIQUE trên `tenCasi`, một trong hai hàng sẽ bị loại dù mô hình cho phép người cùng tên. Trang94 SGK cập nhật gợi ý CSDL địa phương hai cấp. Khi thực hành thêm trên CSDL thử, tạo `tinh` tương tự: `idTinh INT NOT NULL AUTO_INCREMENT` làm PRIMARY KEY và `tenTinh VARCHAR(255) NOT NULL`, không đặt mặc định cho tên. Mở lại để kiểm khóa nằm ở mã; chỉ dùng dữ liệu như “Tỉnh Mẫu A”, “Thành phố Mẫu B”. Bảng phường/xã có khóa ngoại `idTinh` thuộc bước sau; bảng này không phải danh sách địa giới thực tế.

Bài luyện

Sau Bài 19, bảng casi được thiết kế thế nào?
Chọn một đáp án

Bài luyện

Vì sao không đặt UNIQUE riêng trên tenCasi trong mô hình này?
Chọn một đáp án

Bài luyện

Sau khi tạo nhacsi và casi, bảng nào chưa cần khóa ngoại?
Chọn một đáp án

Đang học