Null
s и значения по умолчанию - разные вещи, используемые для разных целей. Если вы пытаетесь избежать использования null
s, задав для всех значение по умолчанию, то, как я объясню, это плохая практика.
Null
означает, что мы не знаем, какое значение будет или будет. Например, предположим, что у вас есть поле enddate
. Вы не знаете, когда закончится записываемый процесс, поэтому null
является единственным подходящим значением; использование значения по умолчанию некоторого ложного выхода из даты в будущем вызовет столько же проблем при программировании, сколько и обработка null
s, и, скорее всего, по моему опыту, создаст проблему с возвращением неверных результатов.
Теперь бывают случаи, когда мы можем знать, каким должно быть значение, если человек, вставляющий запись, этого не делает. Например, если у вас есть поле date inserted
, целесообразно иметь значение по умолчанию для текущей даты и не ожидать, что пользователь заполнит его. Вероятно, у вас действительно будет более точная информация для этого поля.
Иногда это колл-суждение и зависит от бизнес-правил, которые вы должны применять. Предположим, у вас есть поле speaker honoraria
(это сумма, которую будет выплачен докладчику). Значение по умолчанию 0
может быть опасным, так как это может означать, что ораторы наняты, и мы намерены ничего им не платить. Также возможно, что иногда будут выступающие, которые отдают свое время на конкретный проект (или которые являются сотрудниками компании и, следовательно, не платят дополнительно за выступление), где ноль является правильным значением, поэтому вы не можете использовать ноль в значение, чтобы определить, что вы не знаете, сколько нужно заплатить этому оратору. В этом случае Null
является единственным подходящим значением, и код должен вызвать проблему, если кто-то пытается добавить докладчика в конференцию. В другой ситуации вы, возможно, уже знаете, что минимальный размер оплаты за каждого выступающего составляет 3000, и что только в колонках, которые договорились о другой ставке, будут введены данные в поле honoraria
. В этом случае целесообразно ввести значение по умолчанию 3000
. В других случаях разные клиенты могут иметь разные минимумы, поэтому значение по умолчанию следует обрабатывать по-разному (обычно через справочную таблицу, которая автоматически заполняет минимальное значение honoraria
для этого клиента в форме ввода данных.
Поэтому я считаю, что лучшим правилом является оставить значение как null
, если вы действительно не можете знать, когда вводятся данные, каким должно быть значение поля. Используйте значение по умолчанию только в том случае, если оно имеет значение для данной конкретной ситуации, и используйте другой метод для заполнения значения, если оно может отличаться при других обстоятельствах.