Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции к урокам 2007.doc
Скачиваний:
90
Добавлен:
23.12.2018
Размер:
3.44 Mб
Скачать

Лекция 17 Ограничение целостности

Целостность (integrity – точность, истинность) данных предполагает корректное выполнение действий, разрешенных пользователям. Обычно ограничения целостности применяются для описания базовых отношений. Производные отношения автоматически наследуют некоторые ограничения целостности отношений, из которых они выведены. Однако для произвольных отношений, кроме автоматически наследуемых ограничений могут быть заданы также некоторые дополнительные ограничения целостности.

Если база данных находится в состоянии целостности, то это означает ее корректность, т.е. отсутствие нарушений всех известных ограничений. Аспекты целостности необходимо учитывать как при проектировании базы данных, так и во время ее использования. Ограничения целостности, как и правила безопасности, хранятся в системном каталоге. Они приводятся в действие подсистемой целостности СУБД, которая отвечает за отслеживание выполняемых пользователем операций (insert, update, delete) и гарантирует выполнение только тех, которые не нарушают известных системе ограничений.

Ограничения целостности в общем виде содержат три компонента:

Create integrity rule имя

ограничение

[on attempted violation действие ];

Параметр имя является именем данного ограничения, которое регистрируется в системном каталоге. Ограничения целостности всегда проверяются немедленно при каждой операции обновления.

Ограничение – выражение, которому должно удовлетворять ограничение целостности. Ограничение целостности удовлетворяется тогда и только тогда, когда это выражение истинно, а нарушается, если это выражение ложно.

Директива on attempted violation - реакция на нарушение, указывает системе те действия, которые необходимо выполнить при попытке пользователя нарушить ограничение целостности.

Ограничения целостности можно классифицировать по следующим категориям:

  • ограничения домена – задаются допустимые значения данного домена;

  • ограничения атрибута – задаются допустимые значения для данного атрибута;

  • ограничения таблицы – задаются допустимые значения для данного отношения; как правило, ограничения таблицы ограничивают значения, которые могут быть в записях таблицы;

  • целостность по ссылкам – предполагает обеспечение целостности отношений потомок/ предок, которые поддерживаются первичными и внешними ключами;

  • ограничения базы данных (деловые правила или утверждения) – задают допустимые значения для всей базы данных и связывают в различных выражениях значения столбцов из разных таблиц базы данных.

В стандарте SQL ограничения целостности обычно делятся на три категории:

  • ограничения домена;

  • ограничения базовой таблицы;

  • общие ограничения – «утверждения».

Общие ограничения в SQL создаются с помощью утверждения create assertion

Целостность реляционных данных

Логические ограничения, которые накладываются на данные называются ограничениями целостности. Они формируются в соответствии со свойствами ПО в форме предикатов, которые для одних множеств данных могут иметь значение истина, для других – ложь. Ограничения используются в моделях данных для поддержания целостности данных при функционировании системы. То есть СУБД должна контролировать соответствие данных заданным ограничениям при переводе БД из одного состояния в другое. Использование ограничений связано также с адекватностью отражения ПО с помощью данных, хранимых в БД.

Выделяют два основных вида ограничений: внутренние и явные.

Внутренние – это ограничения, свойственные собственно модели данных. Они накладываются на структуру отношений, на связи, на допустимые значения наборов данных, заложенные в выбранной модели данных.

Явные – это ограничения, задаваемые семантикой ПО. Они описывают области допустимых значений атрибутов, соотношение между атрибутами, динамику их изменения и т.д.

В РМД существуют два вида внутренних ограничений целостности:

  1. Целостность по существованию – потенциальный ключ отношения не может иметь пустого (Null) значения. Иными словами, так как потенциальный ключ отношения позволяет из всего множества экземпляров сущности выделить только один, то сущность, не имеющая идентификатора, не существует.

  2. Целостность по связи – определяется понятием внешнего ключа отношения: подмножество атрибутов отношения R2 называется внешним ключом для отношения R1, если каждому значению внешнего ключа отношения R2 найдется такое же значение первичного ключа в отношении R1. Внешний ключ является тем клеем, который обеспечивает связывание отдельных отношений РБД в единое целое. Целостность данных по связи означает систему правил, используемых в СУБД для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных, от некорректного изменения ключевых полей.

58