Junior
40
questionbank

В чем заключается идея внешнего ключа?

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

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

Идея заключается в следующем:

  1. Связывание таблиц: Позволяет связать строки из одной таблицы с соответствующими строками в другой таблице на основе общего значения.
  2. Поддержание целостности: Гарантирует, что ссылка во внешней таблице указывает на существующую строку в родительской таблице (таблице, на которую ссылается внешний ключ). Например, нельзя удалить пользователя, на которого ссылаются записи заказов, без предварительного удаления или обновления этих заказов.
  3. Ограничение операций: Определяет, что происходит с данными во вторичной таблице при изменении или удалении данных в родительской таблице. Возможны следующие действия (constraints):
    • ON DELETE CASCADE: Автоматическое удаление зависимых строк во вторичной таблице.
    • ON UPDATE CASCADE: Автоматическое обновление зависимых строк во вторичной таблице.
    • ON DELETE SET NULL: Установка значения внешней ключа в NULL при удалении родительской строки (если столбец допускает NULL).
    • ON UPDATE SET NULL: Установка значения внешней ключа в NULL при обновлении родительской строки.
    • ON DELETE RESTRICT: Предотвращение удаления родительской строки, если на нее ссылаются зависимые строки.
    • ON UPDATE RESTRICT: Предотвращение обновления родительской строки.
    • NO ACTION (по умолчанию в некоторых СУБД): Схоже с RESTRICT, но проверка откладывается до конца транзакции.
  4. Моделирование отношений: Позволяет моделировать различные типы отношений между сущностями в базе данных, например, "один-ко-многим" или "многие-ко-многим" (через промежуточную таблицу).

Пример создания внешнего ключа в SQL:

sql