Вот,
по-моему мнению, что должно быть главным критерием при проектировании структуры в данном случае:
Использование NULL для обозначения отсутствия значения может немного сохранить место, особенно для числовых типов полей, но и увеличить время выборки, если поле необходимо индексировать.
P.S.: Вам больше место жалко или производительность? :)
P.S.S.: Чем не устраивает
0 вместо
NULL для
чисел?
P.S.S.S.: В запросах один фиг будет фигурировать либо "
IS NULL/NOT NULL", либо "
<> 0"...заморочки одни и те же по сути...а вот разница в этом всём как - "
лысый" и "
бритый" :)
P.S.S.S.S.: Есть негласное правило...
NULL нафиг не нужен, если все его свойства не используются...
А вот какие оно имеет свойства:
Если вы сравниваете значение NULL с другим значением NULL или любым другим значением, результатом является то, что значение NULL каждого значения NULL неизвестно. Обычно значение NULL используется для указания того, что данные отсутствуют, неизвестны или неприменимы.
Но в данном случае у Вас по значению 0 и так будет понятно всё.
Вопрос: нафиг этот NULL ? Все его "плюсы" в данном случае не работают...
Ну и вот уже было тут:
https://qna.habr.com/q/463917
Выбор зависит от задач(и)...