Sobes.tech
Middle
113
questionbank

Должны ли внешние ключи присутствовать в базе данных, и если да, то почему?

Answer from AI

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)
);