Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретические основы реляционных баз данных. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
936 Кб
Скачать

- 70 -

A=a(r s) = A=a(r) A=a(s).

3.2.3. Оператор проекции

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

Пусть имеется отношение r со схемой R, атрибут X R, тогда результатом выполнения оператора проекции, который

обозначается как X(r), будет отношение со схемой X, в которое войдут кортежи t(X) из r.

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

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

r = {ИМЯ,ГРУППА}(студенты), тогда получим следующий результат:

r(

ИМЯ

ГРУППА

)

 

 

 

 

 

Андрей

342

 

 

Лия

349

 

 

Сергей

345

 

 

Сергей

342

 

 

Тамара

342

 

 

Максим

344

 

Легко можно заметить, что сократилось не только число столбцов, но и кортежей. Оператор проекции, как и выбора, обладает рядом свойств, которые мы и рассмотрим ниже.

Если последовательно

выполняются две проекции X( Y(r)) и

X — подмножество Y, то

вторая проекция поглощает первую и

справедливо следующее равенство: X( Y(r)) = X(r).

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

- 71 -

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

X( A=a(r)) = A=a( X(r)).

3.2.4. Оператор соединения

Третьим оператором, который можно с уверенностью отнести к основной группе операторов реляционной алгебры, является оператор соединения, который в отличие от двух предыдущих операторов является бинарным и служит для комбинирования двух отношений. В общем случае оператор не требует каких-то ограничений на схемы участвующих в соединении отношений, другими словами, можно соединять отношения r(R) и s(S) с любыми схемами R и S, которые могут иметь, а могут и не иметь общих атрибутов.

Пусть имеются два отношения r(R) и s(S), тогда результатом их соединения будет отношение q(RS) = r(R) s(S), где кортежи t(RS) с одинаковыми R S-значениями формируются как комбинации кортежей tr r и ts s с одинаковыми R S- значениями.

Таким образом, при отсутствии одинаковых атрибутов в схемах отношений r и s условие соединения будет выполняться всегда и результатом соединения окажется декартово произведение двух отношений q = r s. Использование такой операции не только лишено всякого смысла, но и приводит к формированию отношения, количество кортежей в котором равно произведению количества кортежей в первом отношении на количество кортежей во втором отношении. К сожалению, это не только чисто математический казус, но и суровая практика работы с системами управления базами данных, когда формирование запроса по двум не связанным таблицам может привести к бесцельной потере времени на получение результирующей таблицы, размер которой в несколько раз превышает свободное дисковое пространство.

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

1. R S=K — отношения соединяются по первичным ключам, естественно, не имеющим дублей как в первом, так и во втором отношениях. С точки зрения реляционной алгебры такая операция лишена смысла, поскольку в процессе синтеза такая структура не должна быть создана и вместо двух отношений в схеме должно

- 72 -

присутствовать только одно. Однако ряд СУБД имеют ограничения на количество столбцов в таблице, что приводит к невозможности размещения в базе данных таблиц с большим количеством столбцов. Единственным здравым решением проблемы и является принудительное разбиение таблицы на несколько таблиц, связанных посредством основного ключа. При этом появляется некоторая избыточность за счет дублирования значений ключевого атрибута в нескольких таблицах, но это плата за расхождение теории и практики реляционных баз данных. В приведенном случае количество кортежей в исходных отношениях и в результирующем должны быть равны.

2.R S=K для одного отношения и R S K для другого отношения. В подобном случае реализуется связь между отношениями «один ко многим», когда таблицы связаны таким образом, что общий атрибут для одного отношения является ключом, а для другого — нет. Данный случай является наиболее часто используемым на практике.

3.R S K для обоих отношений. Дубли могут

встречаться как в первом, так и во втором отношениях. Случай характеризует наличие связи «многие ко многим». На практике такое случается при наличии сложных отношений между данными. При использовании подобных связей надо соблюдать максимальную осторожность.

Рассмотрим пример для второго случая, когда кроме отношения студенты у нас имеется отношение группы, дающее информацию о принадлежности группы к определенному факультету.

группы( ГРУППА ФАКУЛЬТЕТ )

340ФВТ

341ФВТ

344ФВТ

345ФВТ

349

ФВТ

310

РТФ

320

ФЭ

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

студенты (

ФАМИЛИЯ

ИМЯ

ГРУППА

БАЛЛ

ПОЛ

ФАКУЛЬТЕТ )

 

 

 

 

 

 

 

 

 

Балашов

Андрей

342

5.00

М

ФВТ

 

Катеринченко

Андрей

342

4.59

М

ФВТ

 

Колычева

Лия

349

4.38

Ж

ФВТ

 

Малин

Сергей

345

4.87

М

ФВТ

- 73 -

Никулкин

Сергей

342

4.79

М

ФВТ

Фахрудинова

Тамара

342

4.12

Ж

ФВТ

Чертков

Максим

344

4.31

М

ФВТ

В качестве информации к размышлению заметим, что в отношении группы может храниться информация о группах, относящихся к факультетам, на которых не учатся студенты из отношения студенты. С другой стороны, даже невооруженным глазом видно, что информация о принадлежности определенной группы к факультету явно избыточна, поскольку мы в четырех кортежах располагаем данными о том, что группа 342 относится к ФВТ.

Операция соединения обладает одним интересным свойством, которое позволяет использовать его как замену оператора выбораA=a(r). Для этого следует воспользоваться отношением s с единственным атрибутом A и единственным кортежем t = t(A) = {a}. Тогда операция соединения r s будет эквивалентна выбору A=a(r).

Так для получения на основе отношения студенты отношения, содержащего информацию только о студентах, обучающихся в группе 342, исходное отношение следует соединить с отношением выбор(ГРУППА) с единственным кортежем t = {342}, тогда результат будет выглядеть следующим образом:

Студенты выбор = r

r (

ФАМИЛИЯ

ИМЯ

ГРУППА

БАЛЛ

ПОЛ )

 

 

 

 

 

 

 

 

Балашов

Андрей

342

5.00

М

 

Катеринченко

Андрей

342

4.59

М

 

Никулкин

Сергей

342

4.79

М

 

Фахрудинова

Тамара

342

4.12

Ж

3.2.5. Другие операции на отношениях

В реляционной алгебре кроме рассмотренных операторов выбора, проекции и соединения имеется еще ряд операторов, которые, с одной стороны, выполняют более сложные функции, а с другой — реже используются. Рассмотрим их конспективно, не вдаваясь в подробности.

3.2.6. Оператор деления

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

оценки (

ФАМИЛИЯ

ИМЯ

ПРЕДМЕТ

ОЦЕНКА )

 

 

 

 

 

 

 

Балашов

Андрей

Физика

5

 

 

Балашов

Андрей

Математика

5

 

 

Балашов

Андрей

История

5

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]