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

Vận dụng: bảng phường/xã thuộc tỉnh

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

Từ bảng nhạc sang bảng địa phương

Theo trang SGK cập nhật, bài vận dụng xét tỉnh/thành phố và phường/xã. Trong **CSDL giả định** có `tinh(idTinh,tenTinh)` và `xa(idXa,tenXa,idTinh)`: `xa.idXa` là PRIMARY KEY; `xa.idTinh` là FOREIGN KEY tới `tinh.idTinh`. Nếu quy ước không cho hai phường/xã cùng tên **trong một tỉnh**, thêm UNIQUE `(tenXa,idTinh)`. Hai tỉnh khác nhau vẫn có thể có một phường/xã cùng tên. Quy tắc này cần được nêu rõ trước khi tạo chỉ mục. Dùng T01 = Tỉnh Mẫu A, T02 = Thành phố Mẫu B, X01/X02 là mã giả. Các mã ấy không phải mã hành chính thật. Không thêm cấp huyện vào sơ đồ hai cấp của trang cập nhật. Khi có nhu cầu dùng dữ liệu địa phương thực, phải đối chiếu nguồn hành chính hiện hành ở thời điểm triển khai; bài này chỉ luyện thiết kế bảng.

Giữ cùng một cách kiểm

Trước khi lưu, kiểm `tinh` đã có bảng và `idTinh` làm khóa chính, kiểu của `xa.idTinh` khớp với `tinh.idTinh`, ba trường của `xa` có ý nghĩa rõ, UNIQUE gồm đúng cặp và Foreign keys trỏ đúng bảng/cột. Khi nhập hàng phường/xã, `idTinh` phải là mã tỉnh/thành phố đã tồn tại. Cách suy nghĩ này giống `bannhac → nhacsi`: một mã riêng cho từng hàng, một mã tham chiếu sang bảng cha, và một cặp giá trị được giữ không trùng **theo quy ước của bài toán**. Tên có thể giống ở hai tỉnh, nên không dùng `tenXa` một mình làm khóa chính.

Tạo bảng xa với mã số trong CSDL học tập

Các nhãn T01/X01 ở sơ đồ giúp đọc quan hệ. Trong lần thực hành này, dùng **mã số INT** giống Bài 19; không gõ T01 vào cột INT. Bảng `tinh` đã có Tỉnh Mẫu A mã 1, Thành phố Mẫu B mã 2. Đây đều là dữ liệu giả. Trên HeidiSQL 12.21.1.1 tiếng Anh/Linux, chọn CSDL học tập → Create new → Table, đặt tên `xa`. Dùng Add khai báo: | Trường dữ liệu | Kiểu và điều kiện | |---|---| | idXa | INT, NOT NULL, AUTO_INCREMENT, PRIMARY | | tenXa | VARCHAR(255), NOT NULL, No default value | | idTinh | INT, NOT NULL, No default value; cùng kiểu/Unsigned với tinh.idTinh | Chọn đồng thời `tenXa`, `idTinh` để tạo **một UNIQUE gồm hai cột**. Trong Foreign keys, Add một dòng: Columns là `idTinh`, Reference table là `tinh`, Foreign columns là `idTinh`; giữ NO ACTION rồi Save. Mở lại cấu trúc, kiểm PRIMARY/UNIQUE/FK trước khi nhập dữ liệu. Nếu ô idTinh vẫn mặc định 0, đổi về No default value: mã 0 không có trong bảng tỉnh của bài tập này.

Bài luyện

Trong mô hình hai cấp giả định, xa.idTinh có vai trò gì?
Chọn một đáp án

Bài luyện

Hai tỉnh T01 và T02 cùng có phường tên “Phường Mẫu”. UNIQUE(tenXa,idTinh) sẽ làm gì?
Chọn một đáp án

Bài luyện

Vì sao bài tập dùng T01, X01 thay cho tên và mã địa phương thật?
Chọn một đáp án

Đang học