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

       

НРМ утверждает, что любая последовательность


НРМ утверждает, что любая последовательность операций над компонентами a объекта типа t, заданного ссылкой o, может быть R-транслирована в такую последовательность операций над соответствующими R-переменными t.a, что ее единственное исполнение изменит состояние системы так, как будто исходная последовательность была выполнена для каждого существующего в системе объекта этого типа. В качестве примера, подтверждающего данное утверждение, рассмотрим R-трансляцию условного оператора и оператора цикла.

Отметим, что любая операция fi возвращает значение pi, которое, в случае его дальнейшего использования, должно быть сохранено в соответствующей локальной переменной (возможно временной и/или не определяемой явно). Предположим, что операция возвращает значение булевского типа, для хранения которого используется соответствующая переменная b. На уровне хранения этой переменной будет соответствовать переменная отношения stt.b' со схемой (OID, b).

Условный оператор. Предположим, что для объекта типа t заданного ссылкой o определена последовательность операций IF f1 (… , o.ai, …) THEN o.ak := f2 (… , o.aj, …);

Предполагается, что результатом выполнения f1 является значение типа BOOLEAN. Данная последовательность может быть переписана как.

b := f1 (… , o.ai, …); IF b THEN o.ak := f2 (… , o.aj, …);

что может быть R-транслировано, например, в следующую последовательность действий над R-переменными

t.b := f'1 (… , t.ai, …); t.ak := ( f'2 (… , t.aj, …) JOINOID (stt.b' WHERE b = TRUE )) UNION ( t.ak JOINOID (stt.b' WHERE b = FALSE));

Оператор цикла. Предположим, что для объекта типа t заданного ссылкой o определена последовательность операций

DO … o.ak := f2 (… , o.aj, …); … WHILE f1 (… , o.ai, …);

Так же, как и в предыдущем случае, результатом выполнения f1 является значение типа BOOLEAN. Данная последовательность может быть так же переписана как.

DO … o.ak := f2 (… , o.aj, …); … b := f1 (… , o.ai, …); WHILE b;

что может быть R-транслировано, например, в следующую последовательность действий над R-переменными


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