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




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


Примером системы, которая 1) позволяет пользователю описать

данные достаточно произвольным образом и 2) при этом гарантирует, что эти данные будут представлены для пользователя как множество значений отношений, является RxO-система, описанная в "НадРеляционном Манифесте" [] (далее НРМ), автором которого является ваш покорный слуга.

Описанная RxO-система является ОО-системой. Основное требование НРМ заключается в том, что спецификация объектов системы представляет собой множество компонентов следующих типов:

  • скалярные
  • кортежные типы (определенные на множестве скалярных типов),
  • типы отношение (также определенные на множестве скалярных типов).

    Эти типы называются значимыми. По сути, они являются аналогом "типов, допускающих реляционное присваивание", определяемых в "Третьем Манифесте". Спецификация компонента объекта может содержать параметры любого из значимых типов.

    С учетом того, что ссылочный тип (для которого определены операции только сравнения, присваивания и разыменовывания) относится в НРМ к скалярным типам, можно описывать достаточно сложные структуры данных. В качестве примера рассмотрим следующее выражение, которое определяет спецификацию

    типа, описывающего отгрузки

    CREATE CLASS SHIPMENT { No INTEGER; // скалярный компонент типа (определенный на домене) INTEGER WareFrom WAREHOUSE // скалярный компонент ссылочного типа WAREHOUSE Items SET OF //компонент типа-отношения { Article STRING; Pieces INTEGER; }.. DoShip(ShipmentDate DATETIME) BOOL; //скалярный компонент, принимающий //скалярный параметр }..

    Как видно, объект "отгрузка" имеет сложную структуру (0НФ). Он является частью более сложной структуры, так как содержит ссылку на объект типа WAREHOUSE, доступ к которому может быть описан путевым выражением "someSHIPMENT.WareFrom" (здесь someSHIPMENT -- это ссылка на объект объектного типа SHIPMENT). Возможно, в других частях системы могут существовать ссылки на объект "отгрузка". Компонент Items, содержащий строки заказа, имеет тип отношение (для краткости здесь и далее я буду опускать выражения, определяющие ключи).




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