Я не вижу проблем с сохранением почтового индекса в виде числа, даже если вы не собираетесь выполнять над ним математические операции.
В нашем корпоративном хранилище данных мы получаем данные из многих устаревших систем. В результате мы видим, что используется много мусорных данных.
Возьмем наш случай, когда у нас есть географический идентификатор, который представляет собой заполненное нулями 4-значное «числовое» значение. Это поле часто используется для объединения таблиц.
Я бы выбрал один из двух подходов:
1) объявите столбец как поле типа char длиной 4 и добавьте CONSTRAINT LIKE '[09] [09] [09] [09]'
2) определите его как числовую длину 4 и, если пользователи захотят, отформатируйте значение только при отображении.
Цифровой подход 1 избавляет вас от необходимости постоянного форматирования, что не составляет особого труда, но если вы часто фильтруете и даже индексируете / объединяете столбец, я бы сказал, что у нас нет варианта №2.
Третья причина в том, что, по моему опыту, люди просто ленивы, когда дело доходит до добавления ограничений в базу данных, или они невежественны. Я думаю, что это больше лень, лично. Я считаю, что существующие ограничения в основном применяются как изменения в приложении, которое первоначально собирает данные, и эти изменения не применяются единообразно.
В результате наше хранилище данных в конечном итоге получает все виды вариаций, включая непоследовательное предварительное заполнение нулями или обоснование значения.
Когда вы определяете что-либо как INTEGER, вы автоматически получаете более эффективное хранилище, особенно при индексации по столбцу, а также и редактирования, которое все понимают, и, скорее всего, будут последовательно применяться в унаследованных системах разработчиками баз данных с различными возможностями.
У меня нет проблем с вариантом № 1, за исключением использования поля в индексе и моей озабоченности подходом, когда вы принимаете поле как афа-число, люди склонны добавлять в него больше мусора.
Взять, к примеру, наш идентификатор сотрудника Peoplesoft. Кто-то решил добавить «X» перед «числом», заполненным нулями, состоящим из 6 символов, чтобы обозначить, что работник является подрядчиком. Это нарушает мою личную практику не объединять отдельные части информации в одно поле. Это вызвало всевозможные проблемы несоответствия в разных системах. Если бы это поле было числовым, никто бы не попытался это сделать.
Комментарии