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

1.3.4 Специальные бинарные операции

К специальным бинарным операциям относятся со­единение и деление.

Операция соединенияимеет две разновидности:

  • естественное соединение (или соединение);

  • θ–соединение (эквисоединение, соединение по условию, условное соедине­ние).

Рассмотрим операцию соединения.

Пусть имеются две таблицы

тА{X1,X2,…,Xm,Y1,Y2,…,Yn}

тВ{Y1,Y2,…,Yn, Z1, Z2,…, Zk}.

Считаем, что поля { Y1,Y2,…,Yn} являются общими для двух таблиц и они определены на одинаковых доменах.

Соединением таблиц А и В называется таблица с полями {X,Y,Z} и телом, содержащим множество всех записей {X:x,Y:y,Z:z}, таких, для которых в таблице А значение поля Х равно х, а поля Y равно y, а в таблице В значение атрибута Y равно y, а поля Z равно z (рис.1.7).

А J В

Рисунок 1.7 – Операция соединения

тJ :=тA JOIN тB

В данной операции тА{X,Y}, тВ{Y, Z}, тJ{X,Y,Z}.

При этой операции происходит конкатенация записей исходных таблиц и исключение повторения общих полей.

Рассмотрим соединение тС2 и тО2. Таблица-результат может иметь вид

тJ := тС2 JOIN тО2

Код

Гр

Фам

Балл

Комната

1

Гр1

Андреев

4

4

Видно, что происходит склеивание заголовков и записей исходных таблиц, а также исключение повторения общих полей Код, Гр, Фам.

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

тA JOIN (тB JOIN тC) и тA JOIN тB JOIN тC;

тA JOIN тB и тB JOIN тA .

Отметим, что если у таблиц нет общих полей, то соединение превращается в произведение:

тA JOIN тB = тA TIMES тB.

Здесь проявился основной смысл включения операции произведения в состав РА: на ее основе определяется очень полезная операция соединения.

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

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

Эквисоединение таблицы тА по полю Х с таблицей тВ по полю У обозначается как

(тA TIMES тB) WHERE X θ Y.

Наиболее часто применяют больше–соединение, равно–соединение и меньше–соединение.

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

Вычислим больше–соединение таблицы тА по полю Код с таблицей тВ по этому же полю.

Сначала проведем необходимые преобразования таблиц. Переименуем поля Код, участвующие в соединении, и симметрично переименуем поля Фам. Одно­временно для сокращения за счет проекции исключим поле Гр.

тА1 = тA [Код, Фам] RENAME Код AS КодА, Фам Аs ФамА

тВ1 = тВ [Код, Фам] RENAME Код AS КодВ, Фам Аs ФамB

Таблица условного соединения

тS :=(тA1 TIMES тB1) WHERE КодА>КодВ

КодА

ФамА

КодВ

ФамВ

4

Антонов

1

Андреев

4

Антонов

2

Петров

После подстановки вместо тА1 и тВ1 их выражений для больше–соединения можно записать следующее выражение РА:

тS:=(( тА RENAME Код AS КодА, Фам Аs ФамА)

TIMES (В RENAME Код AS КодВ, Фам Аs ФамB))

WHERE КодА>КодВ

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

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

Рассмотрим операцию деления.

Пусть таблица А имеет заголовок {Х1,Х2,…,Хm,Y1,Y2,…,Yn}, а таблица В – заголовок {Y1,Y2,…,Yn}. Считаем, что поля {Y1,Y2,…,Yn} в тА и в тВ опреде­лены на одинаковых доменах.

Результатом деления таблицы–делимого тА на таблицу–делитель тB назы­вается таблица с заголовком {X} и телом, содержащим множество всех записей {X:x}, таких, что существует запись {X:х,Y:y}, которая принадлежит таблице А для всех записей {Y:y}, принадлежащих таблице В.

Нестрого это можно сформулировать так: результат содержит такие Х–зна­чения из таблицы А, для которых соответствующие Y–значения из А включают все Y–значения из таблицы В.

Операция деления в РА записывается так

тD:=тА DINEVERY тВ,

где тА {Х,Y}, тВ {Y1,Y2,…,Yn},тD{X}

Пусть тD2 содержит часть учебного плана спецподготовки, например, только дисциплины одного курса (Д1 и Д2). Разделим тТ на тD2

тD2 тС2 := тT DINEVERY тD2

Дисциплины

Код

список студентов, изучающих

все дисциплины перечня,

заданного таблицей D2.

Д1

1

Д2

4

В таблице тС2 отражены все студенты, проходящие спецподготовку, потому что все студенты изучают указанные дисциплины на указанном курсе.

Рассмотрим дополнительную операцию РА – оператор вставки. Эта би­нарная операция имеет вид

INSERT <источник><выр> INTO <получатель>.

Здесь <источник> и <получатель> – выражения, представляющие совмес­тимые по типу таблицы. Значение таблицы <источник> вычисляется по выпажению <выр> и все записи результата вставляются в таблицу <получатель>.

Например, операция

INSERT T2 WHERE Количество<3 INTO T3

позволит перенести из таблицы Т2 записи о студентах, изучивших менее трех дисциплин, в таблицу Т3.

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

Соседние файлы в папке Обработка РБД-relalg