Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование баз данных.doc
Скачиваний:
9
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать

Реляционные операции над отношениями.

В реляционной алгебре определен ряд операций над множествами. Вслед за [3] познакомимся с теми из них, которые имеют интерес с точки зрения обработки данных. В качестве примеров будем использовать модельные отношения, не оговаривая точно значение их атрибутов; будем считать, что одноименные атрибуты принадлежат к одному домену.

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

  • Из отношения удаляются все атрибуты, кроме перечисленных заранее.

  • Из полученной совокупности кортежей удаляются повторяющиеся.

Пусть задано следующее отношение :

A1

B1

C1

1

A

122

2

F

44

3

A

122

4

D

56

Требуется получить проекцию, состоящую из полей B1 и C1. В результате мы получим :

B1

C1

A

122

F

44

D

56

Проекцию отношения , содержащую атрибуты А,В,С … будем обозначать как proj А,В,С,… ().

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

Для предыдущего примера построим выборку по условию С1<100.

A1

B1

C1

2

F

44

4

D

56

Соединение (join). В реляционной алгебре определен целый ряд операций соединения. Здесь будет рассмотрена лишь одна разновидность, именуемая естественным соединением. В дальнейшем же под соединением таблиц будем понимать именно этот вид операции.

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

Рассмотрим два отношения:

A1

A2

A2

B1

A

3

3

AA

D

3

4

RR

T

4

7

GG

W

6

Эти отношения имеют общий атрибут – А2. После соединения получаем :

A1

A2

B1

A

3

AA

D

3

AA

T

4

RR

В дальнейшем операцию соединения двух отношений , и полученное в результате этой операции отношение будем обозначать :

= join ,

предполагая, что общий атрибут ясен из состава атрибутов и 1

Объединение (union). В этой операции, как и предыдущей, участвуют два отношения. В результате создается новое отношение, которое представляет собой результат объединения множеств кортежей двух отношений. Иными словами, записи одной таблицы дополняются теми записями другой, которые отсутствуют в первой. Объединение отношений применимо только если оба они имеют одинаковый набор атрибутов (в терминах таблиц – «таблицы имеют одинаковую структуру»). Следует отметить, что из того, что атрибуты имеют одинаковый тип данных и длину вовсе не следует, что они определены на одном домене и являются «общим полем», как в предыдущем случае.

Рассмотрим два отношения.

A1

B1

C1

1

A

122

2

F

44

3

A

122

4

D

56

и

A1

B1

C1

1

A

122

12

Q

45

13

W

122

4

D

56

Результат объединения :

A1

B1

C1

1

A

122

2

F

44

3

A

122

12

Q

45

13

W

122

4

D

56

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

Пересечением двух отношений из предыдущего примера будет следующее отношение :

A1

B1

C1

1

A

122

4

D

56

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

№ зачетки

ФИО

Курс

Оценка

4567

Петров Ю.В.

математика

3

4567

Петров Ю.В.

экономика

4

4568

Сидоров Е.П.

математика

5

4568

Сидоров Е.П.

экономика

4

Один из вариантов разложения этой таблицы на проекции:

№ зачетки

ФИО

Курс

4567

Петров Ю.В.

Математика

4567

Петров Ю.В.

Экономика

4568

Сидоров Е.П.

Математика

4568

Сидоров Е.П.

Экономика

Курс

Оценка

Математика

3

Экономика

4

Математика

5

Эти отношения содержат общее поле Курс. Однако, объединение отношений не приведет к исходному.

№ зачетки

ФИО

Курс

Оценка

4567

Петров Ю.В.

Математика

3

4567

Петров Ю.В.

Экономика

4

4567

Петров Ю.В.

Математика

5

4568

Сидоров Е.П.

Математика

5

4568

Сидоров Е.П.

Математика

3

4568

Сидоров Е.П.

Экономика

4

Как видим, восстановленная таблица не соответствует исходной. Произошла потеря информации, что для реальных задач является совершенно недопустимым.

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

№ зачетки

ФИО

4567

Петров Ю.В.

4568

Сидоров Е.П.

№ зачетки

Курс

Оценка

4567

математика

3

4567

экономика

4

4568

математика

5

4568

экономика

4

В этом случае общим атрибутом является «№ зачетки».

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

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

  1. Создание методов анализа, позволяющих определить, образует ли данная совокупность проекций полную декомпозицию отношения.

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

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