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

       

Еще раз подчеркнем, что схема


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

rSupplyItems































SupplyDate


Primary key


Дата поставки


GoodsID


Primary key, Foreign key on rGoods.GoodsID


Уникальный артикул товара


Pieces
 

Штуки, поставленные за день


Первичный ключ этого отношения содержит поле GoodsID а, следовательно, это можно было бы предполагать, что это отношение должно определять структуру класса сGoods. Следуя этому предположению, мы должны создать свойство

PROPERTY pGoodsSupply{

SupplyDate As DATE UNIQUE;

Pieces AS INT;

}

которое в дальнейшем будет рассматриваться как домен (rdom) входящего в класс cGoods атрибута, который содержит информацию о поставках описываемого этим классом товара.

Однако предположим, что анализ предметной области показал необходимость создать класс cSuppliesPerDate, описывающий поставки товара за день. Следуя этому определению, можно говорить о существовании зависимости cSuppliesPerDate ->rSupplyItems.SupplyDate. Зависимый атрибут SupplyDate не является внешним ключом (хотя и входит в его состав). Отношение, являющееся сильным для класса cDaySupply, отсутствует. В таких случай процедура объектной привязки предполагает, что зависящие от класса поля, не являющиеся ни первичным, ни внешним ключом, должны быть выделены в отдельное отношения, которое и станет сильным для этого класса. В нашем случае схем должна быть изменена следующим образом

rSupplyDates













SupplyDate


Primary key


rSupplyItems

























SupplyDate


Primary key, Foreign key on rSupplyDates. SupplyDate


GoodsID


Primary key, Foreign key on rGoods.GoodsID


Pieces
 
<

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