Главная » Информационные системы » Управление данными » 11. Теоретико-множественные операции манипулирования данными

11. Теоретико-множественные операции манипулирования данными

11. Теоретико-множественные операции манипулирования данными

 В состав теоретико-множественных операций входят операции: объединения отношений; пересечения отношений; взятия разности отношений; прямого произведения отношений
Рассматриваются специальные операции над отношениями: выборка, проекция, декартово произведение, соединение. Приводятся различные типы соединений: соединение по эквивалентности, естественное, внешнее соединение, полусоединение. Операции над отношениями иллюстрируются на примерах оператора SELECT. Рассматриваются примеры выбора данных из нескольких таблиц. Приводится объединение результатов нескольких запросов.   

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

Для иллюстрации теоретико-множественных операций над отношениями введем абстрактные отношения (таблицы) с некоторыми атрибутами (полями).

Отношение R
R.a1 R.a2
A 1
A 2
B 1
B 3
B 4
CREATE TABLE R
(a1 CHAR(1), a2 INT, PRIMARY KEY(a1,a2))
Отношение S
S.b1 S.b2
1 h
2 g
3 h
CREATE TABLE S
(b1 INT PRIMARY KEY, b2 CHAR(1))

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

Операция выборки

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

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

σF(R) или σпредикат(R).

Пример 5.1. Операция выборки в SQL.

Выборка σ(a2=1)( R )={(a, 1), (b, 1)} записывается следующим образом:

SELECT a1, a2
FROM R
WHERE a2=1
Пример 5.1. Операция выборки в SQL.

Операция проекции

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

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

Πa1, a2,... an( R )

Пример 5.2. Операция проекции в SQL.

Проекция Πb2(S)={(h), (g)) записывается следующим образом:

SELECT b2
FROM S
Пример 5.2. Операция проекции в SQL.

К основным операциям над отношениями относится декартово произведение.

Декартово произведение

Декартово произведение RxS двух отношений (двух таблиц) определяет новое отношение - результат конкатенации (т.е. сцепления) каждого кортежа (каждой записи) из отношения R с каждым кортежем (каждой записью) из отношенияS.

RxS={(a, 1, 1, h), (a, 2, 1, h), 
(b, 1, 1, h), ... }
SELECT R.a1, R.a2, S.b1, S.b2
FROM R, S
Пример 5.1. Декартово произведение отношений в SQL.

Результат декартова произведения двух отношений показан в таблице.

Таблица 5.1.
R x S
R.a1 R.a2 S.b1 S.b2
a 1 1 h
a 1 2 g
a 1 3 h
a 2 1 h
a 2 2 g
a 2 3 h
b 1 1 h
b 1 2 g
b 1 3 h
b 3 1 h
b 3 2 g
b 3 3 h
b 4 1 h
b 4 2 g
b 4 3 h

Если одно отношение имеет N записей и K полей, а другое M записей и L полей, то отношение с их декартовым произведением будет содержать NxM записей и K+L полей. Исходные отношения могут содержать поля с одинаковыми именами, тогда имена полей будут содержать названия таблиц в виде префиксов для обеспечения уникальности имен полей в отношении, полученном как результат выполнения декартова произведения.

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

Операция соединения по двум отношениям (таблицам)

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

В языке SQL для задания типа соединения таблиц в логический набор записей, из которого будет выбираться необходимая информация, используется операция JOIN в предложении FROM.

Формат операции:

FROM имя_таблицы_1 {INNER | LEFT | RIGHT} 
JOIN имя_таблицы_2
ON условие_соединения

Существуют различные типы операций соединения:

  • тета-соединение Rstyle=border-width:style=border-width: FS;
  • соединение по эквивалентности Rstyle=border-width:style=border-width:=S;
  • естественное соединение Rstyle=border-width:style=border-width:S;
  • внешнее соединение Rstyle=border-width:style=border-width:S; Rstyle=border-width:style=border-width:S;
  • полусоединение Rstyle=border-width:FS.

Операция тета-соединения

Операция тета-соединения Rstyle=border-width:style=border-width:FS определяет отношение, которое содержит кортежи из декартова произведенияотношений R и S, удовлетворяющие предикату F. Предикат F имеет вид R.ai Θ S.bj, где вместо Θ может быть указан один из операторов сравнения (>, >=, <, <=, =, <>).

Если предикат F содержит только оператор равенства (=), то соединение называется соединением по эквивалентности.

Таблица 5.2.
Rstyle=border-width:style=border-width:FS, F=(R.a2=S.b1)
R.a1 R.a2 S.b1 S.b2
a 1 1 h
a 2 2 g
b 3 3 h
b 1 1 h

Операция тета-соединения в языке SQL называется INNER JOIN (внутреннее соединение) и используется, когда нужно включить все строки из обеих та


Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.

Поделиться

Дисциплины