Как правило, значения по умолчанию не требуются. Если у данных есть какое-то значение по умолчанию, которое имеет смысл, тогда продолжайте и кодируйте это в базе данных. Но большинство данных не имеют значения по умолчанию. Что будет по умолчанию для имени? Добавьте значение, не равное NULL, и позвольте коду присваивать значение. Не включайте значение по умолчанию, потому что вы хотите, чтобы выдается сообщение об ошибке, если код забывает установить имя вместо поддельного имени по умолчанию.
Единственное место, где я нашел удобные настройки по умолчанию, было для простой схемы «Аудит». В каждой таблице было четыре столбца: InsertedAt, InsertedBy, updatedAt, updatedBy с ограничением, не равным NULL. Использовал триггер после для установки значений, но SQL Server проверил бы, чтобы столбцы имели значения. Если не произошло ограничение, оно так и не дошло до триггера. Поэтому я добавил значения по умолчанию, потому что эти значения не должны были устанавливаться кодом, выполняющим вставку. По умолчанию были полночь 1 января 1900 года и несуществующий пользователь. Триггер проверит, что значения соответствуют значениям по умолчанию, и выдаст ошибку, если кто-нибудь попытается установить значения во время вставки. (Кроме того, обновление выдало ошибку, если кто-то пытался обновить столбцы аудита.)