Далее мы действуем ранее описанным
/p>
Далее мы действуем ранее описанным способом. Поскольку связь rSupplyItems.SupplyDate -> rSupplyDates.SupplyDate является избыточной в объекте, а поле GoodsID является внешним ключом, связанным с отношением, относящимся к другому классу, окончательная схема данных, описывающая поставки должна выглядеть следующим образом
PROPERTY pSupplyItems{
Good As cGoods UNIQUE;
Pieces AS INT;
}
CLASS cSuppliesPerDate {
SupplyDate AS DATE GLOBAL UNIQUE;
SupplyItems AS SET OF pSupplyItems;
}
Итак, процедура объектной привязки выполняется на основании следующих правил (порядок нестрогий). Если зависимые от класса Сi атрибуты ra отношения Rk
1) являются ключом и не являются внешним ключом, то отношение Rk является сильным и его схема может служить основой для структуры класса Сi.
2) являются внешним ключом и определяют связь с отношением описывающим…
… тот же класс Ci , то эта связь является избыточной в объекте класса Ci, поэтому атрибуты ra надо исключить из схемы Rk
… другой класс Cj , то речь идет о связи между объектами классов Ci и Cj, поэтому атрибуты ra надо заменить ссылкой на класс Cj
3) не являются ни первичным, ни внешним ключом (класс Сi не имеет сильного отношения), то атрибуты ra могут быть вычленены в отдельное отношение, являющееся для класса Ci сильным (далее как в 2).
Схема данных, возникшая в процессе объектной привязки, еще не является окончательной. Обратим внимание на то, что схема свойств pSupplyItems и pShipmentItems являются абсолютно идентичными. Этот факт соответствует мысли, что информация, описываемая этими свойствами, имеет в общем-то одинаковый смысл, а именно "количество товара". Поэтому они могут быть заменены общим свойством pGoodsItems. Соответствующее этому свойству отношение уровня хранения
rGoodsItems'
raOID |
Primary key, Foreign key on R0. raOID |
raoa |
|
rGoodsref |
Primary key, Foreign key on R0. raOID |
rPieces |
|
будет содержать детальные данные и по отгрузкам и по поставкам. Смысловая разница между ними будет обуславливаться значением атрибута raoa: данным об отгрузках будет соответствовать атрибут ShipmentItems класса cShipments, а данным о поставках – атрибут SupplyItems класса cSuppliesPerDate.
Содержание Назад Вперед