Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы Данных - Сибилев, 2007

.pdf
Скачиваний:
290
Добавлен:
11.05.2015
Размер:
1.93 Mб
Скачать

121

сываются в виде предиката, содержащего атрибуты отношений-

источников данных.

Любой запрос к РБД может быть сформулирован в одном выражении РА или формуле РИ. Это свойство называется свойством реляционной пол-

ноты ЯМД. Реляционная полнота – это одно из основных требований,

предъявляемых к реализациям ЯМД.

РА и РИ эквивалентны, т.е., для каждого выражения РА существует формула РИ, производящая тот же результат, и наоборот. Параллельное существование в РМД двух принципиально различных, но эквивалентных механизмов манипулирования данными обычно объясняют историческими причинами («так сложилось»!). Однако, по-видимому, причины глубже,

т.к. все дожившие до настоящего времени реализации реляционных ЯМД используют оба абстрактных механизма.

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

6.2.1 Основные операции

Первый вариант набора операций РА был предложен Э. Коддом в

1970 г. Он содержал 8 операций. Позднее различными авторами были предложены различные дополнения этого набора. Мы здесь познакомимся с операторами, обеспечивающими основные потребности манипулирова-

ния данными.

Реляционная алгебра замкнута относительно множества отношений,

т.е., операндами операций РА являются отношения, и любая операция РА производит отношение.

Операция РА по сути является набором правил построения

схемы производного отношения из атрибутов схем операндов и

тела производного отношения из кортежей операндов.

Из имен отношений, знаков операций РА и скобок можно строить

выражения произвольной степени сложности. Очень сложные запросы к

122

реляционной БД можно сформулировать в виде одного выражения РА. По-

этому реляционная алгебра обладает большой выразительной мощностью.

Поскольку отношения – это множества, то операции РА основаны на теоретико-множественных операциях. Однако отношения – множества с особыми свойствами, поэтому в РА входят также специфические опера-

ции, которые могут быть определены только на множествах отношений.

Выделяют две группы операций РА.

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

объединение;

разность;

пересечение;

расширенное прямое произведение.

Специальные реляционные операции:

селекция (ограничение, выборка);

проекция;

соединение по условию;

естественное соединение;

взятие реляционного частного (реляционное деление)

переименование.

Этот набор операций избыточен, так как некоторые из них выража-

ются через другие. Тем не менее, все они включаются в состав алгебры как

элементарные, исходя из интуитивных потребностей пользователей БД. В

этом подразделе приведены формальные определения операций, а в сле-

дующем – синтаксис абстрактного языка РА.

Специфика отношений накладывает ограничения на операции. Так,

операндами операций объединения, взятия разности и пересечения могут быть только отношения с эквивалентными схемами. Операндами операции

расширенного прямого произведения могут быть только отношения с непе-

ресекающимися схемами.

123

Введём определения операций. Будем обозначать подмножества ат-

рибутов символами X, Y, Z,…, а значения подмножеств – символами

X:x, Y:y, Z:z,….

Определение 1. Говорят, что отношения со схемами R1(X) и R2(Y)

совместимы по объединению, если X = Y.

Определение 2. Говорят, что отношения со схемами R1(X) и R2(Y) совместимы по взятию расширенного прямого произведения, если

X Y = .

Определение 3. Объединением отношений со схемами R1(X) и

R2(X) называется отношение R = R1

R2, имеющее

 

 

А) схему R(X),

 

 

 

 

 

 

 

Б) тело, составленное из всех кортежей X:x, принадлежащих хотя

бы одному из операндов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

A

B

 

 

A

B

 

 

 

 

 

 

 

 

 

 

R1 = a1

b1 , R2 = a1

b1

, R1 R2 = a1

b1 .

 

a2

b2

a1

b2

 

 

a1

b2

 

 

 

 

a2

b3

 

 

a2

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

b3

 

 

 

 

 

 

 

 

 

 

 

Определение 4. Разностью отношений со схемами R1(X) и R2(X)

называется отношение R = R1 – R2, имеющее А) схему R(X),

В) тело, составленное только из тех кортежей X:x R1, которые не принадлежат R2.

Пример:

 

 

 

 

 

 

124

 

 

 

 

 

 

A

 

B

 

A

 

B

 

A

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1 = a1

 

b1

, R2 = a1

 

b1 , R1 – R2 = a2

 

b2 .

 

a2

 

b2

 

a1

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определение 5. Пересечением отношений со схемами R1(X) и R2(X) называется отношение R = R1 R2, имеющее

А) схему R(X),

В) тело, составленное только из тех кортежей X:x R1, которые

принадлежат R2.

 

 

 

 

 

 

 

125

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

B

 

 

A

 

B

 

A

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1 = a1

 

b1

,

R2 = a1

 

b1 , R1 R2 = a1

 

b1 .

 

a2

 

b2

 

 

a1

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Это неэлементарная операция. Она представляется через операции

