Базы данных | страница 52
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 (Вес Кг * Цена Руб. за Кг)
Чуть выше мы рассмотрели ограничения атрибутов, которые записывались как условия, зависящие от имен атрибутов. Теперь рассмотрим второй вид ограничений, объявляемых при создании базового отношения, а именно ограничения кортежа.
Что такое ограничение кортежа, чем оно отличается от ограничения атрибута? Ограничение кортежа тоже записывается как условие, зависящее от имени базового атрибута, но только в случае ограничения кортежа, условие может зависеть от нескольких имен атрибутов одновременно.
Рассмотрим пример, иллюстрирующий механизм работы с ограничениями кортежей: