Middle
115
questionbank
Должны ли внешние ключи присутствовать в базе данных, и если да, то почему?
Ответ от нейросети
sobes.tech AI
Да, должны.
Причины
- Целостность данных. Обеспечивают ссылочную целостность, предотвращая удаление или изменение первичных ключей в родительской таблице, на которые ссылаются записи в дочерней таблице, если не определено соответствующее действие (
ON DELETE CASCADE,ON UPDATE CASCADE). - Оптимизация запросов. СУБД может использовать информацию о внешних ключах для оптимизации планов выполнения запросов, особенно при объединении таблиц (JOIN).
- Документация схемы. Явно указывают на связи между таблицами в схеме базы данных, что делает ее более понятной для разработчиков и администраторов.
- Простота разработки. Позволяют доверить часть логики поддержания связей базе данных, уменьшая необходимость ее реализации на уровне приложения.
Пример
-- Создание таблицы "Заказчики"
CREATE TABLE Заказчики (
ЗаказчикID INT PRIMARY KEY,
Имя VARCHAR(100)
);
-- Создание таблицы "Заказы"
CREATE TABLE Заказы (
ЗаказID INT PRIMARY KEY,
ДатаЗаказа DATE,
ЗаказчикID INT,
-- Определение внешнего ключа, ссылающегося на столбец ЗаказчикID в таблице Заказчики
FOREIGN KEY (ЗаказчикID) REFERENCES Заказчики(ЗаказчикID)
);