Назад к вопросам
Middle
104
questionbank

Что такое целостность ссылочных связей?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Целостность ссылочных связей (Referential Integrity) — это свойство данных в реляционной базе данных, которое гарантирует, что ссылки между таблицами остаются действительными. Она предотвращает следующие проблемы:

  • Удаление строки из "родительской" таблицы, на которую ссылаются строки в "дочерней" таблице.
  • Изменение первичного ключа в "родительской" таблице, на который ссылаются строки в "дочерней" таблице, без соответствующего обновления этих ссылок.
  • Вставка строки в "дочернюю" таблицу со ссылкой на несуществующий первичный ключ в "родительской" таблице.

Реализуется с помощью внешних ключей (FOREIGN KEY).

Примеры ограничений для внешних ключей:

  • ON DELETE CASCADE: При удалении строки в родительской таблице, соответствующие строки в дочерней таблице также удаляются.
  • ON DELETE SET NULL: При удалении строки в родительской таблице, соответствующий внешний ключ в дочерней таблице устанавливается в NULL.
  • ON DELETE RESTRICT: Удаление строки в родительской таблице запрещается, если на нее существуют ссылки в дочерней таблице.
  • ON UPDATE CASCADE: При обновлении первичного ключа в родительской таблице, соответствующие внешние ключи в дочерней таблице также обновляются.
-- Пример таблицы "users" (родительская)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Пример таблицы "orders" (дочерняя) с внешним ключом
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
        ON DELETE CASCADE /* Пример использования ограничения */
        ON UPDATE CASCADE /* Пример использования ограничения */
);