Ограничения целостности. Понятие и классификация.



Классификация ограничений целостности

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

· По способам реализации.

· По времени проверки.

· По области действия.

Классификация ограничений целостности по способам реализации

Каждая система обладает своими средствами поддержки ограничений целостности. Различают два способа реализации:

· Декларативная поддержка ограничений целостности.

· Процедурная поддержка ограничений целостности.

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

Процедурная поддержка ограничений целостности заключается в использовании триггеров и хранимых процедур.

По сути, наличие ограничения целостности (как декларативного, так и процедурного характера) всегда приводит к созданию или использованию некоторого программного кода, реализующего это ограничение. Разница заключается в том, где такой код хранится и как он создается.

Классификация ограничений целостности по времени проверки

По времени проверки ограничения делятся на:

· Немедленно проверяемые ограничения.

· Ограничения с отложенной проверкой.

Немедленно проверяемые ограничения проверяются непосредственно в момент выполнения операции, могущей нарушить ограничение. Например, проверка уникальности потенциального ключа проверяется в момент вставки записи в таблицу. Если ограничение нарушается, то такая операция отвергается. Транзакция, внутри которой произошло нарушение немедленно проверяемого утверждения целостности, обычно откатывается.

Ограничения с отложенной проверкой проверяется в момент фиксации транзакции оператором COMMIT WORK. Внутри транзакции ограничение может не выполняться. Если в момент фиксации транзакции обнаруживается нарушение ограничения с отложенной проверкой, то транзакция откатывается. Примером ограничения, которое не может быть проверено немедленно является ограничение из примера 1. Это происходит оттого, что транзакция, заключающаяся во вставке нового сотрудника в таблицу PERSON, состоит не менее чем из двух операций - вставки строки в таблицу PERSON и обновления строки в таблице DEPART. Ограничение, безусловно, неверно после первой операции и становится верным после второй операции.

Классификация ограничений целостности по области действия

По области действия ограничения делятся на:

· Ограничения домена

· Ограничения атрибута

· Ограничения кортежа

· Ограничения отношения

· Ограничения базы данных

Ограничения домена

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

Ограничения атрибута

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

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

 

Возможности задания ограничений целостности в современных СУБД.

Современные СУБД поддерживают возможности соблюдения тех или иных требований целостности.

1) Сущностная целостность или целостность по первичному ключу по своему определению значение первичного ключа в таблице должно быть уникальным т.к. основной принцип Р.Б.Д. звучит что доступ к данным в таблице осуществляется по цепочке. Имя БД à Имя таблицы à Имя столбца à первичный ключ (значение).

Все современные СУБД поддерживают уникальность первичного ключа. Механизм поддержания уникальности первичного ключа основывается на понятие индекса. При определение первичного ключа СУБД автоматически создает индекс для поддержки его уникальности и для поиска поп первичному ключу.

2) Ссылочная целостность – это целостность поддерживается в связях между таблицами. Для того чтобы содержимое двух связанных таблиц правильно отражало предметную область. На операции изменяющие содержимое таблиц должны накладываться определенные ограничения (ограничения целостности). Это относится к трем операциям:

- удаление записей (из главной таблицы)

- изменение записей (в главной таблице)

- Вставка записей во второстепенные таблицы.

Вводят ограничения на выполнение операций: удаление из главной таблицы, Обновления в главной таблице, вставка строк во вторичной таблице.

Удаление из главной таблицы

СУБД поддерживает 4 вида сценария при удаление из главной таблицы.

1) при удаление из главной таблицы автоматически удаляет связанные записи из подчиненной таблицы (каскад).

2) Запрет на удаление записи из главной таблицы если она связана с какими-либо записями в подчиненной таблице.

3) После удаления записи из главной таблицы внешним ключам связанных записей в подчиненной таблице присваиваются значения NULL.

4) При удаление записи из главной таблицы внешним ключам второстепенных записей присваиваются значения по умолчанию.

Обновление записей в главной таблице (Это касается обновления первичного ключа)

1) При обновление первичного ключа главной таблицы каскадно изменяются значения внешнего ключа подчиненных таблиц.

2) При изменение первичного ключа в главной таблице соответствующим значениям ключам в подчиненной таблице присваиваются значения NULL.

3) При изменение первичного ключа в главной таблице соответствующим значениям ключам в подчиненной таблице присваиваются значение по умолчанию.

4) Устанавливается запрет на обновление первичных ключей тех записей главной таблицы, которые связанны с какими-либо записями в подчиненной таблице.

Значение по умолчанию – при определение структуры таблицы для каждого столбца

А) определенное значение по умолчанию

Б) разрешено присваивание значения NULL.

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

Например в одних СУБД возможно 32 бит целое à 16 бит целое, а в других невозможно из-за возможности потери данных свыше 16 бит.

4)Доменный механизм поддержания целостности. Под доменом в РБД понимается множество возможных значений, которые принимают данные хранящиеся в данном столбце. В частности в случае если домен совпадает со множеством значений данного типа, но часто домен является дополнительным ограничением. Если в столбце хранится номера месяца 1..12 то в домене находится 12 значений, а тип целый то есть домен уже. В большинстве СУБД домен определяется набором условий которые должны выполнятся для данных хранящихся в столбце. В случае если записываемые данные не удовлетворяют условию генерируется ошибка. (условие(1<= =>12)), предотвращая неправильное указание месяца.

 


Дата добавления: 2018-02-18; просмотров: 2410; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!