Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Управление данными (пособие).pdf
Скачиваний:
280
Добавлен:
21.05.2015
Размер:
5.42 Mб
Скачать

56

приводит к получению какой-либо новой информации. Это хорошо видно из приведенного примера. Более того, на практике она чаще всего встречается в случае неправильно составленных запросов, приводя к «взрывному» увеличению размеров выходного отношения, и, соответственно времени выполнения запроса и потребляемых ресурсов компьютера. Тем не менее, декартово произведение имеет важное концептуальное значение при рассмотрении других составных реляционных операторов, в частности операторов соединения отношений (см. ниже).

Приведенные выше операции реляционной алгебры являются реляционными расширениями традиционных операций над множествами. Ниже мы рассмотрим операции являющиеся специфическими именно для реляционной алгебры.

Проекция

Проекцией отношения R по атрибутам X,Y,…,Z, обозначается R[X,Y,…,Z], где каждый из указанных атрибутов принадлежит отношению R, называется отношение с заголовком {X,Y,…,Z} и телом, содержащим множество всех кортежей {<X:x>,<Y:y>,…,<Z:z>}, таких, для которых в отношении R значение атрибута Х равно х, атрибута Y равно y, …, атрибута Z равно z.

Спомощью оператора проекции получается

«вертикальное» подмножество атрибутов отношения R, с последующим исключением дублирующих кортежей (если они возникают).

Выборка (ограничение)

Пусть задано отношение R[A], где А множество его атрибутов. Пусть также F(A) это логическая формула (предикат) принимающая значение истина или ложь, образованная операндами, представляющими собой имена атрибутов отношений R или литералы, а также скалярными операторами сравнения (=, ≠, >, <, ≥, ≤) и логическими операторами Λ(И), V(ИЛИ), ¬(НЕ).

Выборкой из отношения R[A], т.е. RESTRICT R[A] WHERE F(A), называется отношение, заголовок которого совпадает с заголовком отношения R, а тело содержит множество кортежей, являющихся подмножеством множества кортежей отношения R,

для которых формула F(A) принимает значение истина.

Таким образом, операция выборки (ограничения) выбирает

57

горизонтальное подмножество входного отношения.

Пример

Пусть R это отношение

R

КОД

ИМЯ

ФАКУЛЬТЕТ

КУРС

С2

Иванов

Физический

1

С5

Петрова

Химический

2

С9

Полякова

Исторический

3

С4

Сидоров

Физический

2

Тогда отношение, полученное с помощью оператора

RESTRICT R WHERE КУРС=2, будет иметь вид

RESTRICT R WHERE КУРС=2

КОД

ИМЯ

ФАКУЛЬТЕТ

КУРС

С5

Петрова

Химический

2

С4

Сидоров

Физический

2

θ-соединение отношений

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

естественного соединения отношений, эта операция введена в число основных операций реляционной алгебры.

Пусть отношения R1 и R2 не имеют атрибутов с одинаковыми именами, а символ θ обозначает один из операторов сравнения: =, ≠, >,<, ≥, ≤, тогда θ-соединением отношения R1 по атрибуту Х с отношением R2 по атрибуту Y является отношение, совпадающее с декартовым произведением отношений R1 и R2, для кортежей которого выражение условия XθY принимает значение

истина.

Другими словами θ-соединение это

(R1 TIMES R2) WHERE X θ Y

Очевидно, что сравниваемые атрибуты X и Y должны быть определены на общем домене, для того, чтобы операция сравнения имела смысл.

Пример.

Пусть даны два отношения: СТУДЕНТЫ и ПРЕПОДАВАТЕЛИ. Причем в обоих отношениях атрибуты ГОРОД_СТУД и ГОРОД_ПРЕПОД определены на одинаковых доменах, представляющих собой список городов.

58

СТУДЕНТЫ ПРЕПОДАВАТЕЛИ

ИМЯ_СТУД

