можно получить из отношения (SPJ JOIN P)[SPJ#, We, Qt],
вычислив для каждого кортежа значение We*Qt. Однако имеющимися
средствами невозможно получить производное отношение со схемой
{SPJ#, Tot_We}, где Tot_We принимает значения выражения We*Qt.
Это пример «горизонтальных вычислений», т.е.
комбинирования значений атрибутов из текущего кортежа отношения-
операнда. В процессе анализа данных часто нужно комбинировать
значения атрибута в различных кортежах – проводить «вертикальные»
вычисления.
Например, для создания отчета о поставках может понадобиться
отношение, содержащее номера поставщиков, номера поставляемых
ими деталей и общие объемы поставок этих деталей, выполненных
этими поставщиками. Чтобы получить такое отношение, нужно:
сгруппировать кортежи отношения SPJ по значениям
подмножества атрибута {S#, P#};
сформировать отношение со схемой {S#, P#, Tot_Qt}, где
Tot_Qt принимает для каждого значения {S#, P#} единственное
значение, равное сумме значений атрибута Qt во всех кортежах
группы.
Определенные ниже операции производят отношения,
содержащие результаты «горизонтальных» и «вертикальных»
вычислений.
Операция расширения схемы. Это унарная операция. Она
производит безымянное отношение со схемой, включающей все
атрибуты операнда и, кроме того, атрибут, принимающий значения
некоторого скалярного выражения. Операция обеспечивает
возможность выполнения «горизонтальных вычислений». Будем
использовать для нее следующий синтаксис:
расширение ::= EXTEND терм ADD выражение AS атрибут
1
;
Здесь выражение – любое скалярное выражение, ссылающееся
на атрибуты терма.
Очевидны следующие ограничения:
1) схема терма не может содержать атрибута с именем,
указанным после AS;
1
Считается, что домен атрибута каким-то образом определен. Например, это
может быть домен «по умолчанию».