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