Ответ
Foreign Key (Внешний ключ, FK) — это ограничение целостности, которое обеспечивает согласованность ссылок между данными в двух таблицах. Он гарантирует, что значение в столбце (или группе столбцов) одной таблицы соответствует значению первичного ключа (PK) в другой таблице.
Основные цели:
- Обеспечение ссылочной целостности (Referential Integrity): Невозможно создать запись с внешним ключом, указывающим на несуществующую запись в родительской таблице.
- Предотвращение «висячих» ссылок: Невозможно удалить или изменить запись в родительской таблице, если на неё ссылаются записи из дочерней (если не задано каскадное поведение).
Пример SQL:
CREATE TABLE Customers (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE Orders (
id INT PRIMARY KEY,
customer_id INT,
amount DECIMAL,
FOREIGN KEY (customer_id) REFERENCES Customers(id)
ON DELETE CASCADE -- Опционально: удалять заказы при удалении клиента
);
Что это значит? Поле customer_id в таблице Orders может содержать только те значения id, которые реально существуют в таблице Customers. Попытка вставить заказ с customer_id = 999 (при отсутствии клиента с таким id) вызовет ошибку.
Практические следствия:
- Структурирует данные и явно задаёт связи.
- Позволяет СУБД оптимизировать выполнение JOIN-запросов.
- Упрощает логику приложения, перекладывая проверку целостности на уровень БД.