vyshkant
@vyshkant
developer

Устанавливать ли DEFAULT или NULL для FOREIGN KEY в MySQL?

Здравствуйте!
У меня есть три таблицы, каскадно зависящие друг от друга:
table_1:
  • id
  • t2_id
  • other_fields
table_2:
  • id
  • t3_id
  • other_fields
table_3:
  • id
  • other_fields

Т.е. получается следующее:
`table_1`.`t2_id` <-- `id`.`table_2`
`table_2`.`t3_id` <-- `id`.`table_3`,
где "<--" указывает на связь "многие к одному".
Собственно, суть вопроса: на данный момент поля t2_id и t3_id - вполне себе обычные: not NULL, default: none. В то же время, в ряде случаев видел, что полям FOREIGN KEY устанавливают default: 0, а также слышал, что иногда их устанавливают в NULL.
Собственно, хотел уточнить, зачем это надо, ведь при этом в таблице, откуда берется значение по ключу, строки с id равным нулю нет. Стоит ли при создании внешних ключей указывать дефолтные/NULLевые значения?
Спасибо.
  • Вопрос задан
  • 969 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Это, как ни странно, зависит от того, обязательно ли для заполнения поле, хранящее привязку. Если обязательно (то есть соотношение 1 к 1), то ни дефолтного значения, ни nullable указывать не стоит. Если не обязательно (соотношение 0 к 1 или 1 к 1), то можно указать значение по-умолчанию или флаг nullable.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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