Вы находитесь на странице: 1из 66

3.

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

3.1. Общие понятия

Реляционная алгебра – это абстрактный язык запросов в


реляционной базе данных. Состоит из набора операций, использующих
отношения в качестве аргументов (одно или несколько),
возвращающих в качестве результата – тоже отношение.
r = f(r1, r2, …, rn)
Существует понятие замкнутости реляционной алгебры
относительно отношения: в качестве аргументов реляционные
операторы можно подставлять другие реляционные операторы.
r = f( f1(r1, r2, …, rn), f2(r1, r2, …, rm) )
Все операции реляционной алгебры делятся на следующие
классы:
1. Теоретико-множественные операции (объединение,
пересечение, разность, декартово произведение,
дополнение, присваивание).
2. Специальные реляционные операции (проекция, селекция,
тетта-join-соединение, полное соединение, полусоединение,
внешнее соединение, деление).

Существует несколько специальных операций, отчасти только


теоретических, не имеющих аналога в языке SQL:
1. операция транзитивного замыкания
2. операция расщепления
3. построение перекрестных таблиц

С точки зрения количества аргументов, операции бывают:


1. унарными;
2. бинарными.
Бинарные операции в некоторых случаях требуют, чтобы
отношения-аргументы были совместимыми по типу, то есть они
должны иметь совместимые схемы.
ОПРЕДЕЛЕНИЕ 3.1.1: Два отношения r(R) и s(S) имеют
совместимые схемы (являются совместимыми), если между схемами
R и S существует взаимнооднозначная корреспонденция – f, таки
образом, что для любого атрибута A из R существует атрибут B из S,
таким образом, что dom(A)=dom(B) и B=f(A), A=f -1 (B).
ПРИМЕР 3.1.1. Даны отношения «продажи», «артикул» и
«поставщик» (рис. 3.1.1).

продажи Фирма Артикул


f1 a1 артикул Артикул Цвет
f1 a2 а1 с1
f2 a1 а2 с2
а3 с2
поставщик Поставщик Артикул
f1 a1
f1 a2
f2 a1

Рис. 3.1.1 - Отношения «продажи», «артикул» и «поставщик»


Отношение «продажи» и «поставщик» имеют одинаковые
схемы – совместимые. Как следствие можно выделить то, что арность
совместимых отношений должна быть равной.
3.2. Теоретико-множественные операции над множествами
3.2.1. Объединение

Объединение - бинарная операция. Необходимое условие:


совместимость схем отношений-аргументов.

ОПРЕДЕЛЕНИЕ 3.2.1.1. Объединением двух отношений со


совместимыми схемами R и S, обозначенное rs, является отношение
на схеме R или S, состоящее из кортежей r или s:
rs = {t|tr  ts}

q=rs, Q=R или Q=S


ПРИМЕР 3.2.1.1. Пусть даны отношения r и s. Найти q=rs
(рис. 3.2.1.1).
s A B C
a1 b1 c1
a2 b2 c2
a1 b2 c2
r A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2

q A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2
a2 b2 c2
a1 b2 c2
Рис. 3.2.1.1 - Отношения r, s, q=rs
q=rs={t|tr  ts}
dom(Ar)= dom(As)
dom(Br)= dom(Bs)
dom(Cr)= dom(Cs)
sch(q)=sch(rs)=sch(r)=sch(s)=Q=ABC
|sch(q)|=|sch(rs)|=| sch(r)|=| sch(s)|=3 (арность результирующего
отношения)

Мощность результирующего отношения:


max(|r|, |s|)  | rs |  |r|+|s|

Свойства операции объединения:


1. коммутативность: rs=sr;
2. ассоциативность: r(sq)=(rs)q=(r, s, q). Выражение,
содержащее каскадную операцию объединения r1  r2 
r3…=(r1, r2, r3);
3. r=r;
rs=s, если sr
4. rr=r.

Арность: |Q| = |R| = |S|


Мощность: |q|  |r|, |q| s
|q| = |rs|  max( |r|, |s|)
|rs|  |r| + |s|
3.2.2. Пересечение

Пересечение – бинарная операция. Необходимое условие:


совместимость схем отношений-аргументов.

ОПРЕДЕЛЕНИЕ 3.2.2.1. Пересечением отношений с


