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

       

С учетом этого изменения схема


С учетом этого изменения схема данных должна будет выглядеть следующим образом.

CLASS cStaff

StaffID AS INT GLOBAL UNIQUE;

StaffName AS STRING;

}

CLASS cGoods{

GoodsID AS INT GLOBAL UNIQUE;

GoodsName AS STRING;

}

PROPERTY pShipmentComments{

Comments AS STRING;

}

PROPERTY pGoodsItems {

Good As cGoods PRIMARY KEY;

Pieces AS INT;

}

CLASS cShipments{

NoS AS LONG GLOBAL UNIQUE;

SDate As DATE;

Staff AS cStaff;

ShipmentItems AS SET OF pGoodsItems;

Comment AS pShipmentComments;

}

CLASS cSuppliesPerDate{

SupplyDate AS DATE GLOBAL UNIQUE;

SupplyItems AS SET OF pGoodsItems;

}

В дальнейшем эта схема будет использоваться в примерах, демонстрирующих возможностей подхода. Оговоримся, что описание управляющего языка не является целью данной статьи. Стремясь сделать примеры наглядными, мы не использовали синтаксис какого-либо конкретного языка программирования: конструкции связанные с объектами близки объектным языкам, синтаксис языка запросов близок к SQL, хотя нельзя не отметить, что возможностей последнего явно недостаточно для того, что бы обращаться к сложно организованным данным.



Свойства системы.

Групповые операции. Ненавигационный доступ к данным.



Рассмотрим класс С со схемой (oa1:R1, …, oan:Rn) содержащий объекты {o1 , … ,om}. Предположим, что существует реляционный оператор

calcR = E( R1, … , Rn), <11>

где Ri – отношения (rdom), на которых определены атрибуты объектов класса С, calcR - отношение (rdom), на котором определен результат. Применим оператор E к объекту oi класса С и рассмотрим выражение oi.E(oa1, … , oan), которое, исходя из значений атрибутов {oa1, … , oan} этого объекта, вычисляет некоторое значение calcr

calcri = oi.E(oa1, … , oan)        <12>

Как мы уже показали, атрибут oa объекта o на уровне хранения представлен как

s(raOID= OID, raoa = oa)(R') , где R' = rstorage(oa),          <13>

или

s(raOID= OID)(A), где A = s(raoa = oa)(R').           <13'>


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