Вот рекомендации, которые я лично использую в отношении значений по умолчанию, которые хорошо мне помогали в прошлом. В следующих примерах рассмотрим серверную часть базы данных с несколькими приложениями с доступом для чтения / записи к серверной части. В этих случаях важно, чтобы база данных определяла, как данные должны моделироваться, и, следовательно, обеспечивала целостность данных.
1) Столбцы CreatedDate и ModifiedDate. Эти столбцы обычно имеют getdate () (сервер sql), определенный по умолчанию. Как упоминалось в других сообщениях, эти поля могут быть обновлены с помощью триггеров и т. Д.
2) Булевы столбцы состояния. Примеры: «IsDefault», «IsDeleted» (для аудита), «IsActive» и т. Все эти поля обычно имеют логическое состояние по умолчанию, которое должно определяться моделью данных. Исключениями из этого, очевидно, будут логические поля с тремя состояниями, в которых можно принимать значения NULL, где нулевое состояние представляет что-то для данных, хранящихся в записи.
3) Определения ограничений данных: столбцы с AllowNull = false и по умолчанию не определены. Другими словами, значение требуется приложением.
4) Идентификационные данные внешнего ключа таблицы поиска: вероятно, это не норма, но для многих внешних ключей таблицы поиска я определю значение по умолчанию, которое охватывает начальное состояние записи. Так, например, в таблице «Event» столбец внешнего ключа «EventTypeId» (int-autoincrement) будет иметь значение по умолчанию 1 и представлять «General» или что-то в этом роде. Это будет охватывать большинство сценариев, в которых, например, я хочу записать событие, но не обращаю внимания на конкретный идентификатор типа.
5) Некритические строковые столбцы: «Описание», «Комментарий» и т. Д. Для этих столбцов я обычно определяю «» по умолчанию просто для упрощения System.DbNull => Обработка нулевого преобразования в приложениях. Это может быть неприменимо во всех сценариях, особенно когда соответствующая таблица содержит миллионы строк, а место для хранения является проблемой.
Итак, в общем, используйте значения по умолчанию, чтобы обеспечить целостность данных фактических данных, хранящихся в базе данных. Модель данных должна определять эти правила целостности данных внутри себя, и любое приложение, взаимодействующее с ней, должно и должно быть вынуждено соблюдать эти правила. Также обратите внимание, что это не доктрина и что всегда будут исключения. Рассмотрите каждый сценарий индивидуально, чтобы он имел смысл для вашей базы данных / приложения.