совместимыми схемами R и S, обозначенное rs является отношение
на схеме R или S? состоящее из кортежей, принадлежащих
одновременно и r и s:
rs={t|tr & ts}
qr∩s
ПРИМЕР 3.2.2.1. Пусть даны отношения r и s. Найти q=rs
(рис. 3.2.2.1).

r A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2
s A B C
a1 b1 c1
a2 b2 c2
a1 b2 c2

q A B C
a1 b1 c1
Рис. 3.2.2.1 - Отношения r, s, q=rs

Арность: |Q| = |R| = |S|


sch(q)=sch(rs)=sch(r)=sch(s)=Q=ABC
| sch(q)|=|sch(rs)|=| sch(r)|=| sch(s)|=3 (арность
результирующего отношения)

Мощность: |q|  |r|, |q|  s


0  |rs|  min( |r|, |
s|)
Свойства операции пересечения:
1. rs=sr – коммутативность;
2. r(sq)=(rs) q=(r, s, q) – ассоциативность;
3. rr=r
4. r=
5. rs=r, если rs.
3.2.3. Разность

Разность – бинарная операция. Необходимое условие:


совместимость схем отношений-аргументов.

ОПРЕДЕЛЕНИЕ 3.2.3.1. Разность двух совместимых


отношений r и s, обозначенная r\s, представляет собой отношение на
схеме R и S, состоящих из кортежей, входящих в отношение r, кроме
тех, которые входят в отношение s.
r\s = {t|tr &
ts} q=r\s,
t=s\r
ПРИМЕР 3.2.3.1. Даны отношения r и s. Найти q=r\s и t=s\r (рис.
3.2.3.1).

s A B C
a1 b1 c1
a2 b2 c2
a1 b2 c2
r A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2

q A B C t A B C
a2 b1 c2 a2 b2 c2
a1 b1 c2 a1 b2 c2

Рис. 3.2.3.1 - Отношения r, s, q, t


Свойства:
1. r\s  s\r не является коммутативной
2. r\(s\q)  (r\s)\q не является ассоциативной
3. r\ = r
4. \r = 
5. r\r = 

sch(r\s) = R = S
|sch(r\s)| = |R| = |S| - арность результирующего отношения
|Q| = |R| = |S|
0  |q|=| r\s |  |r| - мощность отношения
3.2.4. Декартово произведение

Декартово произведение – бинарная операция.

ОПРЕДЕЛЕНИЕ 3.2.4.1. Декартово произведение двух


отношений на схеме r(A1, A2, …, An) и s(B1, B2, …, Bm), обозначенное r
x s = { tr ts}, есть множество кортежей (не всегда отношение),
определенных на схеме A1, A2, …, An, B1, B2, …, Bm. Каждый кортеж
представляет собой конкатенацию кортежей из двух исходных
отношений. В результате будут представлены всевозможные
комбинации из r и s.
r x s = { tr ts | trr &
tss} q=r x s

Для любой пары сцепленных кортежей результата операции


существуют кортежи trr и tss, такие, что t[Ai] = tr[Ai] и
t[Ai] = tr[Ai]
ПРИМЕР 3.2.4.1. Даны отношения r и s. Найти q=r х s (рис.
3.2.4.1).
r A B C s D E q A B C D E
a1 b1 c1 d1 e1 a1 b1 c1 d1 e1
a2 b1 c2 d2 e2 a1 b1 c1 d2 e2
a1 b1 c2 a2 b1 c2 d1 e1
a2 b1 c2 d2 e2
a1 b1 c2 d1 e1
a1 b1 c2 d2 e2

Рис. 3.2.2.1 - Отношения r, s, q

sch (r x s) = sch(r) sch(s) = RS


|sch(r x s)| = |R|+|S| - арность отношения
| r x s |=|q| = |r| x |s| - мощность отношения
|Q| = |R| + |S|

Данная операция требует много ресурсов памяти.


Для выполнения данной операции необходимо, чтобы схемы
отношений-операндов были дизъюнктны (нет общих (одинаковых)
атрибутов), RS=.
Если схемы отношений-операндов не дизъюнктны, то данная
проблема решается, используя операцию переименования атрибутов
через присваивание.
3.2.5. Присваивание

Операция присваивания используется для переименования


атрибутов и сохранения промежуточных результатов.

ОПРЕДЕЛЕНИЕ 3.2.5.1. Пусть дано отношение на схеме


