Существует ли общий дизайн базы данных уличных адресов для всех адресов мира?


Я программист и честно говоря не знаю уличных адресных структур мира, просто как в моей стране структурирована :) так Какой же лучший и общий дизайн базы данных для хранения уличных адресов? Он должен быть настолько прост в использовании, быстро запрашивать и динамично хранить все уличные адреса мира, который идентифицирует только один идентификатор
Спасибо большое

12 105

12 ответов:

в стандартном наборе полей можно представить адреса из множества разных стран. Основная идея именованного маршрута доступа (магистрали), на котором расположены названные или пронумерованные здания, довольно стандартна, за исключением Китая иногда. Другие почти универсальные понятия включают в себя: наименование населенного пункта (город/поселок/деревня), который может быть в общем случае обозначен как населенный пункт; наименование региона и присвоение буквенно-цифрового почтового индекса. Обратите внимание, что почтовые индексы, также известный как zip коды, чисто числовые только в некоторых странах. Вам понадобится много полей, если вы действительно хотите быть универсальными.

Всемирный почтовый союз ВПС предоставляет адресные данные для многих стран в стандартный формат. Обратите внимание, что формат UPU содержит все адреса (вплоть до доступной точности поля) для всей страны, поэтому он является реляционным. При хранении адресов клиентов, где будет храниться только небольшая часть всех возможных адресов, лучше использовать одна таблица (или плоский формат), содержащая все поля и один адрес в строке.

разумный формат для хранения адресов будет следующим:

  • Адресные Строки 1-4
  • населенного пункта
  • края
  • почтовый индекс (или индекс)
  • страны

адресные строки 1-4 могут содержать такие компоненты, как:

  • здание
  • Строение
  • номер помещения (дом номер)
  • Выбор Помещения
  • проезд
  • Суб-Проходной Двор
  • Двойной-Зависит От Населенного Пункта
  • Суб-Местности

часто используются только 3 адресные строки, но этого часто недостаточно. Конечно, можно потребовать больше строк для представления всех адресов в официальном формате, но запятые всегда могут использоваться в качестве разделителей строк, что означает, что информация все еще может быть захвачена.

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

локальность может быть неясной, особенно различие между локальностью карты и почтовой локальностью. Почтовый район-это тот, который считается почтовым органом, который может иногда рядом будет большой город. Тем не менее, почтовый индекс, как правило, решить любые проблемы или расхождения там, чтобы позволить правильную доставку, даже если официальный пост-местности не используется.

посмотреть Ответы База Данных. В частности, это касается многих случаев:

(тип данных всех символов переменной длины)

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

enter image description here

спросите себя, что является главной цель хранения этих данных? Вы действительно собираетесь отправить письмо человеку по указанному адресу? Отслеживать демографию, население? Иметь возможность запрашивать у абонентов их правильный адрес в рамках некоторой базовой аутентификации/проверки? Все вышеперечисленное? Ничего из вышеперечисленного?

в зависимости от вашей фактической потребности, вы будете определять либо а) это действительно не имеет значения, и вы можете пойти на свободный текстовый подход, или б) структурированные / конкретные поля для всех стран, или c) специфическая архитектура страны.

иногда ближе всего вы можете добраться до адреса улицы является город.

У меня когда-то был проект, чтобы поместить все средние школы в Индии в Google Maps. Я написал шикарную программу с использованием API Google и думал, что это будет довольно легко.

затем я получил данные от клиента. Некоторые школьные адреса были такими вещами, как" напротив рынка, рядом с парикмахерской "или"рядом со старым автобусным стендом".

Это сделало мою задачу намного сложнее, так как, к сожалению, Google API не поддерживает этот формат.

для международных адресов чрезвычайно трудно найти способ форматирования информации, если она разбита на поля. Например, итальянский адрес использует:

<street address>
<zip> <town> <region>
<country>

например

Via Eroi della Repubblica
89861 Tropea VV
Italy

что весьма отличается от порядка для нас адресов-на второй строке.

