Junior
69
questionbank

Как foreign key влияет на целостность данных в базе?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Foreign key (внешний ключ) обеспечивает ссылочную целостность данных, гарантируя, что значения в столбце одной таблицы (дочерняя таблица) соответствуют значениям в столбце другой таблицы (родительская таблица).

Влияние на целостность данных:

  1. Запрещает добавление записей в дочернюю таблицу с несуществующим значением в соответствующем столбце родительской таблицы. Попытка вставить строку, ссылающуюся на несуществующую родительскую запись, вызовет ошибку.
  2. Ограничивает удаление записей из родительской таблицы, на которые ссылаются записи в дочерней таблице. Поведение при попытке удаления зависит от настроенного действия (ON DELETE):
    • RESTRICT (по умолчанию): Запрещает удаление.
    • CASCADE: Удаляет зависимые записи в дочерней таблице.
    • SET NULL: Устанавливает значение NULL в соответствующем столбце дочерней таблицы (если столбец допускает NULL).
    • NO ACTION: Аналогично RESTRICT при стандартной проверке, но может отличаться во времени выполнения.
  3. Ограничивает обновление записей в родительской таблице. Поведение при попытке обновления также зависит от настроенного действия (ON UPDATE):
    • RESTRICT (по умолчанию): Запрещает обновление.
    • CASCADE: Обновляет соответствующее значение в зависимых записях дочерней таблицы.
    • SET NULL: Устанавливает значение NULL в соответствующем столбце дочерней таблицы (если столбец допускает NULL).
    • NO ACTION: Аналогично RESTRICT при стандартной проверке, но может отличаться во времени выполнения.

Foreign key помогает предотвратить появление "висячих" записей и гарантирует, что связи между таблицами остаются корректными.