Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thiết kế cơ sở dữ liệu:Khóa tổng hợp so với khóa chính một cột

Có vẻ như bạn đang thu thập dữ liệu cho một danh bạ điện thoại. Bạn có phải? Tại sao các trạng thái lại quan trọng đối với bạn? Câu trả lời cho câu hỏi này có thể sẽ xác định thiết kế cơ sở dữ liệu nào sẽ phù hợp nhất với bạn.

Bạn có thể nghĩ rằng rõ ràng một thành phố là gì. Nó không thể. Nó phụ thuộc vào những gì bạn sẽ làm với dữ liệu. Ở Mỹ, có đơn vị này tên là MSA (Metropolitan Statistical Area). MSA của Thành phố Kansas kéo dài cả Thành phố Kansas, Kansas và Thành phố Kansas, Missouri. Đơn vị MSA có ý nghĩa hay không phụ thuộc vào mục đích sử dụng dữ liệu. Nếu bạn sử dụng mã vùng ở Hoa Kỳ để xác định thành phố, bạn sẽ có một nhóm rất khác với MSA. Một lần nữa, nó phụ thuộc vào những gì bạn sẽ làm với dữ liệu.

Nói chung, bất cứ khi nào các mô hình thứ bậc của các phân khu chính trị bị phá vỡ, giải pháp chung nhất là xem xét mối quan hệ nhiều-nhiều. Bạn giải quyết vấn đề này giống như cách bạn giải quyết nhiều vấn đề khác. Bằng cách tạo một bảng mới, với hai khóa ngoại. Trong trường hợp này, các khóa ngoại là IdAreacode và IdStates.

Bây giờ bạn có thể có một mã vùng ở nhiều trạng thái và một trạng thái bao gồm nhiều mã vùng. Có vẻ xấu hổ khi tích lũy thêm chi phí này để trang trải chỉ một trường hợp ngoại lệ. Bạn có biết liệu trường hợp ngoại lệ mà bạn đã khám phá ra chỉ là phần nổi của tảng băng chìm, và có rất nhiều trường hợp ngoại lệ như vậy không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ trả lại một hàng từ bảng ngoài cùng bên phải cho mọi hàng trong bảng ngoài cùng bên trái

  2. Sự cố khi tạo truy vấn MySQL trong Symfony có chứa JOIN và RAND ()

  3. Tham gia các bảng có vấn đề SUM trong MYSQL

  4. Dấu thời gian MySQL chọn phạm vi ngày

  5. Các phương pháp hay nhất của mysqldump:Phần 1 - Điều kiện tiên quyết của MySQL