Назад к вопросам
Junior
112
questionbank

Что такое внешний ключ?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Основные цели внешнего ключа:

  • Обеспечение ссылочной целостности: Гарантирует, что значения во внешнем ключе соответствуют существующим значениям в связанной таблице. Например, нельзя создать запись о заказе с несуществующим покупателем.
  • Создание связей между таблицами: Позволяет связывать данные из разных таблиц.

Пример:

Таблица users (пользователи) с первичным ключом id. Таблица orders (заказы) с внешним ключом user_id, который ссылается на users.id.

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(255)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10, 2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

В этом примере, внешний ключ user_id в таблице orders гарантирует, что каждый заказ связан с действительным пользователем из таблицы users.

Действия при удалении/обновлении связанной записи в родительской таблице могут быть настроены:

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