Избегайте обнуляемых «внешних ключей».У них есть несколько недостатков.
Ограничение на ссылочную строку не всегда применяется, когда внешний ключ содержит ноль.Однако такое поведение по умолчанию не согласовано между различными СУБД.Некоторые СУБД поддерживают параметры конфигурации для изменения поведения внешних ключей, допускающих нулевое значение, а некоторые - нет.Поэтому разработчики и пользователи SQL могут не знать, что на самом деле означает обнуляемое ограничение внешнего ключа с точки зрения целостности данных.Портирование базы данных между продуктами СУБД или даже между различными серверами, использующими один и тот же продукт, может привести к противоречивым результатам.
Инструменты проектирования баз данных, инструменты интеграции и другое программное обеспечение не всегда поддерживают их правильно, а полученные результаты могут быть неверными.
Внешние ключи часто используются в соединениях и другой логике запросов, что усугубляет проблемы для пользователей, которые считают, что ограничение действует, когда его нет.
В логических терминах обнуляемый "ограничение внешнего ключа не имеет большого логического смысла.В соответствии со стандартом SQL такое ограничение не может быть нарушено, даже если ссылка на таблицу пуста.Это противоречит одному из наиболее распространенных предполагаемых оправданий использования нулевого значения - что оно представляет «неизвестный» случай.Если нет допустимых значений X, то любой «неизвестный» X, безусловно, не может быть допустимым значением - и все же SQL разрешит это.
Это не нужно.Вы всегда можете построить таблицы так, чтобы нуль не был необходим.Поэтому в интересах простоты и точности лучше не указывать значения null, а вставлять их.