что такой потери данных не
Имеющийся в переменной
t.a атрибут
OID, уникально идентифицирующий каждый объект,
(OID1 х v1) UNION (OID2 х v2) UNION … (где х - символ декартова произведения)
гарантирует, что такой потери данных не произойдет.
Следствием такого представления данных является следующее. Привычный способ доступа к данным в традиционных ОО-системах начинается с так или иначе хранящегося OID (т.е. с ссылки на объект), используя который можно получить доступ к атрибутам и методам объектов (если OID не сохранен, объект считается потерянным). Переменная же
t.a позволяет выполнить обратное действие - получить OID (т.е. ссылку на объект) на основании данных компонента
a объектов типа
t. Из этого, в частности, следует, что для того, что бы получить доступ к тому или иному объекту, нет нужды хранить его OID. Таким образом, переменная
t.a представляет данные, говоря образно, в однородном виде.
Будем называть переменные, подобные описанной переменной
t.a, R-переменными компонентов объектного типа. Каждому объектному типу
t может соответствовать множество таких R-переменных - по одной на каждый компонент кортежного типа или типа-множества, и еще одна для собственного кортежа объекта. Другими словами, число R-переменных компонентов типа определяется числом отношения, описывающих состояние объектов этого типа.
Замечание. Важно понимать, что значения, хранящиеся в R-переменных, всегда являются значениями отношений. Выражение "R-переменная … типа
t" означает лишь то, что указанная R-переменная ассоциирована с типом
t.
Заметим, что значение имеющегося в R-переменных атрибута OID является системным. В связи с этим для доступа к атрибуту OID вместо выражения
Rvar.OID далее будет использоваться функциональное выражение
Object(Rvar). Здесь
Rvar имя R-переменной, которая содержит атрибут OID. Выражение
Object(expr), где
expr - выражение, вычисляющее значение отношения с атрибутом OID, будет использоваться вместо операции проекции
expr[OID]. В обеих случаях выражение
Object(…) возвращает групповую ссылку.
Содержание Назад Вперед