см. также вопросы SO:

также проверьте тег'почтово-код'.


Edit: обратный порядок региона и города - per ВПС

может быть, это полезно: https://gist.github.com/259744 Для проекта я собрал таблицу информации обо всех странах мира, включая коды ISO, домен верхнего уровня, телефонный код, знак автомобиля, длину и регулярное выражение zip. Названия стран и комментарии к сожалению только на немецком языке...

В отличие от других ответов здесь, я считаю, что можно иметь структурированную адресную базу данных.

просто из шляпы, я могу думать о следующей структуре:

  • страны
  • Регион (Штат / Провинция)
  • Населенный Пункт (Город / Муниципалитет)
  • суб-населенный пункт (округ / другое подразделение населенного пункта)
  • улица

но как запросить его достаточно быстро?

Я всегда думаю, что это может быть достигнуто, чтобы попросить почтовый индекс (или почтовый индекс), который варьируется от страны к стране, но является твердым внутри страны.

таким образом, вы можете структурировать свои данные вокруг информации, предоставляемой почтовыми отделениями по всему миру.

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

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

Я рекомендую вам не пытаться сделать его слишком умным.

лен Silverston из Универсальная Модель Данных слава рекомендует отдельную иерархию GEOGRAPHIC BOUNDARIES и в зависимости от того, сколько свободной формы вы готовы принять либо простой STREET ADDRESS LINES или производные по странам.

нет, нет стандартной схемы адресации. Он обычно варьируется от страны к стране. Даже Всемирный Почтовый Союз сказал обращаясь к миру, адрес для всех нет. Лучшим решением для этого является использование 2/3-буквенных стандартов кода страны, известных как ISO 3166 и относиться ко всему остальному по стандартам страны.

однако, если вы действительно отчаянно хотите использовать легкодоступные инструменты для вашего проекта, вы можете попробовать Google Place API.

нет, абсолютно не. Если сравнивать путь нас и японские адреса работа, вы увидите, что это не возможно.

обновление:

с другой стороны, все может быть сделано, но есть компромисс.

один из подходов заключается в моделировании проблемы с таблицами address и address_attribute, с отношением 1:m между ними можно смоделировать все, что угодно. Таблица address_attribute будет иметь pk, имя, значение и fk, который указывает назад по его адресу Родительский ПК. Это почти как использование карты с именем, парами значений.

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

другой подход будет заключаться в проведении более всестороннего исследования того, как адреса моделируются по всему миру. В объектно-ориентированном мире у вас может быть западный класс адресов (street1 / street2/city/state / zip) и другие для Японии, Китая, столько, сколько необходимо для плитки адресного пространства. Тогда у вас будет главная таблица адресов и дочерние таблицы для других типов с отношением 1:1 между ними.

Как это делают Amazon или eBay? Они грузят интернационально. Есть ли у них языковые особенности пользовательского интерфейса? Я использовал только американскую локаль.

ваш дизайн должен сильно зависеть от вашей цели. Некоторые люди опубликовали, как структурировать данные. Поэтому, если вы просто хотите отправить кому-то s-mail, это будет сделано. Все начинает усложняться, если вы хотите использовать эти данные для навигации. Автомобильная навигация потребует дополнительных структур для хранения информации о движении (например, односторонние дороги), в то время как пешеходная навигация потребует много дополнительных данных. Вот небольшой пример: в моем городе, Мой район находится рядом с парком. Рядом с парком находится бывший аэродром (по сути, один из старейших в Европе) превратился в музей авиации. Рядом с Музеем авиации находится бизнес-парк. Номер улицы для музея-39, в то время как номера бизнес – парка начинаются с 39A. поэтому может показаться, что 39 и 39A близки, но требуется около мили, чтобы дойти от одного до другого (и даже больше, если ехать на машине) .
Это лишь небольшой пример, взятый из моего города, я думаю, что вы, вероятно, можете найти много исключений (особенно в сельских и диких уголков каждый страна.)