Посилальна цілісність

Вступ до реляційних баз даних у SQL

Timo Grossenbacher

Data Journalist

Посилальна цілісність

  • Запис, що посилається на іншу таблицю, має посилатися на наявний запис у тій таблиці
  • Задається між двома таблицями
  • Забезпечується зовнішніми ключами
Вступ до реляційних баз даних у SQL

Порушення посилальної цілісності

Порушення посилальної цілісності від таблиці A до таблиці B стається…

  • …якщо запис у таблиці B, на який посилається запис у таблиці A, видалено.
  • …якщо в таблицю A вставлено запис із посиланням на неіснуючий запис у таблиці B.
  • Зовнішні ключі запобігають порушенням!
Вступ до реляційних баз даних у SQL

Як реагувати на порушення

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
Вступ до реляційних баз даних у SQL

Як реагувати на порушення, продовження

ON DELETE…

  • …NO ACTION: згенерувати помилку
  • …CASCADE: видалити всі записи, що посилаються
  • …RESTRICT: згенерувати помилку
  • …SET NULL: встановити в стовпці-посиланні значення NULL
  • …SET DEFAULT: встановити в стовпці-посиланні стандартне значення
Вступ до реляційних баз даних у SQL

Розгляньмо приклади!

Вступ до реляційних баз даних у SQL

Preparing Video For Download...