ГОРОД_СТУД

Иванов

Воронеж

Петрова

Липецк

Сидоров

Воронеж

Орлов

Орел

Кузнецов

Воронеж

ИМЯ_ПРЕПОД

ГОРОД_ПРЕПОД

Жуков

Воронеж

Соболев

Липецк

Ковалев

Воронеж

Лыков

Воронеж

Тогда θ-соединением этих отношений по условию ГОРОД_СТУД ГОРОД_ПРЕПОД будет следующее отношение.

(СТУДЕНТЫ TIMES ПРЕПОДАВАТЕЛИ) WHERE ГОРОД_СТУДГОРОД_ПРЕПОД

ИМЯ_СТУД

ГОРОД_СТУД

ГОРОД_ПРЕПОД

ИМЯ_ПРЕПОД

Иванов

Воронеж

Липецк

Соболев

Петрова

Липецк

Воронеж

Жуков

Петрова

Липецк

Воронеж

Ковалев

Петрова

Липецк

Воронеж

Лыков

Сидоров

Воронеж

Липецк

Соболев

Орлов

Орел

Воронеж

Жуков

Орлов

Орел

Липецк

Соболев

Орлов

Орел

Воронеж

Ковалев

Орлов

Орел

Воронеж

Лыков

Кузнецов

Воронеж

Липецк

Соболев

Естественное соединение отношений

Операция естественного соединения, называемая ещё эквисоединением,

является частным случаем θ-соединения, когда оператор сравнения θ является оператором равенства (=).

Пусть отношения R1 и R2 имеют заголовки {X1,X2,…,Xm,Y1,Y2,…,Yn} и {Y1,Y2,…,Ym,Z1,Z2,…,Zk}. В более краткой записи {X,Y} – множество атрибутов отношения R1, а {Y,Z} – множество атрибутов отношения R2.

Здесь набор Y – {Y1,Y2,…,Yn} обозначает множество атрибутов, являющихся общими для обоих отношений, т.е. в данном случае совпадают, как имена, так и домены соответствующих атрибутов.

Тогда, естественным соединением отношений R1 и R2 (R1 JOIN R2) по атрибуту Y (возможно составному) является отношение с заголовком {X,Y,Z} и телом, содержащим множество всех кортежей {<X:x>, <Y:y>, <Z:z>}, таких, для которых в отношении R1 значение атрибута Х равно х, а для атрибута Y равно y, и в отношении R2 значение атрибута Y равно y, а атрибута Z равно z.

59

Пример

Если в качестве входных отношений взять несколько измененные отношения СТУДЕНТЫ и ПРЕПОДАВАТЕЛИ из предыдущего примера,

СТУДЕНТЫ

ИМЯ_СТУД

ГОРОД

Иванов

Воронеж

Петрова

Липецк

Сидоров

Воронеж

Орлов

Орел

Кузнецов

Воронеж

ПРЕПОДАВАТЕЛИ

ГОРОД

ИМЯ_ПРЕПОД

Жуков

Воронеж

Соболев

Липецк

Ковалев

Воронеж

Лыков

Воронеж

то отношением, представляющим собой их естественное соединение по атрибуту ГОРОД, то есть (СТУДЕНТЫ JOIN ПРЕПОДАВАТЕЛИ), будет отношение

(СТУДЕНТЫ JOIN ПРЕПОДАВАТЕЛИ)

ИМЯ_СТУД

ГОРОД

ИМЯ_ПРЕПОД

Иванов

Воронеж

Жуков

Иванов

Воронеж

Ковалев

Иванов

Воронеж

Лыков

Петрова

Липецк

Соболев

Сидоров

Воронеж

Жуков

Сидоров

Воронеж

Ковалев

Сидоров

Воронеж

Лыков

Кузнецов

Воронеж

Жуков

Кузнецов

Воронеж

Ковалев

Кузнецов

Воронеж

Лыков

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

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