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

Chọn khóa và kiểu dữ liệu cho bốn bảng

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ã định danh, mã tham chiếu và cặp không trùng

Mỗi bảng có một khóa chính theo mã của đối tượng: `casi.idCasi`, `nhacsi.idNhacsi`, `bannhac.idBannhac`, `banthuam.idBanthuam`. Khóa ngoại đi từ bảng giữ mã sang bảng có khóa chính: `bannhac.idNhacsi → nhacsi.idNhacsi`; `banthuam.idBannhac → bannhac.idBannhac`; `banthuam.idCasi → casi.idCasi`. Ví dụ R04 mang K03/C02; cả K03 và C02 phải tồn tại trong bảng được tham chiếu. Trong **phạm vi bài toán này**, mỗi tên bài của cùng một nhạc sĩ chỉ ghi một hàng, nên cặp `(tenBannhac, idNhacsi)` ở bannhac không được trùng. SGV còn quy ước một ca sĩ chỉ có một bản thu cho cùng một bài; vì thế cặp `(idBannhac, idCasi)` ở banthuam không được trùng. Đó là quy tắc của mô hình đang học, không phải quy luật âm nhạc: nếu cần lưu nhiều lần thu của cùng cặp bài–ca sĩ, phải thêm thông tin phân biệt như mã phiên bản hoặc ngày thu trước khi đặt ràng buộc.

Kiểu dữ liệu phải khớp ý nghĩa

SGK gợi ý dùng `INT` cho mã tự tăng và `VARCHAR(255)` cho tên. Đó là **một cách triển khai**, không bắt buộc mọi CSDL đều dùng đúng kiểu hay độ dài ấy. Ví dụ ở đây dùng mã dễ đọc K01/C01/N01/R01 nên khi tạo bảng thật phải chọn kiểu chuỗi phù hợp như `VARCHAR(3)` và bảo đảm khóa ngoại cùng kiểu với mã được tham chiếu; không thể khai báo mã K01 là `INT` rồi nhập chữ K. Khóa chính không được trống và không được trùng. Khóa ngoại dùng để giữ quan hệ đúng nếu hệ QTCSDL thực thi ràng buộc. `UNIQUE` trên hai trường là kiểm **cặp giá trị**, không đòi mỗi cột riêng lẻ duy nhất: K01/C01 và K01/C02 đều hợp lệ, còn thêm một bản thu khác cũng K01/C01 sẽ trái quy ước của bài. Trước khi tạo bảng ở Bài 19–20, phải thống nhất mã, kiểu và quy tắc; ảnh SGK89 có một mã nhạc sĩ sai so với bảng nhacsi, nên không chép mã ấy vào dữ liệu thực hành.

Bài luyện

Ở bảng banthuam, trường nào là khóa ngoại trỏ đến bảng bannhac?
Chọn một đáp án

Bài luyện

Theo quy ước mỗi ca sĩ chỉ có một bản thu cho cùng bài, cặp nào cần không trùng trong banthuam?
Chọn một đáp án

Bài luyện

Ví dụ dùng mã K01/C01/N01 dạng chữ và số. Cách chọn kiểu nào nhất quán khi tạo bảng?
Chọn một đáp án

Đang học