На первый взгляд может показаться, что у меня есть два основных варианта хранения почтовых индексов в таблице базы данных:
- Текст (вероятно, самый распространенный), т.е.
char(5)
или varchar(9)
для поддержки +4 расширения
- Числовое значение, то есть 32-разрядное целое число
И то, и другое удовлетворяет требованиям данных, если предположить, что международных проблем нет. В прошлом мы, как правило, только что прошли текстовый маршрут, но мне было интересно, если кто-то делает обратное? Из краткого сравнения видно, что целочисленный метод имеет два явных преимущества:
- По своей природе он автоматически ограничивается только цифрами (тогда как без проверки стиль текста может хранить буквы и тому подобное, которые, насколько мне известно, никогда не действительны в почтовом индексе). Это не означает, что мы могли бы / должны / должны отказаться от проверки пользовательского ввода как обычно, однако!
- Требуется меньше места, 4 байта (что должно быть достаточно даже для 9-значных почтовых индексов) вместо 5 или 9 байтов.
Кроме того, похоже, что это не повредит выводу дисплея. Тривиально набрать ToString()
для числового значения, использовать простую манипуляцию со строками, чтобы вставить дефис или пробел или что-то еще для расширения +4, и использовать форматирование строки для восстановления начальных нулей.
Есть ли что-то, что препятствует использованию int
в качестве типа данных для почтовых индексов только для США?