Ответ
FOREIGN KEY (внешний ключ) используется для обеспечения ссылочной целостности данных между таблицами в реляционной БД. Он гарантирует, что значение в столбце (или группе столбцов) одной таблицы соответствует значению первичного ключа (PRIMARY KEY) или уникального ключа (UNIQUE) в связанной таблице.
Основные сценарии применения:
-
Реализация связей между таблицами:
- Один-ко-многим (1:N): Самый частый случай. Например, у одного
Customerможет быть многоOrders.CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL );
CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT NOT NULL, OrderDate DATE, CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE -- Действие при удалении клиента );
- Один-ко-многим (1:N): Самый частый случай. Например, у одного
-
Предотвращение "осиротевших" записей: БД не позволит вставить в
Ordersзапись с несуществующимCustomerIDили удалить клиента, у которого есть заказы (если не заданоCASCADE). -
Определение каскадных действий (
ON DELETE/ON UPDATE):CASCADE: Удалить/обновить связанные записи автоматически.SET NULL/SET DEFAULT: Установить в столбцеNULLили значение по умолчанию.RESTRICT/NO ACTION: Запретить операцию, нарушающую целостность (стандартное поведение).
-
Повышение производительности запросов: Внешний ключ часто автоматически индексируется, что ускоряет
JOIN-операции между связанными таблицами.