Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Summarize R2 BY (дисциплина, Оценка) ADD count AS кол-во



Отношение-результат 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...