Ограничения целостности – некоторое утверждение может быть истинным или ложным в зависимости от состояния БД. (пусть возврат не менее 10 и поле не может быть пустым).
Некоторые ограничения целостности являются ограничениями реляционной модели, либо реализуется ссылочная целостность. Любое ограничение целостности является семантическим понятием.
БД находится в согласованном состоянии, если выполняются все ограничения целостности определенные для БД.
При определении ограничений целостности используется понятие реакция системы на попытку нарушения целостности. Есть два типа реакций:
1. Отказ выполнять не запланированную операцию.
2. Выполнение компенсирующих действий.
Классификация операций целостности:
По способу реализации:
1.Декларативная поддержка ограничений целостности – определение ограничений средствами языка ЯОД . Этот способ определяет ограничения назначений доменов и атрибутов, целостность сущностей (потенциальные ключи отношений) и ссылочную целостность (внешних ключей). Этот тип ограничений можно применить при создании и модификации таблиц.
2.Процедурная поддержка ограничений используемых триггеров и хранимых процедур. В любом случае наличие ограничения целостности приводит к созданию или использованию программного кода реализующего это ограничение. Отличие в том, где этот код хранится и как создается. Если ограничение целостности реализовано в виде триггера, то программный код является просто телом триггера. Если исходное декларативное ограничение, то возможно 2 подхода:
1. Текст ограничения хранится в виде некого объекта СУБД, а для реализации используются встроенные в СУБД функции. Данный код является внутренней функцией ядра СУБД.
2. СУБД автоматически генерирует триггеры, выполняющие необходимые действия.
По времени проверки:
1. Немедленно проверяющие ограничения, т.е. непосредственно в момент выполнения операций, способных нарушить ограничения.
2. Ограничение с отложенной проверкой, т.е. проверяющиеся в момент фиксации транзакций оператором Commit Work. Внутри транзакции ограничение может не выполняться, но если в момент фиксации транзакций обнаруживается нарушение, то транзакция откатывается.
По области действия:
1.Ограничения домена накладывается на допустимые значения домена (возраст 10 -60), никак не проверяется.
2.Ограничения целостности атрибута, отличается от первого тем, что проверяется.
3.Ограничения кортежа накладываются на допустимые значения отдельного кортежа и они не являются ограничениями целостности атрибута. Для его проверки не требуется никакой информации о других кортежах отношения.
Хранить только базовые атрибуты. Структура получается не избыточной, не требует дополнительного кода для поддержания целостности, экономия места и трафика при пересылке. Недостатки в бухгалтерии для формирования проводок используют вычисляемые атрибуты. Одни формулы используются во многих местах, но есть риск в разных местах вычислить одни данные по разным формулам. При изменении логики вычислений нужно изменить код во всех местах, где он встречается. Если возникает не стандартный запрос, то человек формирующий его должен помнить все формулы.
Хранить все атрибуты. Достоинства – код поддержания целостности хранится в одном месте (триггере), при изменении логики вычислений, код изменится только в одном месте. Упрощаются запросы как базовые, так и не стандартные. Недостатки структура БД более сложная, увеличивается объём и трафик сети. Сложность изменения структуры БД.
4. Ограничения отношений накладываются только на допустимые значения отдельных отношений и не являются ограничениями целостности кортежа. Может проверяться сразу или быть с отложенной проверкой.
5.Ограничения БД накладываются на значение двух и более связанных между собой отношений (используются внешние ключи). Может проверяться сразу или быть с отложенной проверкой.