r(A1, A2, …, An) и (B1, B2, …, Bn) – множество атрибутов,
совместимых с A (dom(Ai)= dom(Bi)).
Новое отношение s(B1, …, Bn) можно получить, присвоив
отношению s отношение r:
s(B1, B2, …, Bn) := r(A1, A2, …, An).
При этом отношение s совместимо с r. Тела отношений r и s
совпадают.
ts[Bi] = tr[Ai]
На базе отношения r образуется отношение s.
Таким образом, решается проблема дизъюнктности схем для
операции декартово произведения. Данная операция является очень
ресурсоемкой.
3.2.6. Дополнение

ОПРЕДЕЛЕНИЕ 3.2.6.1. Пусть дано отношение r(R).


Обозначим tup(R) – все кортежи над всеми атрибутами схемы R и их
доменами. Дополнением отношения r, обозначенное -r, есть
отношение, которое вычисляется по формуле: -r=tup(R)\r

ПРИМЕР 3.2.6.1. Даны домены атрибутов и отношение r.



Найти r (рис. 3.2.6.1).
r A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2
dom(A)={a1, a2}
dom(B)={b1, b2}
dom(C)={c1, c2}
tup(R) A B C -
r A B C
a1 b1 c1 a2 b1 c1
a1 b1 c2 a1 b2 c1
a2 b1 c1 a1 b2 c2
a2 b1 c2 a2 b2 c1
a1 b2 c1 a2 b2 c2
a1 b2 c2
a2 b2 c1
a2 b2 c2

Рис. 3.2.6.1 - Отношения r, -r, tup(R)

|tup(R)|=|dom(A)|*|dom(B)|*|dom(C)|

sch(-r)=Q=R=S
|-r|=|tup(R)| - |r|

При r = , -r=tup(R)
3.2.7. Активное дополнение

Возможен случай, когда какой-то из атрибутов определен на


бесконечном домене. К примеру, множество целых чисел. В таком
случае невозможно построить tup(R). Тогда применяют операцию
активного дополнения.

ОПРЕДЕЛЕНИЕ 3.2.7.1. Активным дополнением отношения


r (~r) является отношение:
~
r = atup(R)\r
atup() – множество всех кортежей над всеми атрибутами схемы
R и их активными доменами.
Активные домены – это множество всех значений данного
атрибута, присутствующих в данный момент в отношении.
adom(A) = {a| adom(A) &  tr & t[A]=a}
ПРИМЕР 3.2.7.1. Дано отношение r. Найти активное
дополнение ~r (рис. 3.2.7.1).

adom(A)={a1, a2}
adom(B) ={b1}
adom(C) ={c1, c2}

r A B C
r A B C
~
a1 b1 c1 a2 b1 c1
a2 b1 c2
a1 b1 c2

atup(R) A B C
a1 b1 c1
a2 b1 c2
a1 b1 c2
a2 b1 c1
Рис. 3.2.6.1 - Отношения r, ~r, atup(R)
3.3. Специальные реляционные операции
3.3.1. Проекция
Операция проекции (вертикальной выборки) является унарной
операцией.
ОПРЕДЕЛЕНИЕ 3.3.1.1. Пусть r – отношение на схеме R и X
 R- множество атрибутов из R.
Проекцией схемы R на множество атрибутов X, обозначенной
 X r   {t[x] | t  r}, является отношение со схемой Х, состоящее их
всех Х-значений кортежей отношения r.

ОПРЕДЕЛЕНИЕ 3.3.1.2. Результатом проекции отношения r


по списку атрибутов A1, A2, ..., An является отношение с заголовком,
определяемым множеством атрибутов A1, A2, ..., An, и с телом,
состоящим из кортежей вида <A1:a1, A2:a2, ..., An:an>, таких, что в
отношении r имеется кортеж, атрибут A1 которого имеет значение a1,
атрибут A2 имеет значение a2, ..., атрибут An имеет значение an. Тем
самым, при выполнении операции проекции выделяется
"вертикальная" вырезка отношения-операнда с естественным
уничтожением потенциально возникающих кортежей-дубликатов.
ПРИМЕР 3.3.1.1. Дано отношение r(R). Найти проекцию
данного отношения на атрибуты АВ - AB(r) и на атрибуты АС AC(r) .

r A B C AB(r) A B
a1 b1 c1 a1 b1
a1 b1 c2 a1 b2
a1 b2 c3 a2 b1
a2 b1 c4
a2 b1 c5

