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

Mở rộng mô hình: ngày sinh và địa phươ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

Khi tên người có thể trùng

Nếu hai người cùng tên, riêng tên không đủ phân biệt. Ta đã có `idNhacsi` và `idCasi` làm mã riêng cho từng người; có thể thêm `ngaySinh` vào **cả** bảng nhacsi và casi khi bài toán cần quản lí thông tin ấy. Ngày sinh giúp đối chiếu, nhưng cũng có thể trùng; khóa chính vẫn là mã. Không thu ngày sinh thật của học sinh để làm bài tập. Nếu muốn lưu nơi sinh theo tỉnh/thành phố, có thể thêm bảng `tinh(idTinh, tenTinh)` rồi đặt `idTinhNoiSinh` ở **cả** nhacsi và casi, tham chiếu `tinh.idTinh`. Có thể lưu tên tỉnh trực tiếp ở mỗi người nếu phạm vi rất nhỏ, nhưng sẽ lặp tên và khó sửa đồng bộ. Phải xác định yêu cầu quản lí trước khi thêm bảng, trường hoặc quy tắc. Ví dụ này dùng địa danh hư cấu, không coi mã hay danh sách minh họa là dữ liệu hành chính hiện hành.

Mô hình phường/xã thuộc tỉnh/thành phố

Theo yêu cầu vận dụng của **trang SGK đã cập nhật**, chỉ xét hai cấp: `tinh(idTinh, tenTinh)` và `xa(idXa, tenXa, idTinh)`. Ví dụ giả T01 = Tỉnh Mẫu A, T02 = Thành phố Mẫu B; X01 là Phường Mẫu thuộc T01, X02 là Xã Mẫu thuộc T01, X03 là Phường Khác thuộc T02. `xa.idTinh` là khóa ngoại, giúp biết mỗi hàng phường/xã thuộc tỉnh/thành phố nào trong dữ liệu ví dụ. Nếu `idXa` duy nhất **toàn bộ CSDL**, dùng `idXa` làm khóa chính. Nếu chỉ đánh số xã từ 1 trong **từng tỉnh**, mã số xã có thể lặp ở tỉnh khác, lúc ấy có thể dùng cặp `(idXa, idTinh)` làm khóa chính. Tên một phường/xã có thể giống nơi khác, nên không suy chỉ từ tên mà biết thuộc tỉnh nào. Đây là bài thiết kế quan hệ, không phải bản đồ hay danh sách địa giới thực tế.

Bài luyện

Muốn quản lí thêm ngày sinh để phân biệt người cùng tên trong cả hai nhóm, cần sửa bảng nào?
Chọn một đáp án

Bài luyện

Trong mô hình tỉnh–phường/xã của ví dụ, xa.idTinh dùng để làm gì?
Chọn một đáp án

Bài luyện

Nếu idXa chỉ được đánh số từ 1 trong từng tỉnh, hai tỉnh đều có xã số 1. Khóa chính nào có thể phân biệt hai hàng?
Chọn một đáp án

Đang học