объединения и разности:

R1 R2 = R1 R2 – (R1 – R2) (R2 – R1 ).

Определение 6. Пусть отношения со схемами R1(X) и R2(Y) со-

вместимы по взятию расширенного прямого произведения. Расширенным

прямым произведением отношений R1 и R2

называется отношение

R =

R1 × R2, имеющее

 

 

 

 

 

 

 

 

 

 

 

 

 

А) схему R(X, Y),

 

 

 

 

 

 

 

 

 

 

 

Б) тело, образованное всеми кортежами

{X:x, Y:y} такими, что

в R1 существует кортеж X:x и в R2 существует кортеж Y:y.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

D

Е

 

A

B

C

D

 

Е

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1 = a1

b1 , R2 = a1

b1

E1

 

a1

b1

a1

b1

 

e1

 

a2

b2

a1

b2

E2 , R1 × R2 = a1

b1

a1

b2

 

e2 .

 

 

 

 

a2

b3

E3

 

a2

b2

a1

b1

 

e1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

b2

a1

b2

 

e2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

b1

a2

b3

 

e3

 

 

 

 

 

 

 

 

 

a2

b2

a2

b3

 

e3

Селекция или ограничение по условию – это унарная операция. Она

производит отношение, составленное из кортежей операнда, удовлетво-

126

ряющих заданному условию. Это можно представить себе как вычеркива-

ние ненужных строк таблицы.

Определение 7. Пусть R – отношение со схемой R1(X) и F(X)

предикат, определенный на атрибутах схемы. Селекцией отношения R по

условию F называется отношение RF = σF (R) имеющее

 

 

 

 

 

А) схему RF(X),

 

 

 

 

 

 

 

 

 

В) тело, составленное из всех кортежей X:x

R, на которых

F(x) = .TRUE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примеры:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

 

 

 

 

 

A

B

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

b

c

A

B

C

 

d

g

f

 

 

 

 

 

 

 

 

 

 

 

 

 

b

b

c

a

B

c , σA=d C=c(R) =

 

d

b

f .

R = d

g

f , σB=b (R) =

b

B

c

 

a

b

c

 

d

b

f

d

B

f

 

b

b

c

 

e

a

h

 

 

 

 

 

b

c

c

 

 

 

 

 

 

 

b

c

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проекция. Это также унарная операция. Она преобразует не только тело, но и схему отношения. Её можно представить себе как вычеркивание столбцов таблицы.

Определение 8. Пусть R – отношение со схемой R(X, Y). Проек-

цией отношения R на X называется отношение Rπ = πx(R), имеющее А) схему Rπ(X),

Б) тело, составленное из всех подкортежей X:x, для которых суще-

ствуют подкортежи Y:y такие, что { X:x, Y:y} R.

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

D

E

F

 

A

C

F

 

 

 

 

 

 

 

 

 

 

 

 

a

b

c

d

e

f

 

a

c

f

 

 

 

 

 

 

 

 

 

 

 

127

 

 

 

 

 

 

 

 

 

 

 

R = a

b

c

f

g

h , πA,C,F(R) =

a

c

h .

d

b

d

d

g

h

d

d

h

a

c

c

f

g

H

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Соединение по условию. Эта операция применяется к отношениям,

совместимым по взятию расширенного прямого произведения. Она не яв-

ляется элементарной, однако, включается в базовый набор операций, по-

скольку очень часто встречается в практических процедурах манипулиро-

вания данными.

Определение 9. Пусть отношения со схемами R1(X) и R2(Y) со-

вместимы по взятию расширенного прямого произведения, а F(X, Y)

предикат, определенный на их атрибутах. Соединением отношений R1 и

R2 по условию F называется отношение R = R1

R2, имеющее

 

 

 

 

 

 

 

 

F

 

 

 

 

А) схему R(X, Y),

 

 

 

 

 

Б) тело, составленное из таких кортежей {X:x, Y:y}, что X:x

R1, Y:y R2 и F(X, Y) = .TRUE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нетрудно убедиться в том, что

 

 

 

 

 

R1 R2 = σF(R1 R2)3.

 

 

 

 

 

 

F

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

D

A

B

C

D

 

 

 

 

 

 

 

 

 

 

 

 

R1 = a1

b1 , R2 = A1

b1 , R1 R2 = a1

b1

a1

b1 .

 

 

 

 

 

 

A=a2 D=B

 

 

 

 

 

 

a2

b2

A1

b2

a2

b2

a1

b1

 

 

 

 

 

 

 

 

a2

b2

a1

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Важным частным случаем является операция соединения по условию

равенства значений атрибутов операндов – эквисоединение. В этом случае предикат F(X, Y) является конъюнкцией сравнений вида Xi = Yj, где

Xi и Yj – атрибуты схем R1(X) и R2(Y), соответственно. Операция имеет

3 Реально соединение по условию не выполняется как селекция расширенного прямого произведения. Это очень накладно, мощности прямых произведений в реальных БД очень велики.

