Существует ли общий дизайн базы данных адресов для всех адресов в мире? - PullRequest
111 голосов
/ 30 мая 2009

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

Ответы [ 12 ]

112 голосов
/ 31 мая 2009

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

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

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

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

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

  • Строительство
  • Sub-Building
  • Номер помещения (номер дома)
  • Диапазон помещений
  • 1032 * Проезд *
  • Sub-1034 * Проезд *
  • Двойная зависимость
  • Sub-нас.пункт

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

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

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

43 голосов
/ 30 мая 2009

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

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

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

enter image description here

25 голосов
/ 30 мая 2009

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

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

12 голосов
/ 02 июня 2009

Иногда ближайший к улице адрес можно найти в городе.

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

Тогда я получил данные от клиента. Некоторые школьные адреса были такими, как «Напротив рынка, рядом с парикмахером» или «Рядом со старым автобусным стендом».

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

9 голосов
/ 31 мая 2009

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

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

Например

Via Eroi della Repubblica
89861 Tropea VV
Italy

Это несколько отличается от порядка для адресов в США - во второй строке.

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

Также проверьте тег ' почтовый индекс '.


Редактировать : Обратный порядок области и города - за ВПС

5 голосов
/ 15 декабря 2010

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

2 голосов
/ 23 августа 2013

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

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

2 голосов
/ 30 мая 2009

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

2 голосов
/ 30 мая 2009

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

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

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

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

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

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

2 голосов
/ 30 мая 2009

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

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

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

...