Ответ
FOREIGN KEY (Внешний ключ) — это ограничение целостности в SQL, которое обеспечивает ссылочную целостность данных между двумя таблицами. Оно связывает столбец (или группу столбцов) в одной таблице (дочерней) с первичным ключом (PRIMARY KEY) или уникальным ключом (UNIQUE) в другой таблице (родительской).
Основная задача: Гарантировать, что каждое значение в дочерней таблице соответствует существующей записи в родительской таблице, предотвращая "висячие" ссылки.
Синтаксис и пример:
CREATE TABLE Customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
-- Определение внешнего ключа
FOREIGN KEY (customer_id)
REFERENCES Customers(customer_id)
ON DELETE CASCADE -- Действие при удалении
ON UPDATE NO ACTION -- Действие при обновлении
);
Почему это критически важно?
- Целостность данных: Невозможно создать заказ (
Orders) для несуществующего клиента (Customers). - Согласованность операций: Определяет поведение при изменении или удалении связанных данных через правила (
ON DELETE/ON UPDATE):CASCADE: Автоматически удаляет/обновляет связанные записи.RESTRICT/NO ACTION: Запрещает операцию, если существуют ссылки.SET NULL: Устанавливает ссылающимся столбцам значениеNULL.SET DEFAULT: Устанавливает значение по умолчанию.
Практическое следствие: Без FOREIGN KEY база данных может содержать некорректные связи (например, order.customer_id = 999, где клиента 999 нет), что приводит к ошибкам в приложении и сложностям в аналитике. Внешние ключи переносят ответственность за целостность на уровень СУБД.