AC(r) A C
a1 c1
a1 c2
a2 c4
a2 c5
a1 c3
Рис. 3.3.1.1 - Отношения r, AB(r), AC(r)
sch(X(r))=X
1  |sch(X(r)|  |R| - арность результирующего отношения
0  | X(r)|  |r| - мощность отношения

Свойства:
1. r =  X(r) = 
2. X=R X(r) = R(X)=r
3. X= X(r) – не определенa
4. RX X(r) – не определенa
5. XY  X(Y(r)) = X(r)
Y(X(r)) – не определенa
6. X=Y X(Y(r)) = X(r) = Y(r)
7. X(Y(r)) Y(X(r))
3.3.2. Селекция

Операция селекции – выборка, ограничение, является унарной


операцией. Суть операции состоит в следующем: из отношения
выбираются кортежи, удовлетворяющие определенным условиям.
Необходимо задать условие, представленное в виде формулы – F(t).
Данная формула определяется рекурсивно:
1. a) AB – является формулой: dom(A)=dom(B), где А, В –
совместимые атрибуты
b) Аа, adom(A) {>, <, , , =, }. Формула такого вида
называется атомарной
2. если H, G – атомарные формулы, тогда H&G, HG,  G,  H
- то же формулы
3. ничто другое не является формулой.
Формула F для операции выборки должна быть применима к
отношению r.
ОПРЕДЕЛЕНИЕ 3.3.2.1. Формула F называется применимой к
отношению r, если любая константа cdom(R) и любой атрибут AR.
dom(R) =  dom(Ai), i=1,2…n, AiR
ОПРЕДЕЛЕНИЕ 3.3.2.2. Селекцией отношения r по формуле
F, обозначенной F(r), где F – применимая формула, является
отношение, определенное на схеме r, состоящее из всех кортежей
отношения r, удовлетворяющих формуле F:
F(r)={t|tr & F(t)}
ПРИМЕР 3.3.2.1. Сделать выборку отношения r по формуле
(A=a2C3)(r) (рис. 3.3.2.1).

(A=a2C3)(r) A B C
a1 b1 1
a1 b2 2
a2 b1 8
a2 b1 0
r A B C
a 1 b1 1
a 1 b1 3
a 1 b2 2
a 2 b1 8
a 2 b1 0
Рис. 3.3.2.1 - Отношения r, (A=a2C3)(r)
sch(F(r)) = |Q| = |R|
0  |q(R)|=| F(r)|  |r|

Свойства:
1. если F(t) – нулевая формула, тогда F(r)=r r
2. если r=, тогда F(r)=, F(t)
3. H(G(r))= H&G(r)
4. коммутативность: H(G(r))= G(H(r))
5. дистрибутивность: F(rs)= F(r)  F(s), {, , \},
дополнение
6. селекция не коммутативна относительно дополнения:
 F( r)  ( (r))
7. коммутативна для операции проекции: F(X(r))=X(F(r))

Селекция коммутативна с операцией проекции, в случае, если


формула F будет применима.
3.3.3.  - соединение (-join)

Операция join-соединения – бинарная операция. Операция


требует дизъюнктности (схемы не имеют общих атрибутов) для
избегания наличия одинаковых атрибутов в результирующей схеме и
совместимости схем (одинаковые домены атрибутов А и В).

ОПРЕДЕЛЕНИЕ 3.3.3.1. Пусть r(R) и s(S) – отношения, и


AR, BS, {>, <, , , =, }. -соединение отношений r и s,
обозначенное r s – есть отношение, состоящее из множества
соединенных кортежей вида trts, для который имеет место выражение
tr[A]ts[B]:
r AB(s)={ trts | trr & tss & tr[A]ts[B]}.

Для выполнения -соединения необходимо соблюдать условие


RS=. Атрибуты А и В должны быть совместимыми.
Если ={=}, тогда -соединение называется эквисоединением
(equi-join).
ПРИМЕР 3.3.3.1. Даны отношения r и s. Найти q=r C>D sи
q1 =r C=D s (рис. 3.3.3.1).

r A B C s D E
a1 b1 4 3 e1
a1 b2 2 4 e2
a2 b1 6 1 e2
r C>D s=q r C=D s=q1
q A B C D E q1 A B C D E
a1 b1 4 3 e1 a1 b1 4 4 e2
a1 b1 4 1 e2
a1 b2 2 1 e2
a2 b1 6 3 e1
a2 b1 6 4 e2
a2 b1 6 1 e2
Рис. 3.3.3.1 - Отношения r, q, q1, s
Случай equi-join используется часто с операцией проекции,
чтобы избежать повторения значений атрибутов.
Операция соединения может быть выражена через операции
селекции и декартовым произведением:
r ABs=AB(r x s)
Данная операция обладает свойством коммутативности:
r ABs= s A B r

