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




Пример системы, реализующей принцип "Сложность данных в именах". НадРеляционный манифест. - часть 4


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

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

Для того, чтобы показать это, вновь вернемся к типу SHIPMENT: CREATE CLASS SHIPMENT { No INTEGER; WareFrom WAREHOUSE; Items SET OF //-- and this is a set of invoice lines { Article STRING; Pieces INTEGER; }.. }..

Данное выражение описывает спецификацию типа, то есть интерфейс, который может использоваться пользователем для работы с объектами этого типа. В соответствии с этой спецификацией система гарантирует, что существует, например, отношение "SHIPMENT.ITEMS" ("SHIPMENT", "Article", "Pieces"); которое может быть использовано пользователем, например, для создания вида, содержащего данные об общем количестве отгруженного товара поартикульно:

CREATE ShippedGoods AS SELECT si.Article,SUM(si.Pieces) FROM Shipment.Items si GROUP BY si.Article;

Этот вид вернет информацию из существующих в системе объектов типа SHIPMENT. Однако создание этих объектов станет возможным только после того, как будет определена реализация этого типа. В качестве простейшего случая рассмотрим вариант, когда компонент Items реализован как хранимый: ALTER CLASS SHIPMENT REALIZE Items ... AS STORED;

Эта реализация подразумевает, что компонент Items объектов типа SHIPMENT представлен для пользователя в точно таком же виде, как и хранится в системе (или, наоборот, хранится в системе, точно так же, как представлен).


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