4.3.1. Реляционная алгебра

Рассмотрим операции реляционной алгебры, для каждой введём обозначе-

ние и мнемоническую запись, удобную для использования в ЯМД.

A) Теоретико-множественные операции.

Прежде всего к этим операциям относят объединение, пересечение и раз-

ность, понимаемые также, как в теории множеств (см. [32]). При этом накладыва-

ются ограничения на операнды – они должны быть однотипными, т.е. иметь оди-

наковый набор атрибутов. Обозначения операций соответственно - È ,Ç , / .

{UNION|MINUS|NTERSECT }<параметры> - мнемоническая запись

операций.

К этой группе операций относят и произведение (фактически обобщение

декартового произведения).

 

где || - склейка кортежа

MULTIPLE <параметры> – мнемоническая запись.

B) Операция проекции

PROJECT <отношение> OVER <атрибуты> – мнемоническая запись.

C) Операция селекции

 

Пусть F – формула, образованная операндами, являющимися атрибутами от-

ношений или константами, а также логическими связками. Тогда,

– множество кортежей отношения R, для которых истинна фор-

мула F.

Пример.

 

SELECT <отношение> WHERE <формула> – мнемоническая запись

D) Деление

Пусть отношение R степени г, а S - степени s, r>s.
 

R¸ S={t}, где t – подкортеж длины r-s, такой что "u Î S, t || uÎ R.

Пример.

DIVIDE <параметры> - мнемоническая запись.

E) Соединение (операция дополнительная).
Существуют фактически 2 разновидности операции соединения. Рассмотрим соединение по атрибутам (применяется наиболее часто ):

– операция соединения по i-му атрибуту отношения

R и j-му атрибуту отношения S. M – множество всех атрибутов отношений R и S

за исключением j-го атрибута отношения S (атрибут исключается во избежание

бесполезного дублирования).

Возможна операция соединения по произвольному условию. В этом случае оно определяется как применение селекции по заданному условию к произведению.

JOIN <отношение 1, отношение 2> ON {<атрибуты>|<условие>}

На основе операций реляционной алгебры, определен готовый язык манипулирования данными, к нему требуется лишь добавить команды действий над выбранными данными, например OUTPUT и DELETE.

Пример запроса 1.
Выдать всех преподавателей старше 40 лет.
P=SELECT ПРЕПОДАВАТЕЛИ WHERE возраст>4 0 OUTPUT P;
Пример запроса 2. Выдать всех преподавателей физико-математического факультета, получающих з/п больше 15000 рублей. Удалить тех из них, у кого стаж

<2 лет.
P1=SELECT ФАКУЛЬТЕТЫ WHERE назв='ФМФ'
P2=JOIN P1, КАФЕДРЫ ON id, id_фак P3=JOIN P2, БЫТЬ_СОТР ON id, id_каф P4=SELECT P3 WHERE з/п>15000 P5=JOIN P4, ПРЕПОДАВАТЕЛИ ON id_преп, id P6=PROJECT P5 OVER id, ФИО, возраст, стаж OUTPUT P6
P7=SELECT P6 WHERE стаж<2 DELETE P7