Ссылочная прозрачность
- 1 year ago
- 0
- 0
|
Эта статья или раздел нуждается в переработке.
|
Ссы́лочная це́лостность ( англ. referential integrity ) — корректность значений внешних ключей реляционной базы данных .
Задача поддержки, или обеспечения ссылочной целостности заключается в том, чтобы предотвращать или устранять нарушение корректности значений внешних ключей при внесении изменений в базу данных путём коррекции значений внешних ключей, если это возможно, или отмены операции редактирования, если такая коррекция невозможна.
Связи между данными, хранимыми в разных отношениях, в реляционной БД устанавливаются с помощью использования внешних ключей — для установления связи между кортежем из отношения A с определённым кортежем отношения B в предусмотренные для этого атрибуты кортежа отношения A записывается значение первичного ключа (а в общем случае значение потенциального ключа ) целевого кортежа отношения B . Таким образом, всегда имеется возможность выполнить две операции:
Благодаря наличию связей в реляционной БД можно хранить факты без избыточного дублирования, то есть в нормализованном виде. Ссылочная целостность может быть проиллюстрирована следующим образом:
Дана пара отношений A и B , связанных внешним ключом. Первичный ключ отношения B — атрибут B.key . Внешний ключ отношения A , ссылающийся на B — атрибут A.b . Ссылочная целостность для пары отношений A и B имеет место тогда, когда выполняется условие: для каждого кортежа отношения A существует соответствующий кортеж отношения B , то есть кортеж, у которого ( B.key = A.b ).
База данных обладает свойством ссылочной целостности, когда для любой пары связанных внешним ключом отношений в ней условие ссылочной целостности выполняется.
Если вышеприведённое условие не выполняется, говорят, что в базе данных нарушена ссылочная целостность . Такая БД не может нормально эксплуатироваться, так как в ней разорваны логические связи между зависимыми друг от друга фактами. Непосредственным результатом нарушения ссылочной целостности становится то, что корректным запросом не всегда удаётся получить корректный результат.
СУБД имеют механизм автоматического поддержания ссылочной целостности. Любая операция, изменяющая данные в таблице, вызывает автоматическую проверку ссылочной целостности. При этом: