Ответ
Foreign Key (внешний ключ) — это ключевой механизм в реляционных базах данных, который используется для установления и поддержания связи между двумя таблицами. Его основная задача — обеспечивать ссылочную целостность данных.
Это гарантия того, что запись в одной таблице, ссылающаяся на другую, всегда указывает на существующую запись.
Основные функции:
-
Определение отношений: Позволяет моделировать связи между сущностями, например, "один ко многим" (один пользователь может иметь много заказов).
-
Обеспечение целостности данных: Предотвращает появление "осиротевших" записей. Например, СУБД не позволит создать заказ для несуществующего пользователя или удалить пользователя, у которого есть активные заказы (если не настроены каскадные операции).
-
Управление связанными данными (каскадные операции): Можно настроить поведение при изменении или удалении родительской записи. Самый частый пример —
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, приведет к ошибке.