39

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

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

+0

Я рассказывал об этом в прошлом году! [Адреса в базах данных] (http://mojoai.blogspot.com/2010/12/addresses-in-databases.html) – 2011-05-09 10:25:29

+0

Почтовые индексы могут быть сложными - например, общая система почтовых индексов в Ирландии отсутствует, хотя Почтовые индексы существуют для Дублина (все пронумерованы 1-24, за исключением 6W). – Geoglyph 2009-01-15 13:40:08

+1

После обсуждения может помочь .. http://stackoverflow.com/questions/1159756/how-should-international-geographical-addresses-be-stored-in-a-relational-databa – chandraP 2014-01-09 16:30:54

ответ

24

Обычный текст свободной формы.

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

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

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

-3

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

Простейшее будет

Address_Line_01 (обязательно, без пустой) Address_Line_02 Address_Line_03 Landmark Город (обязательно) Pin (обязательно) Province_District State (обязательно) Страна (обязательно)

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

Телефоны, если применимо.

+1

Только куча стран имеет состояния. – 2009-09-18 19:16:24

9

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

5

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

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

2

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

2

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

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

Смежные вопросы