Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpant / шпант / 24-27.docx
Скачиваний:
15
Добавлен:
15.04.2015
Размер:
514.23 Кб
Скачать

Пример 1.Получить имена поставщиков, которые поставляют деталь р2

( ( SP JOIN S ) WHERE Р# = 'Р2' ) [ SNAME ]

Пояснение. Первое естественное соединение отношений SP и S осуществляется по номерам поставщиков и в результате дополняет (концептуально) каждый кортеж от­ношения SP соответствующей информацией поставщика (т.е. соответствующими значениями атрибутов SNAME, STATUS и CITY). Затем из этого соединения просто выбираются такие кортежи, в которых значение атрибута Р# равно Р2. И наконец, выполняется проекция этой выборки по атрибуту SNAME. Конечный результат имеет единственный атрибут SNAME.

Операции расширения и подведения итогов.Операции EXTEND (расширения) и SUMMERISE (подведения итогов) дополняют основной набор из восьми операторов. Операция расширения EXTEND С помощью этой операции из определенного отношения создается новое отношение; оно похоже на начальное, но содержит дополнительный атрибут, значения которого получены посредством некоторых скалярных вычислений. Пример. Запрос требует вычисления арифметического выражения weight*454 (перевод фунты – граммы) EXTEND P ADD ( WEIGHT * 454) AS GMWT. С помощью этого выражения создается новое отношение с таким же заголовком, как и у отношения Р, за исключением дополнительного атрибута GMWT. Каждый кортеж этого отношения совпадает с соответствующим кортежем отношения Р, но содержит еще дополнительное значение GMWT, вычисляемое в соответствии с указанным выражением. Результат операции расширения

Теперь можно использовать атрибут GMWT в операциях проекции, выборки и т.д

Например: (EXTEND P ADD (WEIGHT * 454) AS GMWT) WHERE GMWT >10000

Можно включить в синтаксис операцию EXTEND, добавив новый вид унарных выражений со следующим синтаксисом:EXTEND term ADD scalar-expression AS attribute Например:EXTEND A ADD exp AS Z.Результатом этого выражения будет отношение с заголовком, эквивалентным заголовку отношения А, расширенному новым атрибутом Z, который подсчитывается вычислением скалярного выражения ехр для кортежа отношения А. При этом отношение А не должно иметь атрибута Z и выражение ехр не должно ссылаться на атрибут Z. Кардинальное число результата равно кардинальному числу отношения А, а степень результата равна степени отношения А плюс единица.

Операция подведения итогов.Операция расширения обеспечивает возможность "горизонтального", или "построчного", вычисления в алгебре. Операция summarize выполняет аналогичную функцию для "вертикальных" вычислений.

Например, с помощью выражения SUMMARIZE SP BY (P#) ADD SUM (QTY) AS TOTQTY вычисляется отношение с заголовком {P#,TOTQTY}, в котором существует один кортеж для каждого значения Р# в отношении SP; в этом кортеже содержится значе­ние Р# и соответствующее общее количество деталей . Другими словами, отношение Р концептуально "перегруппировано" в множества кортежей (по одному множеству для каждого значения Р#), и из каждой группы в общий результат сгенерирован один кортеж.

В терминах синтаксиса введем новый вид унарных выражений:SUMMARIZE term BY (attribute-commalist)

ADD aggregate-expression AS attribute. Например: SUMMARIZE A BY (A1,A2,…,An) ADD exp AS Z/ Здесь А1,А2,... ,Ап— отдельные атрибуты отношения А. Результатом этого выра­жения (обратите внимание, что приведенный пример является выражением, а не командой или оператором) будет отношение с заголовком {А1,А2, ...,An,Z} и с телом, содержащим все такие кортежи t, которые являются кортежами проекции отношения А по атрибутам Al, А2,..., An, расширенного значением для нового атрибута Z; такое но­вое значение Z подсчитывается вычислением итогового выражения ехр по всем корте­жам отношения А, которое имеет те же самые значения для атрибутов А1,А2,... ,Ап, что и кортеж t. Список attribute-commaiist не должен включать атрибут с именем Z, а выражение ехр не должно ссылаться на атрибут Z Заметьте, что кардинальное число результата равно кардинальному числу проекции отношения А по атрибутам Al, А2,..., An, а степень результата равна степени такой проекции плюс единица.

Соседние файлы в папке шпант