Ограничение целостности реляционного объекта данных по состоянию – это так называемый инвариант данных.
При этом целостность следует уверенно отличать от
безопасности, которая, в свою очередь, подразумевает защиту данных от
несанкционированного доступа к ним с целью раскрытия, изменения или
разрушения данных.
В общем случае ограничения целостности реляционных объектов данных классифицируются по уровням иерархии
этих самых реляционных объектов данных (иерархия реляционных объектов
данных – это последовательность вложенных друг в друга понятий: «атрибут
– кортеж – отношение – база данных»).
Что это означает? Это означает, что ограничения целостности зависят:
1) на уровне атрибута – от значений атрибута;
2) на уровне кортежа – от значений кортежа, т. е. от значений нескольких атрибутов;
3) на уровне отношений – от отношения, т. е. от нескольких кортежей;
4) на уровне базы данных – от нескольких отношений.
Итак, теперь нам остается только рассмотреть более
подробно ограничения целостности по состоянию каждого из приведенных
понятий. Но прежде дадим понятия процедурной и декларативной поддержки
ограничений целостности по состоянию.
Итак, поддержка ограничений целостности может быть двух видов:
1) процедурной, т. е. созданной при помощи написания программного кода;
2) декларативной, т. е. созданной путем объявлений тех или иных ограничений для каждого из названных выше вложенных понятий.
Декларативная поддержка ограничений целостности
реализуется в контексте оператора Create создания базового отношения.
Поговорим об этом подробнее. Начнем рассмотрение совокупности
ограничений снизу нашей иерархической лестницы реляционных объектов
данных, т. е. с понятия атрибута.
Ограничение уровня атрибута включает в себя:
1) ограничения типа значений атрибута.
Например, условие целочисленности значений, т. е.
условие integer для атрибута «Курс» из одного из рассмотренного ранее
базового отношения;
2) ограничение значений атрибута, записываемое как условие, зависящее от имени атрибута.
Например, анализируя то же самое базовое отношение, что и
в пре дыдущем пункте, видим, что в том отношении имеется и ограничение
значений атрибута с использованием опции check, т. е.:
check (1 <= Курс and Курс <= 5);
3) ограничение уровня атрибутов включает в
себя ограничения Null-значений, определяемые уже знакомым нам флажком
допустимости (Null) или, наоборот, недопустимости (not Null)
Null-значений.
Как мы уже упоминали ранее, первые два ограничения
определяют ограничение домена атрибута, т. е. значение его множества
определения.
Далее согласно иерархической лестнице реляционных объектов данных, нужно говорить о кортежах. Итак, ограничение уровня кортежа
сводится к ограничению кортежа и записывается как условие, зависящее от
имен нескольких базовых атрибутов схемы отношения, т. е., это
ограничение целостности по состоянию значительно меньше и проще
аналогичного, только соответствующего атрибуту.
И снова целесообразно будет вспомнить пройденный нами
ранее пример базового отношения, имеющего необходимое нам сейчас
ограничение кортежа, а именно:
check (0 < min Вес Кг and min Вес Кг < max Вес Кг);
И, наконец, последнее значимое в контексте
ограничения целостности по состоянию понятие – это понятие уровня
отношений. Как мы уже говорили раньше, ограничение уровня отношения включает в себя ограничение значений первичного (primary key) и кандидатного (candidate key) ключей.
Любопытно, что ограничения, накладываемые на базы
данных, относятся уже не к ограничениям целостности по состоянию, а к
ограничениям ссылочной целостности.
|