Этот вопрос проверяет понимание одного из ключевых понятий реляционных баз данных — гарантии согласованности связей между таблицами.
Ссылочная целостность — это свойство реляционной базы данных, которое гарантирует, что ссылки между данными в разных таблицах всегда будут корректными. Это означает, что внешний ключ в одной таблице всегда будет указывать на существующую запись в другой таблице. Обеспечивается она с помощью ограничений внешнего ключа (Foreign Key Constraint), которые автоматически проверяются и поддерживаются самой СУБД.
Ссылочная целостность — это механизм, который обеспечивает логическую корректность связей "родитель-потомок" между таблицами.
Основная идея: Не может существовать "висячей" ссылки. Запись в дочерней таблице (например, orders) не может ссылаться на несуществующую запись в родительской таблице (например, users).
Обеспечивается ограничением внешнего ключа (FOREIGN KEY):
Это правило, которое накладывается на столбец (или группу столбцов) в дочерней таблице.
Этот столбец должен ссылаться на первичный ключ (PRIMARY KEY) или уникальный ключ (UNIQUE KEY) в родительской таблице.
Запрет на вставку некорректных данных:
Невозможно вставить запись в дочернюю таблицу, если значение внешнего ключа не существует в родительской таблице.
Пример: Нельзя создать заказ для несуществующего пользователя.
Обработка обновлений и удалений (ON DELETE / ON UPDATE):
Ограничение внешнего ключа позволяет определить, что произойдет с дочерними записями при изменении или удалении родительской.
Основные действия:
RESTRICT / NO ACTION: Запретить удаление/изменение родителя, если на него есть ссылки.
CASCADE: Каскадное удаление/изменение. Если удаляется пользователь, удаляются все его заказы.
SET NULL: При удалении родителя внешний ключ в дочерних записях устанавливается в NULL.
SET DEFAULT: Устанавливается в значение по умолчанию.
Пример создания таблицы с внешним ключом:
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL,
amount DECIMAL,
-- Ограничение внешнего ключа
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);Вывод: Ссылочная целостность, обеспечиваемая ограничениями FOREIGN KEY, — это краеугольный камень надежных реляционных баз данных. Она перекладывает ответственность за проверку корректности связей с приложения на СУБД, что предотвращает появление несогласованных данных и упрощает логику приложения.