Какую роль выполняет Foreign Key в реляционных базах данных

Ответ

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

Это гарантия того, что запись в одной таблице, ссылающаяся на другую, всегда указывает на существующую запись.

Основные функции:

  1. Определение отношений: Позволяет моделировать связи между сущностями, например, "один ко многим" (один пользователь может иметь много заказов).

  2. Обеспечение целостности данных: Предотвращает появление "осиротевших" записей. Например, СУБД не позволит создать заказ для несуществующего пользователя или удалить пользователя, у которого есть активные заказы (если не настроены каскадные операции).

  3. Управление связанными данными (каскадные операции): Можно настроить поведение при изменении или удалении родительской записи. Самый частый пример — ON DELETE CASCADE, который автоматически удаляет все связанные дочерние записи (например, все заказы клиента при удалении самого клиента).

Пример на SQL:

Создадим две таблицы: users и orders. Каждый заказ должен принадлежать существующему пользователю.

-- Родительская таблица
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);

-- Дочерняя таблица с внешним ключом
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product_name VARCHAR(100),

    -- Определение внешнего ключа
    -- Поле user_id в этой таблице ссылается на поле id в таблице users
    FOREIGN KEY (user_id) REFERENCES users(id)
);

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