![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
Операция расширения
Операция расширения порождает новое отношение, похожее на исходное, но отличающееся наличием добавленного атрибута, значения которого получаются путем некоторых горизонтальных (скалярных) вычислений.
Операция расширения имеет вид:
EXTEND <исходное отношение> ADD <выражение> AS <новый атрибут>,
где к исходному отношению добавляется (ключевое слово ADD) <новый атри-6ут>, подсчитываемый по правилам, заданным <выражением>.
Исходное отношение может быть задано именем отношения и с помощью выражения реляционной алгебры, заключенного в круглые скобки.
При этом имя нового атрибута не должно входить в заголовок исходного отношения и не может использоваться в <выражении>.
Добавляемый новый атрибут называется вычисляемым атрибутом (вычисляемым полем).
В результате этой операции для каждого кортежа вычисляется одно значение, которое помещается в новый атрибут.
В выражении можно использовать обычные арифметические операции, операции сравнения и различные функции
Например,
EXTEND (Р JOIN SP) ADD (Вес * Количество) AS Общий_Вес
Здесь исходное отношение получается путем естественного соединения отношений Р и SP.
Пользуясь операцией расширения, можно выполнить переименование атрибута. Для этого нужно в выражении указать имя атрибута, в конструкции AS определить новое имя этого атрибута, затем выполнить проекцию полученного отношения на множество атрибутов, исключая старый атрибут.
Таким образом, запись
(EXTEND S ADD Город_П AS Город) [П#, Имя, Статус, Город]
эквивалента конструкции
S RENAME Город_П AS Город.
Подобно тому, как это сделано для операции переименования, Дейт определил операцию множественного расширения, которая позволяет в одной синтаксической конструкции вычислять несколько новых атрибутов.
Формально операция представима следующим образом:
EXTEND <отн.> ADD <выр.1> AS <атр.1>, <выр.2> AS <атр.2>,...,
< выр.N> AS<aтp.N>.
Операция подведения итогов
Операция подведения итогов SUMMARIZE выполняет «вертикальные» или групповые вычисления и имеет следующий формат:
SUMMARIZE <исх. отн.> BY (<список атрибутов>) ADD <выр.> AS
<новый атрибут>,
где исходное отношение задается именем отношения либо заключенным в круглые скобки выражением реляционной алгебры, <список атрибутов> представляет собой разделенные запятыми имена атрибутов исходного отношения A1, A2,..., AN, <выр.> — скалярное выражение, аналогичное выражению операции EXTEND, а <новый атрибут> — имя формируемого атрибута. В списке атрибутов и в выражении не должен использоваться <новый атрибут>.
Результатом операции SUMMARIZE является отношение R с заголовком, состоящим из атрибутов списка, расширенного новым атрибутом.
Для получения тела отношения R сначала выполняется проекция (назовем отношение-результат проекции R1) исходного отношения на атрибуты A1, A2,..., AN, после чего каждый кортеж проекции расширяется новым (N+1) -м атрибутом.
Поскольку проекция, как правило, приводит к сокращению количества кортежей по отношению к исходному отношению (удаляются одинаковые кортежи), то можно считать, что происходит своеобразное группирование кортежей исходного отношения: одному кортежу отношения R1 соответствует один или более (если было дублирование при проекции) кортежей исходного отношения.
Значение (N+1) -гo атрибута каждого кортежа отношения R формируется путем вычисления выражения над соответствующей этому кортежу группой кортежей исходного отношения.
В выражении <выр.> помимо обычных арифметических операций, операций сравнения и функций можно использовать различные функции, называемые итоговыми (групповыми), такие как:
COUNT (количество), SUM (сумма), AVG (среднее), МАХ (максимальное),
MIN (минимальное).
Пример. Подведение итогов.
Пусть требуется получить количество каждой из видов оценок, полученных при сдаче экзаменов для заданного отношения R2.
R2
| Фамилия | Дисциплина | Оценка |
| Иванова | БД | |
| Иванова | Ин.яз | |
| Сидорова | БД | |
| Петров | Философия | |
| Петров | БД | |
| Сидорова | Философия |
Дата публикования: 2015-07-22; Прочитано: 529 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
