
- •25. Традиционные операции над множествами. Формальные определения. Примеры выполнения. Синтаксис упрощения.
- •27. Специальные реляционные операции. Операции -соединения и деления. Формальные определения. Свойства. Примеры выполнения.
- •Дополнительные реляционные операции. Операции расширения и подведения итогов. Синтаксис. Примеры использования.
- •Пример 1.Получить имена поставщиков, которые поставляют деталь р2
Пример 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, а степень результата равна степени такой проекции плюс единица.