Существует некоторое требование к не использовать значения NULL. Значения NULL могут вызвать сильную головную боль, когда они находятся в поле, которое будет включено в предложение JOIN или WHERE, или в поле, которое будет агрегировано.
Некоторые реализации SQL (такие как MSSQL) запрещают включать в индексы пустые поля.
MSSQL ведет себя особенно неожиданно, когда NULL оценивается на равенство. Значение NULL в поле PaymentDue означает то же самое, что и ноль, когда мы ищем записи, которые актуальны? Что если у нас есть имена в таблице, а у кого-то нет второго имени? Можно предположить, что может быть сохранена либо пустая строка, либо значение NULL, но как нам получить полный список людей, не имеющих отчества?
В общем, я предпочитаю избегать значений NULL. Если вы не можете представить то, что хотите сохранить, используя число (включая ноль) или строку (включая пустую строку, как упоминалось ранее), тогда вам, вероятно, стоит присмотреться к тому, что вы пытаетесь сохранить. Возможно, вы пытаетесь передать более одного фрагмента данных в одном поле.