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 /* Пример за ограничение */
);