|sch(r ABs)| = |R|+|S| - арность отношения


0  |r ABs|  |r| x |s| - мощность отношения
3.3.4. Естественное соединение (natural-join)

ОПРЕДЕЛЕНИЕ 3.3.4.1. Пусть r и s – отношения.


Естественным соединением отношений r и s (r s) является
отношение, определенное на схеме RS. Кортеж t принадлежит
результирующему отношению, если существуют кортежи tr, ts  r&s и
соответственно выполняются следующие условия:
t[R]=tr, t[S]=ts
r s={t | t[R]= tr & t[S]=ts & trr& tss}
Таким образом, кортеж из отношения-результата является
сцеплением двух кортежей из отношений-операндов, для которых
имеются RS-значения. Появляющиеся при этом атрибуты
дубликатов в схеме, удаляются.
Каждый кортеж t из результирующего отношения образован из
кортежей отношений-операндов r и s, имеющих равные в RS
значения. Если в схемах R и S есть одноименные атрибуты,
дубликаты исключаются из результирующей схемы.
ПРИМЕР 3.3.4.1. Даны отношения r и s. Найти q = r s (рис.
3.3.4.1).
s B C D
b1 c1 d1
b1 c1 d2
b1 c2 d3
b2 c2 d4
r A B C
a1 b1 c1
a1 b2 c1
a2 b1 c2
q =r s A B C D
a1 b1 c1 d1
a1 b1 c1 d2
a2 b1 c2 d3

Рис. 3.3.4.1 - Отношения r, q, s


min(|R|, |S|)  |sch(r s)|  |R|+|S| - арность отношения
0  |r s|  |r| x |s| - мощность отношения

Свойства:
1. RS= r s= r x s
2. R=S r s=rs
3. RS(F(r x s))= R(F(r x s))= S((rs)x(rs))=rs
4. r s=s r
5. (r s) q=r (s q)= (r, s, q)
6. Рассмотрим связь между соединением и объединением:
r(R), r1(R), s(S) => (r1r) s=(r s) (r1 s)

Если r1=R1(r), r2=R2(r) => r1 r2=r – соединение называется


без потерь.

ПРИМЕР 3.3.4.2. Дано отношение r. Разложить его на две


проекции, а затем провести над ними операцию естественного
соединения. Проверить является ли полученный результат
соединением без потерь (рис. 3.3.4.2.a)).

r A B C
a1 b1 c1
a1 b1 c2
a2 b2 c2

AC(r) A C
AB(r) A B a1 c1
a1 b1
a2 b2 a1 c2
a2 c2

AB(r) AC(r)=q5
q5 A B C
a1 b1 c1
a1 b1 c2
a2 b2 c2

Рис. 3.3.4.2.а) - Отношения r, AC(r), q5, AB(r)

Сравним: q5=r, соединение без потерь


Провести соединение других проекций. Сравним: q6r.
Следовательно, получено соединение с потерями (рис. 3.3.4.2.b)).
AC(r) A C BC(r) B C
a1 c1 b1 c1
a1 c2 b1 c2
a2 c2 b2 c2

q6 A B C
a1 b1 c1
a1 b1 c2
a1 b2 c2
a2 b1 c2
a2 b2 c2
Рис. 3.3.4.2.b) - Отношения r, AC(r), q6, AB(r)

ПРИМЕР 3.3.4.3. Разложить отношение r1 на две проекции и


провести над полученными результатами операцию естественного
соединения (рис. 3.3.4.3). Проанализировать результат.
r1 A B C r=AB(r) A B
a1 b1 c1 a1 b1
a2 b1 c2 a2 b1

s=ВС(r) В С r s A B C
b1 с1 a1 b1 c1
b1 c2 a1 b1 c2
a2 b1 c1
a2 b1 c2
Рис. 3.3.4.3 - Отношения r, r=AB(r), s=ВС(r), r s
Видно, что исходное отношение не равно отношению,
полученному после соединения (r1 r s). Это явление носит название
декомпозиции с потерями. Декомпозиция важна при проектировании
БД.

