Вы действительно хотите иметь дело с действительной собственно NULL
, с ее хитрой трехзначной логикой ?
По моему опыту, вы редко действительно хотите явную неопределенность, которая приходит с NULL
.Хранение пустой строки для значений, которые пользователь не хочет заполнять, обычно более практично.Затем вы можете продолжить поиск типа WHERE t.field<>'x'
или WHERE t0.field=t1.field
, не беспокоясь о том, что это делает с вашей логической логикой, когда один или оба значения равны нулю.
Если у вас уже есть рабочая база данныхэто зависит от неопределенной природы нуля, и это является неотъемлемой частью ваших требований, тогда хорошо, придерживайтесь нуля (и в этом случае вам, вероятно, придется преобразовать пустой пользовательский ввод в пустое поле в ноль только потому, чтопользователь когда-либо сможет понять концептуальную разницу между ничем и нулем).
Но лично я все еще использую нули только для необязательных ссылок на внешние ключи (когда не используется отдельная таблица соединения).