Классика баз данных - статьи


         

и выражениями, которые могут включать


Последние определяются типами и выражениями, которые могут включать в себя значения явных атрибутов, константы, исполняемые операторы, включая вызов функций и процедур, как стандартных, так и пользовательских.

Ограничения целостности данных задаются непосредственно при определении объектного типа с помощью конструкции WHERE, определяющей логические условия в виде выражений логического типа, а также с помощью квалификатора UNIQUE, приписывающего условие уникальности атрибутам, ассоциациям и производным свойствам в популяциях родственных объектов. Для задания глобальных ограничений над разнородными объектами предусмотрена конструкция RULE, позволяющая описать ограничение в виде формальной спецификации функции логического типа.

Определения глобальных констант, простых и объектных типов данных, глобальных ограничений объединяются в разделе информационной схемы модели (SCHEMA). Посредством конструкций импорта USE и REFERENCE достигается возможность использования в одной схеме определений из других схем, что обеспечивает разработку сложных информационных моделей путем иерархической композиции отдельных схем. Таким образом, охватываются разнообразные практически содержательные случаи объектно-ориентированного моделирования прикладных данных.

Ниже (см. рис. 1) представлен пример информационной модели на языке EXPRESS — схема ActorResource, специфицирующая информацию о персонах и организациях, участвующих в совместном проекте, их ролях в нем и отношениях между ними.

Рис. 1. Спецификация схемы ActorResource на языке EXPRESS

SCHEMA ActorResource;

TYPE ActorSelect = SELECT (Organization, Person); END_TYPE;

TYPE AddressTypeEnum = ENUMERATION OF
( END_TYPE;

TYPE Label = STRING(255); END_TYPE;

TYPE ActorRole = Label; END_TYPE;

ENTITY Address ABSTRACT SUPERTYPE OF (ONEOF(PostalAddress, TelecomAddress)); Purpose : AddressTypeEnum; UserDefinedPurpose : OPTIONAL STRING; INVERSE OfPerson : SET OF Person FOR Addresses; OfOrganization : SET OF Organization FOR Addresses; WHERE WR1 : (Purpose <> AddressTypeEnum.USERDEFINED) OR ((Purpose = AddressTypeEnum.USERDEFINED) AND EXISTS(UserDefinedPurpose)); END_ENTITY;

Содержание  Назад  Вперед