ПРИМЕР 3.3.4.4. Рассмотреть декомпозицию без потерь (рис.


3.3.4.4).
r1 A B C r=AB(r) A B
a1 b1 c1 a1 b1
a2 b1 c2 a2 b1

s=АС(r) А С r s A B C
а1 с1 a1 b1 c1
а2 c2 a2 b1 c2

Рис. 3.3.4.3 - Декомпозиция без потерь


Видно, что исходное отношение равно отношению,
полученному после соединения
(r1= r s).
При соединении отношений r и s кортежи, участвующие в
соединении, называют соединяемыми. Кортежи, не участвующие в
соединении, не соединяемые.
Если при соединении все кортежи (из обоих отношений)
являются соединяемыми, то соединение называется полным. Условие
полного соединения имеет вид:
R  S (r) = R  S (s)
3.3.5. Внешнее соединение
В предыдущих примерах не все кортежи отношений-операндов
являлись соединяемыми. В результате получается неполное
соединение. Э. Кодд предложил добавить к операциям реляционной
алгебры операцию внешнего соединения, целью которой было
исключение потери кортежей при неполном соединении. Данная
операция является также бинарной и обозначается r∘ s.
ПРИМЕР 3.3.5.1. Провести операцию внешнего соединения
между отношениями r и s (рис. 3.3.5.1).

r=AB(r) A B s В С
a1 b1 b1 с1
a1 b2

r∘ s A B C
a1 b1 c1
a1 b2 NULL
Рис. 3.3.5.1 - Операция внешнего соединения
Операция не применяется, если значение NULL
устанавливается в ключевых атрибутах.
В зависимости от того, в какой части операции присутствуют
несоединяемые кортежи, различают следующие виды внешнего
соединения:
1. левое (left outer join) - r ∘ s (несоединяемые кортежи в
отношении r);
2. правое (right outer join) - r ∘ s (несоединяемые кортежи в
отношении s);
3. полное (full outer join) r ∘ s (несоединяемые кортежи с
обеих сторон).

Если все кортежи соединяемые, то операция совпадает с


операцией естественного соединения. Внешнее соединение
применимо также к -соединению.
ПРИМЕР 3.3.5.2. Провести операцию полного внешнего
соединения (рис. 3.3.5.2).

r A B С s B С D
a1 b1 с1 b1 с1 d1
a1 b1 с2 b1 с1 d2
a1 b2 c1 b2 с1 d3
r∘s A B C D
a1 b1 с1 d1
a1 b1 с2 d2
a1 b2 с1 -
- b2 с2 d3

Рис. 3.3.5.2 - Операция полного внешнего соединения


3.3.6. Полусоединение (semijoin)

Операция полусоединения – бинарная операция. Она состоит в


построении результирующего отношения из двух исходных, но
содержит кортежи только из первого отношения.

ОПРЕДЕЛЕНИЕ 3.3.6.1. Пусть r и s – отношения.


Полусоединенным отношением r и s, обозначенным r s, есть
множество кортежей, удовлетворяющих выражению:
r s= R(r s).
Так же, как и в случае естественного соединения,
соединенными будут кортежи с равными RS-значениями атрибутов.
ПРИМЕР 3.3.6.1. Найти полусоединение q=r s (рис. 3.3.6.1).
s BCD
r AB C
b1c1d1
a1b1 c1 c2 c3
b1c2d2
a1b2
b1c3d3
a1b1

q A B C
a1 b1 c1
a1 b1 c3

Рис. 3.3.6.1 - Операция полусоединения


sch(r s) = R
0  |r s|=|q|  |r|
Q=R, |Q|=|R|

Свойства операции полусоелинения:


1. r ss r – не коммутативна;
2. Если RS=, то r s=R(r x s);
3. Если R=S, то r s=R(rs).
3.3.7. Деление

Операция деления – бинарная операция.

ОПРЕДЕЛЕНИЕ 3.3.7.1. Пусть r,s – отношения и SR.


Обозначим через Q=R\S. Делением отношения r на s, обозначенным
через rs, является отношение, определенное на схеме Q,
rs={t|tss(S)  trr(R)  tr[Q]=t  tr[S]=ts}

Операция деления обратная операции произведения:


q= rs, тогда q x s – отношение со схемой r, содержащее
максимальное количество.

Теорема 3.3.7.1. Для двух отношений q(Q) и s(S) действительно:


