Хорошо ли использовать целочисленный столбец для хранения почтовых индексов США в базе данных? - PullRequest
48 голосов
/ 21 мая 2009

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

  1. Текст (вероятно, самый распространенный), т.е. char(5) или varchar(9) для поддержки +4 расширения
  2. Числовое значение, то есть 32-разрядное целое число

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

  • По своей природе он автоматически ограничивается только цифрами (тогда как без проверки стиль текста может хранить буквы и тому подобное, которые, насколько мне известно, никогда не действительны в почтовом индексе). Это не означает, что мы могли бы / должны / должны отказаться от проверки пользовательского ввода как обычно, однако!
  • Требуется меньше места, 4 байта (что должно быть достаточно даже для 9-значных почтовых индексов) вместо 5 или 9 байтов.

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

Есть ли что-то, что препятствует использованию int в качестве типа данных для почтовых индексов только для США?

Ответы [ 11 ]

0 голосов
/ 21 мая 2009

Целое число - это хорошо, но оно работает только в США, поэтому большинство людей этого не делают. Обычно я просто использую varchar (20) или около того. Вероятно, излишне для любой локали.

...