и 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;
Содержание Назад Вперед