r= q х s => q= rs
Если q= rs, то qxs  r
ПРИМЕР 3.3.7.1. Найти деление отношения r на s1-s5 (рис.
3.3.7.1).
r A B C s1 C s4 B C s3 C
a1 b1 c1 c1 b1 c1 c1
a2 b1 c1 c2
a1 b2 c1 s2 C s5 B C c3
a1 b2 c2 c1 b1 c1 c4
a2 b1 c2 c2 b2 c1
a1 b2 c3
a1 b2 c4
a1 b1 c5

q1=rs1 A B
a1 b1
a2 b1
a1 b2

q2= rs2 A B
a1 b2

q3=rs3 A B
a1 b1
a2 b1
a1 b2

q4= rqs5 rA A


4= s5
a2 a1
Рис. 3.3.7.1 - a1 Операция деления
ПРИМЕР 3.3.7.2. Найти деление отношения «лицензия» на
«самолеты» (рис. 3.3.7.2).
лицензия  самолеты = пилоты

лицензия Пилот Назв. самолета самолеты Название


Иванов ТУ 134 ТУ 134
Boeing 137
Иванов Boeing 137
Иванов Boeing 147
Петров ТУ 134
Петров Boeing 137

пилоты Пилот
Иванов
Петров

Рис. 3.3.7.2 - Операция деления: лицензия  самолеты = пилоты


Свойства:
1. rs  sr – не коммутативна;
2. не ассоциативна;
3. если S=, то операция rs неопределенна;
4. если r(R)s(S) => rs=
Данная операция не имеет прямого аналога в SQL. Она
выражается через операции произведения, проекции и вычитания:
rs=Q(r)\ Q( Q(r) x s)\r)
Важно отметить, что, если для одного атрибута в селекции стоит
условие «И», то следует применять не селекцию, а деление, а условие
«ИЛИ» выполняется через операцию селекции.
3.4. Вспомогательные реляционные операции
3.4.1. Транзитивное замыкание

Транзитивное замыкание – унарная операция. С помощью этой


операции можно добавить кортежи в отношение. Суть операции
состоит в многократном выполнении операции естественного
соединения, проекции и объединения. Количество повторений
данных операций не является фиксированным и зависит от кортежей
(их содержания) исходного отношения-операнда.

ОПРЕДЕЛЕНИЕ 3.4.1.1. Пусть r – отношение, A1, A2R и


dom(A1)=dom(A2). Транзитивное замыкание отношения r
представляет собой отношение, содержащее все кортежи исходного
отношения r плюс кортежи, полученные посредством транзитивности,
то есть, если в отношении присутствуют кортежи t1=<a, b,> и t2=<b,
c>, то добавляем t3=<a, c>.
Обозначается: (r) или close(r), или r+.
ПРИМЕР 3.4.1.1. Найти транзитивное замыкание отношения r
(рис.3.4.1.1).

r Персона Наследник
Анна Мария
Анна Иван
Иван Василий
Иван Ольга
Мария Елена
Ольга Михаил
(r) Персона Наследник
Анна Мария
Анна Иван
Иван Василий
Иван Ольга
Мария Елена
Ольга Михаил
Анна Елена
Анна Ольга
Анна Василий
Иван Михаил
Анна Михаил

Рис. 3.4.1.1 - Операция транзитивного замыкания

После добавления кортежей, снова выявляются возможные


связи и добавляются новые. Данная операция не имеет аналога в SQL
и не может быть выражена ни одной из формул.
3.4.2. Расщепление

Расщепление является унарной операцией. Обозначается:


split(r). Это упорядоченная операция. Результатом операции являются
два отношения, полученные путем расщепления исходного. Схемы
результативных отношений одинаковы, и совпадают со схемой
исходного. Они отличаются только кортежами.
Расщепление исходного отношения выполняется на основе
некоторого условия, выраженного через формулу – F, возложенную
на один или несколько атрибутов схемы. Кортежи, удовлетворяющие
данному условию, входят в первое отношение, остальные во второе.

ПРИМЕР 3.4.2.1. Найти расщепление отношения


«абитуриент» по условию Образование=Бакалавр & Факультет=CIM
(рис.3.4.2.1).
split(абитуриент)Образование=Бакалавр&Факультет=CIM
абитуриент Фамилия Образование Факультет
t1 Пейкова Среднее CIM
t2 Ясабаш Среднее CIM
t3 Мунятну Бакалавр CIM
t4 Ребедева Бакалавр FRT
t5 Пененко Среднее FRT

