@yamakasi_habr

Можно ли добавлять Null в INT поле?

Проектирую базу данных, у меня есть числовые поля (int), и я вот думаю, если не будет данных, что установить по дефолту - Null или 0?
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab
Здесь отвечаю на вопросы.
NULL — это отсутствие значения. Если не "устанавливать" значение, то это и будет по-умолчанию. Если поле участвует в вычислениях, то лучше поставить 0. Если отсутствие значения используется в логике, то оставляйте NULL. Например количество товара: 0, код (если допускается неопределённость) —NULL.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
NULL и 0 будут давать разный результат при подчете агрегации. Sum, Avg и прочие стат- функкии будут учитывать 0 и игнорировать NULL.

Вообще в реляционной алгебре правильно использовать NULL когда данных нету.

Еще для некоторых dbms (Oracle) Null не индексируется. Это экономит место в сегменте индекса и делает поиск более быстрым дла nullable колонок.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Самое простое - это смотреть по смыслу этого поля. NULL хранить там, где мы заранее не знаем, какое значение там должно быть, или его не должно быть вообще у текущей записи. А 0 - там, где мы точно знаем, что это значение равно конкретно нулю (например, пустой баланс на счету, или счётчик, начавшийся с нуля и ещё не прибавившийся ни разу).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы