![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Отношение-результат R будет следующим:
R
Дисциплина | Оценка | Кол-во |
БД | ||
БД | ||
Ин.яз | ||
Философия | ||
Философия |
Пример. Подведение итогов.
Пусть требуется вычислить количество поставок по каждому из поставщиков (см. рис. 10.1).
SUMMARIZE SP BY (П#) ADD COUNT AS Количество_поставок
П# | Количество_поставок |
S1 | |
S2 | |
S3 | |
S4 |
Операция множественного подведения итогов, подобно соответствующим операциям переименования и расширения, выполняет одновременно несколько «вертикальных» вычислений и записывает результаты в отдельные новые атрибуты:
SUMMARIZE <исх. отн.> BY (<список атрибутов>) ADD <выр.1> AS
<новый атрибут1>, <выр.2> AS <новый атрибут2>,...,
< выр.N> AS<новый aтpибутN>
Простейшими примерами такой операции может служить следующие записи:
SUMMARIZE R2 BY (Дисциплина, Оценка) ADD COUNT AS Кол-во_Оценок, AVG (Оценка) AS Средняя_оценка
SUMMARIZE SP BY (Д#) ADD SUM(Количество) AS Общее_число_поставок AVG(Количество) AS Среднее_число_поставок.
К основным операторам, позволяющим изменять тело существующего отношения, отнесем операции реляционного присвоения, вставки, обновления и удаления.
Операция присвоения
Операцию присвоения можно представить следующим образом:
<выражение-цель>:= <выражение-источник>,
где оба выражения задают совместимые (точнее, эквивалентные) по структуре отношения.
Типичный случай выражений: в левой части — имя отношения, а в правой — некоторое выражение реляционной алгебры.
Выполнение операции присвоения сводится к замене предыдущего значения отношения на новое (начальное значение, если тело отношения было пустым), определенное выражением-источником.
С помощью операции присвоения можно не только полностью заменить все значения отношения-цели, но и добавить или удалить кортежи.
Примеры.
Замена тела отношения S на тело отношения P:
S:= P
Добавление в отношение S всех кортежей из отношения P:
S:= S P
Добавлениев отношение S одного кортежа:
S:= S {{< П#: 'S6' >, < Имя: 'Борис' >, < Статус: '50' >,
< Город_П: 'Москва' >}}
Удаление из отношения S всех кортежей:
S:= B
если B имеет пустое множество кортежей.
Более удобными операциями изменения тела отношения являются операции вставки, обновления и удаления.
Операция вставки
Операция вставки INSERT имеет следующий вид:
INSERT <выражение-источник> INTO <выражение-цель>,
где оба выражения должны быть совместимы по структуре.
Выполнение операции сводится к вычислению <выражение-источник> и вставке полученных кортежей в отношение, заданное <выражение-цель>.
Пример.
Вставить кортежи из отношения Абитуриент, у которых оценка 4 или 5 в отношение Студент:
INSERT (Абитуриент WHERE Оценка>3) INTO Студент
Пример.
INSERT (S WHERE Город_П=’Москва') INTO Temp.
Операция обновления
Операция обновления UPDATE имеет следующий вид:
UPDATE <выражение-цель> <список элементов>,
где <список элементов> представляет собой последовательность разделенных запятыми операций присвоения
<атрибут>:= <скалярное выражение>.
Результатом выполнения операции обновления является отношение, полученное после присвоения соответствующих значений атрибутам отношения, заданного целевым выражением.
Пример.
Исправить оценку студентки Ивановой по дисциплине БД на 5:
UPDATE (Студент WHERE Фамилия='Иванова' AND Дисциплина='БД') Оценка:=5.
Пример.
UPDATE (P WHERE Тип='каленый') Город:= 'Киев'.
Эта операция предписывает изменить значение атрибута Город (независимо от того, каким оно было) на новое значение — 'Киев' таких кортежей отношения P, атрибут Тип которых имеет значение 'каленый'.
Операция удаления
Операция удаления DELETE имеет следующий вид:
DELETE <выражение-цель>,
где <выражение-цель> представляет собой реляционное выражение, описывающее удаляемые кортежи.
Пример.
Удалить из отношения Студент все кортежи, у которых атрибут оценка имеет значение 2, то есть отчислить всех студентов, у которых есть хотя бы одна двойка:
DELETE (Студент WHERE Оценка = 2)
Пример.
DELETE (S WHERE Статус < 20)
Операция реляционного сравнения
Операция реляционного сравнения может использоваться для прямого сравнения двух отношений.
Она имеет синтаксис:
<выражение1> Q <выражение2>,
где оба выражения задают совместимые по структуре отношения, а знак Q — один из следующих операторов сравнения: = (равно), ¹ (не равно),
£ (собственное подмножество), < (подмножество), >. (надмножество),
³ (собственное надмножество).
Пример.
Сравнение: "Совпадают ли фамилии студентов и преподавателей?":
Студент[Фамилия] = Преподаватель[Фамилия].
Пример.
Сравнение: "Совпадают ли города поставщиков и города хранения деталей?":
S [Город_П] = Р [Город_Д].
Основные правила записи выражений
Как отмечалось, результатом произвольной реляционной операции является отношение, которое, в свою очередь, может участвовать в другой реляционной операции. Это свойство реляционной алгебры называется свойством замкнутости.
Свойство замкнутости позволяет записывать вложенные выражения реляционной алгебры, основой которых выступают рассмотренные ранее элементарные операции: объединение, проекция, пересечение, выборка и т. д.
При записи произвольного выражения реляционной алгебры надо принимать во внимание следующее.
1. В реляционной алгебре должен быть определен приоритет выполнения операций (например, операция пересечение более приоритетна чем операция объединение), который нужно учитывать при записи выражений. Для изменения порядка выполнения операций в выражениях можно использовать круглые скобки.
2. Существуют тождественные преобразования, позволяющие по-разному записывать одно и то же выражение.
Например, следующие выражения эквивалентны (здесь А — отношение, С, С1, С2 — выражения):
A WHERE C1 AND С2 и (A WHERE C1) Ç (A WHERE C2),
A WHERE C1 OR С2 и (A WHERE C1) È (A WHERE С2),
A WHERE NOT С и A \ (A WHERE С).
3. Составляя выражение, нужно обеспечивать совместимость участвующих в операциях отношений. При необходимости изменения заголовков следует выполнять переименование атрибутов.
Дата публикования: 2015-07-22; Прочитано: 1336 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!