Хранение геополитических данных в MySQL - PullRequest
0 голосов
/ 13 июня 2018

Мое приложение имеет пользователей и свойства, оба из которых могут иметь адреса.Это приложение также будет в значительной степени аналитическим, и нам нужно будет иметь возможность собирать все адреса, принадлежащие определенному городу, почтовому индексу, графству или штату.

Хранение стран, штатов и округов легкоПоскольку штат принадлежит ровно 1 стране, а округ - ровно 1 государству.

Однако при хранении почтовых индексов и городов проблема становится немного более сложной.Штат может иметь несколько почтовых индексов, а почтовый индекс может принадлежать нескольким штатам.Почтовые индексы и города также могут принадлежать нескольким штатам / округам.Черт, некоторые города и почтовые индексы могут даже не принадлежать к каким-либо округам, таким как Вашингтон, округ Колумбия.

Существует ли установленная модель базы данных, которую я могу использовать, чтобы обеспечить учет всех пограничных случаев, и в то же время разрешать запросыпо каждому типу?

1 Ответ

0 голосов
/ 14 июня 2018

Однако при хранении почтовых индексов и городов проблема становится несколько более сложной.

Сначала необходимо создать Страны, города, Штаты и почтовые индексы.

Очевидно, что между сущностями States и Zip_codes существует отношение M: M, поэтому вам нужно будет создать новую таблицу и назовем ее States_Zip_codes, которая содержит два внешних ключа State_id FK и Zip_Id как FK.

Почтовые индексы и города также могут принадлежать нескольким штатам / округам.

В этом случае отношение один ко многим, поэтому Zip_code_id (первичный ключ таблицы Zip_codes) является таблицей FK в государствах.и так далее.

Я не понимаю природу отношений, это много ко многим или один ко многим

некоторые города и почтовые индексы могут даже не принадлежать к каким-либо округам, таким как Вашингтон,DC

Так что в поле city_name (свойство) оно будет равно нулю

Надеюсь, это поможет..

...