где Ri – отношения, являющиеся реляционными доменами (rdom), на которых определены атрибуты объектов класса С. Применим оператор E к объекту oi класса С и рассмотрим выражение
oi. oa1 = oi.E(oa2, … , oan),
которое, исходя из значений атрибутов oa2, … , oan, вычисляет значение атрибута a1.
Применяя уже использованные преобразования, можно показать, что при переходе на уровень хранения это выражение может быть представлено как
, где {a1} - 1-арное отношение, единственный кортеж которого содержит имя вычисляемого атрибута { a1 }. Рассмотрим класс C и значение C.a1 = {o1. oa1 И … И ok.a1}. Можно показать, что
Выражение Ea , вычисляющее значение атрибута, должно входить в метаданные, описывающие структуру объекта. Таким образом, схема S содержащего вычисляемые атрибуты объекта класса С (S = Schema(C) ), будет выглядеть следующим образом:
S = {oa1:R1:Ea (oa2, … , oan), oa2:R2,…, oan:Rn} <26>
Интересно то, что, благодаря замкнутости реляционной алгебры (результатом любого алгебраического выражения над множеством отношений является отношение), вычисляемые атрибуты могут являться атрибутами в реляционных операциях над объектами наравне с хранимыми. Корректность выражения
зависит исключительно от типов (rdom) использующихся в ней атрибутов ai, и не зависит от того, является эти атрибуты хранимыми или вычисляемыми. Оператор Е может быть определен на основании схемы publicS = {oa1:R1, oa2:R2,…, oan:Rn}, которую можно рассматривать как спецификацию схемы объектов класса С.