Мне нужно хранить почтовые индексы в базе данных. Насколько большой должна быть колонна? - PullRequest
92 голосов
/ 28 ноября 2008

Я ожидаю, что в моей базе данных Oracle будет столбец VARCHAR2.

Почтовые индексы США равны 9.

Канадский - 7.

Я думаю, что 32 символа были бы разумным верхним пределом

Чего мне не хватает?

[EDIT] TIL: 12 - разумный ответ на вопрос Спасибо всем, кто внес свой вклад.

Ответы [ 8 ]

41 голосов
/ 28 ноября 2008

Пролистывая Страница почтовых кодов Википедии , 32 символа должно быть более чем достаточно. Я бы сказал, что даже 16 символов - это хорошо.

19 голосов
/ 26 марта 2015

Как уже говорил @ neil-mcguigan, в Википедии есть достойная страница по этой теме. Исходя из этого, 12 символов должны это сделать: http://en.wikipedia.org/wiki/List_of_postal_codes

В статье в Википедии перечислены ~ 254 страны, что весьма неплохо в отношении ВПС (Всемирный почтовый союз) насчитывает 192 страны-члена.

12 голосов
/ 29 ноября 2008

Зачем вам объявлять размер поля больше, чем фактические данные, которые вы ожидаете сохранить в нем?

Если первоначальная версия вашего приложения будет поддерживать адреса США и Канады (что я понимаю из того факта, что вы указали эти размеры в своем вопросе), я объявил бы поле как VARCHAR2 (9) ( или VARCHAR2 (10), если вы собираетесь хранить дефис в полях ZIP + 4). Даже если посмотреть на сообщения, сделанные другими в почтовые индексы разных стран, VARCHAR2 (9) или VARCHAR2 (10) будет достаточно для большинства, если не для всех других стран.

Вниз по линии, вы всегда можете изменить столбец, чтобы увеличить длину в случае необходимости. Но, как правило, трудно помешать кому-то где-то решить проявить «креативность» и вставить 50 символов в поле VARCHAR2 (50) по той или иной причине (т. Е. Потому, что им нужна другая строка на этикетке доставки). Вам также придется заниматься тестированием граничных случаев (будет ли каждое приложение, отображающее ZIP, обрабатывать 50 символов?). И с учетом того факта, что, когда клиенты извлекают данные из базы данных, они обычно выделяют память на основе максимального размера данных, которые будут извлечены, а не фактической длины данной строки. Вероятно, в этом конкретном случае это не такая уж большая проблема, но для некоторых ситуаций 40 байтов на строку могут быть приличной частью оперативной памяти.

Кроме того, вы можете также рассмотреть возможность хранения (по крайней мере для адресов США) почтового индекса и расширения +4 отдельно. Как правило, полезно иметь возможность создавать отчеты по географическим регионам, и вам часто может понадобиться собрать все в один почтовый индекс, а не разбивать его по расширению +4. На этом этапе полезно не пытаться выдать первые 5 символов почтового индекса.

3 голосов
/ 29 ноября 2008

Нормализация? Почтовые коды могут использоваться более одного раза и могут быть связаны с названиями улиц или городов. Отдельная таблица (ы).

3 голосов
/ 28 ноября 2008

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

Если вам действительно не нужно РАБОТАТЬ с почтовым индексом, я бы посоветовал не беспокоиться об этом. Под работой я подразумеваю специальную обработку, а не просто использование для печати адресных этикеток и т. Д.

Просто создайте три или четыре адресных поля VARCHAR2 (50) [например] и позвольте пользователю вводить все, что он хочет.

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

2 голосов
/ 29 декабря 2016

В Великобритании опубликованы стандарты: Каталог стандартов данных правительства Великобритании

Max 35 characters per line 

Международный почтовый адрес:

Minimum of 2 lines and maximum of 5 lines for the postal delivery point 
details, plus 1 line for country and 1 line for postcode/zip code 

Длина почтового индекса в Великобритании:

Minimum 6 and Maximum 8 characters 
2 голосов
/ 28 ноября 2008

Канадские почтовые индексы состоят всего из 6 символов, в виде букв и цифр (LNLNLN)

1 голос
/ 07 сентября 2011

Если вы хотите интегрировать почтовые индексы в базу данных, тогда лучше всего использовать базу данных geonames. Хотя его трудно использовать и понимать, но это самая большая географическая база данных, доступная для таких пользователей, как мы.

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

Для вашей информации varchar (20) достаточно для хранения почтовых индексов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...