Учитывая сказанное, схема отношения 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, содержащим уникальный идентификатор этого объекта.
Содержание Назад Вперед