Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Целостность ссылок

Объекты реального мира представлены в реляционной БД как кортежи нескольких нормализованных отношений, которые связаны между собой. В таком случае:

  • связи между этими отношениями описаны терминами функциональных зависимостей;
  • отражение функциональных зависимостей между кортежами различных отношений происходит с помощью дублирования первичного ключа родительского отношения в дочернее.
Определение 1

Атрибуты, которые представляют собой копии ключей родительских отношений, называют внешними ключами.

Определим требование целостности ссылок:

Определение 2

Для каждого значения внешнего ключа, которое появляется в дочернем отношении, должен найтись кортеж в родительском отношении с одинаковым значением первичного ключа.

Пример 1

Пример.

Рассмотрим отношения ОТДЕЛ (НОМЕР_ОТДЕЛА, НАЗВАНИЕ_ОТДЕЛА) и СОТРУДНИК (НОМЕР_СОТРУДНИКА, НОМЕР_ОТДЕЛА, ФАМИЛИЯ_СОТРУДНИКА). В них хранится информация о сотрудниках организации и отделах, в которых они работают. Родительским является отношение ОТДЕЛ, следовательно, его первичный ключ НОМЕР_ОТДЕЛА входит в дочернее отношение СОТРУДНИК. Требование целостности ссылок означает в этом случае, что в таблице СОТРУДНИК не может находиться кортеж со значением атрибута НОМЕР_ОТДЕЛА, которое не находится в таблице ОТДЕЛ. При отсутствии такого значения в отношении ОТДЕЛ значение внешнего ключа считается неопределенным в отношении СОТРУДНИК.

Чаще всего поддержание целостности ссылок также обеспечивается системой управления базами данных. К примеру, СУБД может не разрешить пользователю ввести запись, которая содержит внешний ключ с неопределенным (несуществующим) значением.

Целостность ссылок часто называют ссылочной целостностью, целостностью связей или требованием внешнего ключа.

«Целостность ссылок» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Операции, которые могут нарушить ссылочную целостность

Ссылочную целостность можно нарушить при выполнении операций, которые изменяют состояние БД. К таким операциям относится удаление, обновление и вставка кортежей в отношениях.

В определении ссылочной целостности берут участие 2 отношения – дочернее и родительское, в каждом же из них возможна каждая из трех названных операций. Поэтому рассмотрим 6 разных вариантов.

Родительское отношение

  • Вставка кортежа – создается новое значение потенциального ключа. Поскольку в родительском отношении существование кортежей, на которые не существуют ссылки из дочернего отношения, допустимо, то при вставке кортежей в родительское отношение ссылочная целостность не нарушается.
  • Обновление кортежа – приводит к возможному изменению значения потенциального ключа. При наличии кортежей в дочернем отношении, которые ссылаются на обновляемый кортеж, значения их внешних ключей будут некорректными. Следовательно, обновление кортежа может нарушить ссылочную целостность, если данное обновление имеет отношение к значению потенциального ключа.
  • Удаление кортежа – происходит удаление значения потенциального ключа. При наличии кортежей в дочернем отношении, которые ссылаются на удаляемый кортеж, значения их внешних ключей будут некорректными. Следовательно, удаление кортежей может нарушить ссылочную целостность.

Дочернее отношение

  • Вставка кортежа – невозможна, если значение внешнего ключа, которое вставляется, является некорректным. Следовательно, вставка кортежа может нарушить ссылочную целостность.
  • Обновление кортежа – можно сделать попытку некорректного изменения значения внешнего ключа. Следовательно, обновление кортежа может нарушить ссылочную целостность.
  • Удаление кортежа – не нарушает ссылочную целостность.
Дата написания статьи: 26.09.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot