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

       

Учитывая сказанное, схема отношения rShipmentItems


Учитывая сказанное, схема отношения rShipmentItems преобразуется в следующую схему свойства ShipmentItems

PROPERTY pShipmentItems{

Good As cGoods UNIQUE;

Pieces AS INT;

}

Модификатор UNIQUE определяет, что поле Good будет уникальным в группе повторения. Поскольку группа повторения свойства представляет собой значение отношения, указанный модификатор фактически определяет первичный ключа атрибута объекта. Существование такого первичного ключа следует из того, что поле rShipmentItems.GoodsID входит в состав первичного ключа отношения rShipmentItems, схема которого послужила основой схемы свойства pShipmentItems. Наличие первичного ключа в свойстве определяет, что значения этого свойства могут образовывать группу повторения, элементы которой (кортежи) должны содержать ссылки на различные объекты класса cGoods. Под "различными" здесь подразумеваются объекты, имеющие разные OID (можно предположить, что возможно переопределение операции сравнения, применимой к объектам данного класса). Свойству ShipmentItems на уровне хранения будет соответствовать отношение rShipmentItems' (отметим наличие симметричной ассоциации (raOID, …, rGoodsref, …) )

rShipmentItems'































raOID


Primary key, Foreign key on R0. raOID


raoa
 


rGoodsref


Primary key, Foreign key on R0. raOID


rPieces
 


С учетом всего вышесказанного схема класса cShipments на уровне представления будет выглядеть следующим образом

Class cShipment{

NoS AS LONG GLOBAL UNIQUE;

SDate As DATE;

Staff AS cStaff;

ShipmentItems AS SET OF pShipmentItems;

Comment pShipmentComments;

}

Поля NoS, SDate и Staff являются полями неявно заданного корневого свойства класса cShipment. На уровне представления ему будет соответствовать отношение.

rShipments'





































raOID


Primary key, Foreign key on R0. raOID


raoa
 


NoS


UNIQUE


rSDate
 


rStaffref


Foreign key on R0. raOID


Таким образом, на уровне хранения объект класса cShipment будет представлен одним кортежем отношения rShipments' (обязательно), одним кортежем отношения rShipmentComments' (возможно), и множеством (возможно пустым) уникальных кортежей отношения rShipmentItems', причем все указанные кортежи будут связаны системным полем raOID с одноименным полем стержневого отношения R0, содержащим уникальный идентификатор этого объекта.


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