Каков «лучший» способ хранения международных адресов в базе данных?

Каков « лучший » способ хранить международные адреса в базе данных? Ответьте в форме схемы и объяснения причин, по которым вы решили нормализовать (или нет) то, как вы это сделали. Также объясните, почему вы выбрали тип и длину каждого поля.

Примечание: вы решаете, какие поля вы считаете необходимыми.

23.08.2008 18:45:47
Почтовые индексы могут быть сложными - например, в Ирландской Республике нет общей системы почтовых индексов, хотя почтовые индексы существуют для Дублина (все номера 1-24, за исключением 6W).
Geoglyph 15.01.2009 13:40:08
Я слышал об этом в прошлом году! Адреса в базах данных
Matt Ellen 9.05.2011 10:25:29
Следующее обсуждение может помочь .. stackoverflow.com/questions/1159756/…
chandraP 9.01.2014 16:30:54
6 ОТВЕТОВ
РЕШЕНИЕ

Простой текст произвольной формы.

Проверка всех мировых почтовых / почтовых индексов слишком сложна; фиксированный список стран слишком политически чувствителен; Обязательное административное деление штата / региона / другого района просто неуместно (слишком часто меня спрашивают, в каком округе я живу - когда нет, потому что Большой Лондон вовсе не округ).

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

Исключением является то, что вы делаете что-то, что в любом случае естественно ограничено одной страной. В этой ситуации вам следует попросить, скажем, пару {почтовый индекс, номер дома}, которой достаточно для идентификации почтового адреса. Я полагаю, что вы могли бы достичь аналогичных результатов с помощью расширенного почтового индекса в США.

25
23.08.2008 19:04:38
Большой Лондон не может быть округом, но, если вы не живете в самом лондонском Сити, вы, вероятно, обнаружите, что на самом деле вы живете в Суррее, Кенте, Эссексе или тому подобное.
belugabob 19.10.2008 18:49:13
Помещение в разные административные подразделения удобно для фильтрации по регионам. Как еще вы узнаете, в какую часть мира / страны вы продаете больше всего товаров?
Joeri Sebrechts 19.10.2008 19:08:33
В лучшем случае, сделать страну выбираемой. Страны создаются нечасто.
DrPizza 27.10.2008 20:40:30
О, и нет, я не живу в Суррее, Кенте, Эссексе или любом другом. Я живу в лондонском районе Ламбет, который является частью Большого Лондона, но не графства.
DrPizza 27.10.2008 20:41:29
@DrPizza, педант во мне должен сказать вам, что живя в Ламбете, вы живете в историческом графстве Суррей, но административном округе Большого Лондона. Смотрите abcounties.co.uk
darasd 3.06.2010 19:22:09

Вы должны предоставить немного больше информации о том, как вы планируете использовать данные. Например, поля, такие как Город, Штат, Страна, могут быть либо текстом в одной таблице, либо кодами, которые связаны с отдельной таблицей с помощью внешнего ключа.

Самый простой будет

Address_Line_01 (обязательно, не пусто) Address_Line_02 Address_Line_03 Ориентир Город (обязательно) Пин (обязательно) Провинция_Расположение штата (обязательно) Страна (обязательно)

Все вышеперечисленное может быть Text / Unicode с соответствующей длиной поля.

Номера телефонов, если применимо.

-3
23.08.2008 18:50:17
Только у нескольких стран есть государства.
Cem Kalyoncu 18.09.2009 19:16:24

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

9
29.09.2008 11:24:22

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

(UPS может объединить некоторые небольшие европейские страны, т. Е. Все страны с низким уровнем дохода, вероятно, обслуживаются из Бельгии - идея по-прежнему верна).

5
29.09.2008 11:31:27
Вы случайно имели в виду «исходящий» вместо «входящий»?
rinogo 6.06.2013 22:53:53

Я думаю, что добавление страны / города и текста адреса будет в порядке. страна и город должны быть отдельными для отчетности. Менеджеры всегда запрашивают такие отчеты, которые вы не ожидаете, и я не предпочитаю выполнять запрос LIKE через большую базу данных.

2
18.09.2009 19:19:53

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

Я думаю, что лучшее решение - это получить доступ к сторонней базе данных, которая содержит желаемый географический охват, и использовать ее для первоначального заполнения информации о вашем местоположении. Это позволит вам не делать изящную работу по созданию собственного. Если вам повезет, вы можете уменьшить нагрузку на ваш сервер, позволив новым пользователям получать правильную информацию о автозаполнении напрямую от вашего стороннего поставщика. В конце концов вы сможете заполнить большинство автозаполнения для информации о местоположении, такой как город, страна и т. Д. Из информации, содержащейся в вашей собственной базе данных из данных, введенных пользователем.

2
8.05.2011 22:57:27