Далее рассмотрим подробнее механизм объявления базовых атрибутов.
При описании в операторе создания базового отношения любого атрибута в общем случае задаются его имя, тип, ограничения его значений, флажок допустимости Null-значений и значения по умолчанию. Нетрудно понять, что тип атрибута и ограничения его значений определяют его домен, т. е. буквально множество допустимых значений данного конкретного атрибута. Ограничение значений атрибутазаписывается как условие, зависящее от имени атрибута. Вот небольшой пример для облегчения понимания этого материала:
Create table имя базового отношения
Курс
integer
check(1 <= Курс and Курс <= 5;
Здесь условие «1 <= Курс and Курс <= 5» вместе с определением целого типа данных действительно полностью обусловливают множество допустимых значений атрибута, т. е. буквально его домен.
Флажок допустимости Null-значений (Null | not Null) запрещает (not Null) или, наоборот, разрешает (Null) появление Null-значений среди значений атрибутов.
Если взять рассмотренный только что пример, то механизм применения флажков допустимости Null-значений выглядит следующим образом:
Create table имя базового отношения
Курс
integer
check(1 <= Курс and Курс <= 5);
Not Null;
Итак, порядковый номер курса студента никогда не может принимать Null-значения, не может быть неизвестным составителям базы данных и не может не существовать.
Значения по умолчанию ( default( значение по умолчанию )) используются при вставке кортежа в отношения, если в операторе вставки значения атрибутов явно не заданы.
Интересно заметить, что значения по умолчанию могут быть и Null-значениями, если только Null-значения для данного конкретного атрибута объявлены допустимыми.
Теперь рассмотрим определение виртуального атрибутав операторе создания базового отношения.
Как мы уже говорили ранее, задание виртуального атрибута заключается в задании формул его вычисления через другие базовые атрибуты. Рассмотрим пример объявления виртуального атрибута «Стоимость Руб.» в виде формулы, зависящей от базовых атрибутов «Вес Кг» и «Цена Руб. за Кг».
Create table имя базового отношения
Вес Кг
тип значений базового атрибута Вес Кг
check( ограничение значения атрибута Вес Кг )
not Null
default( значение по умолчанию )
Цена Руб. за Кг
тип значений базового атрибута Цена Руб. за Кг
check( ограничение значения атрибута Цена Руб. за Кг )
not Null
default( значение по умолчанию )
…
Стоимость Руб.
as(Вес Кг * Цена Руб. за Кг)
Чуть выше мы рассмотрели ограничения атрибутов, которые записывались как условия, зависящие от имен атрибутов. Теперь рассмотрим второй вид ограничений, объявляемых при создании базового отношения, а именно ограничения кортежа.
Что такое ограничение кортежа, чем оно отличается от ограничения атрибута? Ограничение кортежа тоже записывается как условие, зависящее от имени базового атрибута, но только в случае ограничения кортежа, условие может зависеть от нескольких имен атрибутов одновременно.
Рассмотрим пример, иллюстрирующий механизм работы с ограничениями кортежей:
Create table имя базового отношения
min Вес Кг
тип значений базового атрибута min Вес Кг
check( ограничение значения атрибута min Вес Кг )
not Null
default( значение по умолчанию )
max Вес Кг
тип значений базового атрибута max Вес Кг
check( ограничение значения атрибута max Вес Кг )
not Null
default( значение по умолчанию )
check(0 < min Вес Кг andmin Вес Кг < max Вес Кг);
Таким образом, применение ограничения к кортежу сводится к подстановке значений кортежа вместо имен атрибутов.
Продвигаемся далее в рассмотрении оператора создания базового отношения. После объявления базовых и виртуальных атрибутов могут быть объявлены, а могут и не объявляться ключи: первичный, кандидатные и внешние.
Читать дальше
Конец ознакомительного отрывка
Купить книгу