Create table
min Вес Кг
check
(not Null
default
(max Вес Кг
тип значений базового атрибута max Вес Кг
check
(not Null
default
(check
(0 min Вес Кг and min Вес Кг max Вес Кг);Таким образом, применение ограничения к кортежу сводится к подстановке значений кортежа вместо имен атрибутов.
Продвигаемся далее в рассмотрении оператора создания базового отношения. После объявления базовых и виртуальных атрибутов могут быть объявлены, а могут и не объявляться ключи
: первичный, кандидатные и внешние.Как мы уже говорили ранее, подсхема базового отношения, которой в другом (или в том же самом) базовом отношении соответствует первичный или кандидатный ключ в контексте первого отношения называется внешним ключом
. Внешние ключи представляют механизм ссылок кортежей одних отношений на кортежи других отношений, т. е. есть объявления внешних ключей связаны с навязыванием уже упоминавшихся так называемых ограничений ссылочной целостности. (Этим ограничением будет посвящена вся следующая лекция, поскольку целостность по состоянию (т. е. целостность, обеспечиваемая ограничениями целостности) – это крайне важное условие успешного функционирования базового отношения и всей базы данных.)Объявление первичных и кандидатных ключей, в свою очередь, навязывает схеме базового отношения соответствующие ограничения уникальности, о который мы уже говорили ранее.
И, наконец, следует сказать о возможности удаления базового отношения. Нередко в практике проектирования баз данных необходимо удалить старой ненужное отношение, чтобы не загромождать программный код. Сделать это можно с помощью уже знакомого нам оператора Drop
. В полном общем виде оператор удаления базового отношения выглядит следующим образом:Drop table
3. Ограничение целостности по состоянию
Ограничение целостности
реляционного объекта данных по состоянию – это так называемый инвариант данных.При этом целостность следует уверенно отличать от безопасности, которая, в свою очередь, подразумевает защиту данных от несанкционированного доступа к ним с целью раскрытия, изменения или разрушения данных.
В общем случае ограничения целостности реляционных объектов данных классифицируются по уровням иерархии
этих самых реляционных объектов данных (иерархия реляционных объектов данных – это последовательность вложенных друг в друга понятий: «атрибут – кортеж – отношение – база данных»).Что это означает? Это означает, что ограничения целостности зависят:
1) на уровне атрибута – от значений атрибута;
2) на уровне кортежа – от значений кортежа, т. е. от значений нескольких атрибутов;
3) на уровне отношений – от отношения, т. е. от нескольких кортежей;
4) на уровне базы данных – от нескольких отношений.
Итак, теперь нам остается только рассмотреть более подробно ограничения целостности по состоянию каждого из приведенных понятий. Но прежде дадим понятия процедурной и декларативной поддержки ограничений целостности по состоянию.
Итак, поддержка ограничений целостности может быть двух видов:
1) процедурной
, т. е. созданной при помощи написания программного кода;2) декларативной
, т. е. созданной путем объявлений тех или иных ограничений для каждого из названных выше вложенных понятий.Декларативная поддержка ограничений целостности реализуется в контексте оператора Create создания базового отношения. Поговорим об этом подробнее. Начнем рассмотрение совокупности ограничений снизу нашей иерархической лестницы реляционных объектов данных, т. е. с понятия атрибута.
Ограничение уровня атрибута
включает в себя:1) ограничения типа значений атрибута.
Например, условие целочисленности значений, т. е. условие integer для атрибута «Курс» из одного из рассмотренного ранее базового отношения;
2) ограничение значений атрибута, записываемое как условие, зависящее от имени атрибута.
Например, анализируя то же самое базовое отношение, что и в пре дыдущем пункте, видим, что в том отношении имеется и ограничение значений атрибута с использованием опции check
, т. е.:check
(1 = Курс and Курс = 5);3) ограничение уровня атрибутов включает в себя ограничения Null-значений, определяемые уже знакомым нам флажком допустимости (Null) или, наоборот, недопустимости (not Null) Null-значений.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT