Модели и проектирование баз данных

Объявление домена


. Домен на самом деле есть то, что в современных языках программирования называется «тип данных, определенный пользователем». К сожалению, большинство современных СУБД не поддерживает домены как объекты БД.

Определение домена может выглядеть так:

CREATE DOMAIN  имя-домена  тип  [(длина)]

{FOR ALL имя-домена (предикат)}|

{VALUES (список)};

Здесь имя-домена

– уникальное имя, под которым домен будет  известен системе и на которое можно ссылаться в определениях отношений;

тип  – один из поддерживаемых системой встроенных типов данных;

длина

– длина поля данных в байтах;

предикат

– логическое выражение, использующее имя-домена в качестве переменной;

список



– список значений, разделенных запятыми.

Эта декларация объявляет системе, что она должна внести в свой каталог имя нового объекта – домена, и указывает ограничения на значения, принадлежащие домену. Определение сохраняется в системном каталоге. При любой попытке обновления значения какого-либо атрибута, определенного на этом домене, будет вычислено значение предиката. Если оно окажется равным .F., обновление будет отвергнуто.

Пример 1.

CREATE DOMAIN  день CHAR (2)

FOR ALL день (

день = ‘пн’  OR 

день = ‘вт’ OR

день = ‘ср’ OR

день = ‘чт’ OR

день = ‘пт’          );

Это же можно записать короче:

CREATE DOMAIN день CHAR (2)

VALUES(‘пн’, ‘вт’, ‘ср’, ‘чт’, ‘пт’);

Если, скажем, в ИС банка на этом домене определен атрибут рабочий день, то система сможет заблокировать выполнение банковских операций по субботам и воскресеньям.

Пример 2.

CREATE DOMAIN вес INTEGER

FOR ALL вес (вес ³ 10 AND вес £ 150 AND mod(вес, 5) = 0); 

Каждый атрибут, определенный на этом домене, может принимать целочисленные значения в интервале [10, 150], причем только такие, которые делятся на 5 без остатка.

Если есть возможность создать домен, должна быть и возможность удалить его. Следующая команда

DESTROY DOMAIN имя-домена;

удалит из системного каталога определение домена. Она будет исполнена, если в схеме БД нет ни одного атрибута, определенного на удаляемом домене.

Если система поддерживает домены, то в ней есть возможность выполнения запросов, основанных на доменах. Например, запрос

Какие отношения в БД содержат какую-либо информацию о весе?

в терминах доменов имеет вид:

Какие отношения в БД включают атрибуты, определенные на домене Вес?

Это запрос к системному каталогу. В системе, не поддерживающей домены, такие сведения практически невозможно получить.



Содержание раздела