Sobes.tech
Middle

Какво е цялостта на референтните връзки?

sobes.tech AI

Отговор от AI

Референтната цялост е свойство на данните в релационна база данни, което гарантира, че връзките между таблиците остават валидни. Тя предотвратява следните проблеми:

  • Изтриване на ред от "родителската" таблица, към която сочат редове в "дъщерната" таблица.
  • Промяна на първичния ключ в "родителската" таблица, към който сочат редове в "дъщерната" таблица, без съответно актуализиране на тези връзки.
  • Вмъкване на ред в "дъщерната" таблица с препратка към несуществящ първичен ключ в "родителската" таблица.

Тя се реализира чрез външни ключове (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 /* Пример за ограничение */
);