128

смысл только для сравнимых, т.е. определенных на общем домене, атрибу-

тов.

Естественное соединение. Это наиболее важный для практики вид

соединения. Эта операция применяется к отношениям, схемы которых имеют одноименные атрибуты, определенные на общем домене, т.е. к от-

ношениям с пересекающимися схемами.

Определение 10. Пусть R1 и R2 – отношения со схемами R1(X, Y)

и R2(Y, Z). Естественным соединением этих отношений называется отношение R = R1 R2, имеющее

А) схему R(X, Y, Z),

Б) тело, образованное всеми кортежами {X:x, Y:y, Z:z} таки-

ми, что в R1 существует кортеж {X:x, Y:y} и в R2 – кортеж {Y:y,

Z:z}.

Пример 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

D

 

E

 

A

 

B

 

C

 

D

 

E

 

 

А

В

 

С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

b

 

c

b

 

c

 

d

 

a

 

b

 

c

 

c

 

d

R1 = d

e

 

c , R2 = b

 

c

 

e , R = R1 R2 =

 

a

 

b

 

c

 

c

 

e .

 

 

b

b

 

f

a

 

d

 

b

 

b

 

b

 

f

 

c

 

d

 

 

c

a

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

b

 

f

 

c

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

a

 

d

 

d

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

C

 

E

 

A

 

B

 

C

 

E

 

 

А

В

С

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

b

c

 

b

 

c

 

d

 

a

 

b

 

c

 

d

R1 = d

e

c , R2 = b

 

c

 

e , R = R1 R2 = a

 

b

 

c

 

e

 

 

b

b

f

 

a

 

d

 

b

 

c

 

a

 

d

 

b

 

 

c

a

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определение 11. Пусть X и Y – подмножества атрибутов, R1 и R2

- отношения со схемами R1(X, Y), R2 (Y). Реляционным частным

 

 

 

 

 

 

 

129

 

 

 

 

 

называется отношение

R, имеющее

 

 

 

 

 

 

 

 

 

 

А) схему R(X),

 

 

 

 

 

 

 

 

 

Б) тело, составленное из всех таких кортежей {X:x}, что {X:x,

 

Y:y} R1 для каждого {Y:y} R2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ a

b

c

d

 

 

 

 

 

 

 

 

 

+ a

b

e

f

 

 

 

A

 

B

 

 

С

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1 = b

c

e

f , R2 = C

d , R1 R2 =

a

 

b .

 

+ e

d

c

d

 

E

f

e

 

d

 

 

a

b

d

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ e

d

e

f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь символом ‘+’ помечены кортежи R1, подкортежи которых вой-

дут в реляционное частное.

Это неэлементарная операция. Она выражается через операции про-

екции, прямого произведения и разности.

Переименование атрибутов. Эта операция вводится в состав опе-

раций РА для разрешения конфликтов имен в бинарных операциях. В ре-

альных манипуляциях реляционными данными нередко возникает необхо-

димость вычислить соединение по условию отношений с пересекающими-

ся схемами или построить объединение отношений с “почти совпадающи-

ми” схемами, отличающимися только именами атрибутов и т.п.

Эта операция сохраняет тело отношения, изменяя лишь имена ука-

занных атрибутов:

ρА →С (R (A, B)) = R (C, B).

130

6.2.2 Синтаксис реляционных выражений

Определим теперь синтаксис для операций РА, который будем ис-

пользовать в дальнейшем4. Основной синтаксической единицей является

выражение РА, производящее отношение. Любое выражение является бе-

зымянным производным отношением.

выражение ::= унарное-выражение | бинарное-выражение;

унарное-выражение ::= переименование | выборка | проекция;

переименование ::= терм RENAME атрибут AS атрибут;

терм ::= отношение | (выражение);

выборка ::= терм WHERE предикат;

предикат ::= сравнение | предикат AND предикат |

предикат OR предикат | NOT предикат5;

сравнение ::= символ θ символ;

символ ::= атрибут | константа;

θ ::= < | > | =;

Проекция ::= терм | терм [список];

Бинарное-выражение ::= проекция бинарная-операция выражение;

Бинарная-операция ::= UNION | INTERSECT | MINUS | TIMES | JOIN | DIVIDEBY;

Здесь атрибут – идентификатор, список – список разделенных за-

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

Примеры.

 

Унарные выражения.

 

S RENAME S# AS Snum;

переименование S# в Snum

S;

проекция S на все атрибуты схемы.

S[S#, Ci];

проекция S на атрибуты {S#, Ci}.

S WHERE Ci = ‘Томск

выборка по условию Ci = ‘Томск

Бинарные выражения.

 

4 Его не следует рассматривать как язык конечного пользователя. Это просто основа для обсуждения реляционных операторов.

5 В предикатах могут использоваться круглые скобки, если необходимо явно указать порядок вычисления.