Ссылочная целостность

Введение в реляционные базы данных в 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...