Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование ИС 2011.doc
Скачиваний:
72
Добавлен:
11.03.2015
Размер:
356.86 Кб
Скачать

30. Реляционная алгебра. Теоретико-множественные операции

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

  • объединения отношений;

  • пересечения отношений;

  • взятия разности отношений;

  • прямого произведения отношений.

Специальные реляционные операции включают:

  • ограничение отношения;

  • проекцию отношения;

  • соединение отношений;

  • деление отношений.

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

  • Присвоение.

  • Объединение.

  • Пересечение.

  • Разность.

  • Произведение.

  • Выбор.

  • Создание проекции.

  • Соединение.

  • Деление.

Объединение– это операция реляционной алгебры, создающая теоретико-множественное объединение двух объединительно совместимых реляционных таблиц (U / UNION) ·При выполнении операции объединения двух отношений производится отношение, включающее все те кортежи, которые входят хотя бы в одно из отношений-операндов: {<отношение1> UNION < отношение2>} После преобразования получим следующий запрос SQL: SELECT <список атрибутов> FROM < отношение1> UNION SELECT < список атрибутов > FROM < отношение2> Отметим, что почти все операции (кроме нескольких специальных) выполняются для атрибутов с одинаковыми именами и определённых на одном и том же домене.Объединительно совместимые таблицы– это таблицы, у которых совпадают количество столбцов и области значений этих столбцов.

А

 

В

Параметр 1

Параметр 2

 

Параметр 1

Параметр 2

А1, А4

В1, В2

 

А1, А5

В1, В3

АU В

Параметр 1

Параметр 2

А1, А4, А5

В1,В2, В3

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

Операция пересечения– это операция реляционной алгебры, создающая теоретико-множественное пересечение двух объединительно совместимых реляционных таблиц (? / INTERSECT).Результат пересечения: это реляционная таблица, содержащая строки, которые совпадают у таблиц. · Операция пересечения двух отношений производит отношение, включающее все те кортежи, которые являются общими для обоих отношений-операндов: {<отношение1> INTERSECT <отношение2>} После преобразования получим: SELECT DISTINCT <список атрибутов> FROM <отношение1> WHERE EXISTS (SELECT * FROM <отношение2> WHERE <отношение1>.<атрибут1> = <отношение2>.<атрибут1> AND <отношение1>.<атрибут2> = <отношение2>.<атрибут2> AND… )

Операция разности– это операция реляционной алгебры, создающая теоретико-множественную разность двух объединительно совместимых реляционных таблиц (- / DIFFEFENCE).Результат разности: реляционная таблица, содержащая все строки входящие в первую таблицу, но не входящие во вторую исходную таблицу. · Отношение, являющееся разностью двух отношений, включает все кортежи, входящие в отношение, являющееся первым операндом, такие, что ни один из них не входит в отношение, являющееся вторым операндом:  {<отношение1> MINUS <отношение2>} После преобразования получим: SELECT DISTINCT <список атрибутов> FROM <отношение1> WHERE NOT EXISTS (SELECT * FROM <отношение2> WHERE <отношение1>.<атрибут1> = <отношение2>.<атрибут1> AND <отношение1>.<атрибут2> = <отношение2>.<атрибут2> AND … )

Операция произведения– это операция реляционной алгебры, создающая декартово произведение двух объединительно совместимых реляционных таблиц (* / Product). С:=А*В

A.X

A.Y

B.X

B.Y

А1

В1

А1

В1

А1

В1

А5

В3

А1

В1

А6

В6

А1

В1

А3

В3

А2

В2

А1

В1

А2

В2

А5

В5

Результат произведения: реляционная таблица, полученная при связывании таблиц и при присоединении каждой строке первой таблицы каждой строки второй таблицы. Если в исходных таблицах существуют атрибуты с одинаковыми именами, то имя атрибута новой таблицы образуется из имени исходной таблицы с указанием через точку имени поля. · Прямое (декартово) произведение двух отношений есть отношение, кортежи которого являются конкатенацией (сцеплением) кортежей первого и второго операндов:  {<отношение1> TIMES <отношение2>} Эквивалентный запрос SQL имеет вид:  SELECT DISTINCT <список атрибутов> FROM <отношение1>, <отношение2>.