
- •3.2. Реляционные системы
- •Язык sql и реляционные операции.
- •Сравнения, ограниченные доменом
- •Домены и определение данных
- •Значения отношений
- •Определение данных
- •Свойства отношений
- •Виды отношений
- •Потенциальные ключи
- •Первичные и альтернативные ключи
- •22. Внешние ключи. Определение и свойства. Синтаксис для указания внешнего ключа. Ссылочная целостность.
- •Ссылочная целостность
- •23. Правила внешних ключей. Расширенный синтаксис задания внешнего ключа
Ссылочная целостность
Вместе с понятием внешнего ключа реляционная модель включает следующее правило ссылочной целостности:
Ссылочная целостность.
База данных не должна содержать несогласованных значений внешних ключей.
«Несогласованное значение внешнего ключа» — это значение внешнего ключа, для которого не существует отвечающего ему значения соответствующего потенциального ключа в соответствующем целевом отношении.
Правило утверждает, что если В ссылается на А, тогда А должно существовать.
Понятия "поддержка ссылочной целостности" и "поддержка внешних ключей" означают одно и то же.
23. Правила внешних ключей. Расширенный синтаксис задания внешнего ключа
Правило целостности выражено исключительно в терминах состояний базы данных.
Любое состояние базы данных, не удовлетворяющее этому правилу, некорректно.
Для каждого внешнего ключа необходимо ответить на два важных вопроса.
1. Что должно случиться при попытке удалить объект ссылки внешнего ключа?
Например, удалить поставщика, для которого есть, по крайней мере, одна поставка. В общем существует по меньшей мере две возможности:
- " ОГРАНИЧИТЬ — "ограничить" операцию удаления, до момента, когда не будет существовать соответствующих поставок (в противном случае операция запрещается);
- КАСКАДИРОВАТЬ — "каскадировать" операцию удаления, удаляя также соответствующие поставки.
2. Что должно случиться при попытке обновить потенциальный ключ, на который ссылается внешний ключ?
Например, при попытке обновить номер поставщика, для которого существует, по крайней мере, одна соответствующая поставка. Как и для удаления здесь существует по меньшей мере две возможности:
- ОГРАНИЧИТЬ — "ограничить" операцию обновления до момента, когда не будет существовать соответствующих поставок (в противном случае операция запрещается);
- КАСКАДИРОВАТЬ — "каскадировать" операцию обновления, обновляя также внешний ключ в соответствующих поставках.
Разработчик при проектировании внешних ключей базы данных должен не только указать атрибут или комбинацию атрибутов, составляющую данный внешний ключ, но и указать специальные правила внешних ключей для данного внешнего ключа.
Необходимо расширить синтаксис определения внешнего ключа следующим образом:
FOREIGN KEY (…) REFERENCES base-relation
DELETE option
UPDATE option
Здесь параметр option может принимать значение RESTRICTED (ограничить) или CASCADES (каскадировать).
В общем случае параметр option в синтаксисе должен включать возможность вызова определенной при установке процедуры баз данных (иногда называемой "хранимой процедурой" или "процедурой триггеров").