Дополнительные реляционные операции
.
Определенные к настоящему моменту операции обеспечивают манипуляции кортежами, но не дают никаких средств для работы со скалярами, а это часто бывает необходимо.
Например, могут понадобиться сведения о весах поставок. Их можно получить из отношения (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 во всех кортежах группы.
Определенные ниже операции производят отношения, содержащие результаты «горизонтальных» и «вертикальных» вычислений.