q1 Фамилия Образование Факультет


Мунтяну Бакалавр CIM

q2 Фамилия Образование Факультет


t1 Пейкова Среднее CIM
t2 Ясабаш Среднее CIM
t4 Ребедева Бакалавр FRT
t5 Пененко Среднее FRT
Рис. 3.3.2.1 - Операция расщепления
Данная операция является теоретической, так как на практике
не существует аналога для ее реализации. Операция не подставляема
в операции реляционной алгебры, она не может быть операндом
другой операции реляционной алгебры.
3.5. Выражения реляционной алгебры

Доступ к реляционным данным осуществляется с помощью


операндов реляционной алгебры. Реляционная алгебра использует в
качестве операндов отношения (одно или несколько) и возвращает в
качестве результата отношение (два – в случае расщепления).
Реляционная алгебра является замкнутой относительно понятия
отношения (за исключением split), что позволяет результат одних
операций использовать в качестве операнда для другой операции, тем
самым появляется возможность вычислять выражения в реляционной
алгебре.
f(r1, r2)
f(f1(r1), f2(r1, r2))

Операции реляционной алгебры делятся на 2 категории:


1. теоретико-множественные операции;
2. специальные реляционные операции.
Операции расщепления и транзитивного замыкания являются
вспомогательным операндом и их невозможно выразить с помощью
выражения реляционной алгебры.
Для выполнения некоторых операций необходимо выполнение
некоторых условий:
1. совместимость схем отношений-операндов (пересечение,
объединение, разность);
2. дизъюнктивность схем или совместимость атрибутов
(декартово произведение, тета-соединение);
3. конечное значение для заданных доменов (дополнение,
активное дополнение).
Иногда, для решения этих проблем используется операция
присвоения.
Имеющееся множество операций реляционной алгебры
является по сути избыточным, т.к. можно выразить одни операции
через другие.
Существует ряд операций, названных примитивными, которые
нельзя выразить через другие операторы. К ним относят:
 объединение;
 декартово произведение;
 проекция;
 селекция;
 вычитание.
Остальные операции можно выразить комбинациями примитивных
операций.
Существует несколько типов запросов, которые нельзя
выразить средствами реляционной алгебры:
 построение транзитивного замыкания;
 построение перекрестных таблиц;
 запросы, требующие дать список атрибутов,
удовлетворяющих определенным условиям.
Выражения реляционной алгебры допускают скобки.
Бинарные операции не имеют преимущества друг перед другом, за
исключением приоритета операции пересечения перед объединением.
При последовательности одинаковых операций (пересечение,
объединение, соединение), допускается выводить оператор за скобки.
abcd=(a, b, c, d)
ОПРЕДЕЛЕНИЕ 3.5.1. Схема алгебраического выражения,
обозначенная sch(E), определяется рекурсивно и зависит от схем
отношений-операндов:
1. Если Е – постоянное отношение, тогда схема sch(E)
является схемой отношения;
2. Если Е является одним из выражений Е1Е2, Е1Е2, Е1 \Е2,
Е2 \Е1, ~Е1,F(E1), тогда sch(E)=sch(E1);
3. Если Е=X(E1), тогда sch(E)=x;
4. Если Е=Е1Е2, тогда sch(E)= sch(E1)\ sch(E2);
5. Если E1x E2, E1 E2, E1 E2, тогда sch(E)= sch(E) sch(E1)
(дубликаты атрибутов удаляются);
6. Если Е=Е1 Е2, тогда sch(E)=sch(E1);
7. Если есть операция присваивания ri(Ri):= rj(Rj), тогда
sch(E)=Rj;
8. Ничто другое не является схемой алгебраического
выражения.
ПРИМЕР 3.5.2. Найти идентификаторы клиентов, которые
купили товары стоимостью меньше 100 леев. Его можно
сформулировать и по-другому: найти идентификаторы покупателей, не
купивших ни одного товара стоимостью ≤ 100 леев.

Примеры типичных, наиболее часто используемых запросов:


a. X(F(r)) – запрос к одному отношению;
b. X(F(r x s)) – запрос к двум отношениям.

Примеры эквивалентных выражений:


a. rs = r\(r\s);
rs = s\(s\
r);
b. r s=R(r x s), при RS=;
r s= r x s, при RS=;
r s=rs, при R=S;
c. r  s= F(r x s).

Вам также может понравиться