Задать вопрос
sorry_i_noob
@sorry_i_noob

Когда в БД нужно делать «По умолчанию: Null», а когда «По умолчанию: НЕТ»?

Я открыл БД, а там где-то "Null" по умолчанию. А где-то "нет". Какой-то беспорядок. Хочу навести порядок, но не знаю, когда нужно использовать "Null", а когда "нет". Подскажите, пожалуйста.
  • Вопрос задан
  • 197 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Stalker_RED
@Stalker_RED
Конечно, может оказаться так, что базу проектировали невнимательно, в спешке или еще как-то криво, но чаще оказывается, что этот "беспорядок" для чего-то нужен.

Представим, что по требованиям бизнес-логики в табличке "user" поле "дата регистрации" обязательно должно быть заполнена. Если ее нет - это ошибка. Ставим not null.

И "email" обязательный - тоже not null.

В этой-же таблице поле "phone" необязательное - значит придется разрешить null.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
не надо наводить порядок в базе данных.
Пусть этим занимаются архитекторы и программисты.
Ответ написан
Комментировать
@bkosun
Например:

books
id, author_id, title, ...

book_authors
id, first_name, last_name, ...


В таблице books поле author_id должно быть NULL'able, если автор книги может быть неизвестен и Вы хотите настроить ограничения внешних ключей.

Если в базу данных сначала добавляются книги, а уже потом указывается автор, почему бы не сделать, чтобы по умолчанию всегда был NULL? В таком случае Вам не нужно будет прямо указывать это в запросе на вставку записи.

В других случаях:

Значение по умолчанию всегда должно совпадать по типу со столбцом. Если, скажем, столбец объявлен как DECIMAL, не нужно в качестве умолчания указывать значение типа INTEGER.


https://www.sqlstyle.guide/ru/#%D0%B7%D0%BD%D0%B0%...
Ответ написан
Комментировать
@feldwebel
Еще надо иметь в виду, что у больших, нагруженных запросами таблиц поздно делать значения по умолчанию у столбцов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы