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

       

и ISA на уровне хранения


(A2, … , A n, …)) ґ

{a1}              <30>

(реализация предикатов OFA и ISA на уровне хранения будет рассмотрена далее – см. "Связь данных и метаданных"). Следовательно, значение С0.oa1

представляющее собой объединение значений атрибутов oa1 полиморфных объектов класса С0, на уровне хранения будет вычисляться как

C0.a1 OєR'

(
s(raOID OFA Ci )( CiE'a

(A2, … , A n, …)) ) ґ

{a1}              <31>

Случай, когда переопределяемый атрибут a1 в процессе наследования становиться или, наоборот, перестает быть хранимым, выглядит немного сложнее:

C0.a1 OєR'

(  (
s(raOID OFA Ci )( CiE'a

(A2, … , A n, …)) ) ґ

{a1}  )  И A1        <32>

Отметим, что в любом случае вычисляющее выражение не выходит за рамки реляционной алгебры.

Возможность переопределение атрибутов заслуживает внимания, поскольку позволяет создавать гибкие расширяемые системы. Рассмотрим групповой реляционный оператор С0.E(oa1, … , oan), который может применяться к множеству объектов класса C0. Принимая во внимание тот факт, что он определен на основании спецификации схемы объектов этого класса, можно утверждать, что его можно применять к объектам, принадлежащим любым классам Ci, наследующим класс С0, в том числе и классам с переопределенными атрибутами.

Вернемся к примеру. Предположим, что наряду с отгрузками склад стал заниматься продажами товар. В связи с этим создадим класс cSales, объекты которого описывают продажи. Поскольку продажа подразумевает отгрузку, естественно предполагать, что этот класс должен рассматриваться как наследник класса cShipment. В процессе проектирования схемы данных было выделено свойство(rdom) pSalesGoods, значения которого содержат информацию о количестве и цене продаваемого товара.

PROPERTY pSaledGoods{

Good As cGoods PRIMARY KEY;

Price As DOUBLE;

Pieces AS INT;


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