Проекция

Проекцией отношения (А, В, С, D, Е) на атрибуты А, С, Е, где множество {А, С, Е} является подмножеством полного списка атрибутов заголовка отношения {А, В, С, D, Е}, называется отношение R с заголовком А, С, Е и телом, содержащим кортежи отношения без дублей (рис. 8).

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

Рис. 8. Операция проекции

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

Допустим, что из отношения «Сотрудники» формируется как проекция отношение «Штатное расписание».

Сотрудники (Rj)

номер

сотрудника

фамилия

должность

зарплата

номер

отдела

1001

Иванов

техник

8000

101

1001

Иванов

инженер

15000

101

1002

Петров

инженер

15000

102

1003

Смирнов

техник

8000

101

1003

Смирнов

инженер

15000

101

1004

Волков

инженер

15000

101

Штатное расписание (R)

должность

зарплата

техник

8000

инженер

15000

Селекция

Селекцией отношения Rx по формуле F называется отношение R, имеющее тот же заголовок, что и отношение Яь и тело, содержащее кортежи отношения Rb которые удовлетворяют истинности логического выражения, заданного формулой F (рис. 9).

Операция селекции

Рис. 9. Операция селекции

Операция селекция порождает результат как горизонтальную выборку, выборку строк-кортежей реляционной таблицы, удовлетворяющих заданному условию. Ввиду многообразия средств спецификации условий отбора операция селекции является одной из наиболее распространенных на практике операций над реляционными таблицами. Например, если из списка, заданного отношением-таблицей «Сотрудники» (ЯД, нужно выбрать сотрудников отдела 101, результат можно получить при помощи операции селекции по условию «номер отдела= 101».

Сотрудники отдела 101 (R)

номер

сотрудника

фамилия

должность

зарплата

номер

отдела

1001

Иванов

инженер

15000

101

1003

Смирнов

инженер

15000

101

1004

Волков

инженер

15000

101

Соединение

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

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

Наиболее общим является так называемое 0-соединение, которое формирует результат на основе сцепления кортежей отношений-операндов, чьи атрибуты связи находятся друг с другом в отношении 0

(=, >, <,

Частным случаем 0-соединения является эквисоединение или соединение на основе условия равенства атрибутов связи.

Частным случаем эквисоединения является естественное, или внутреннее, соединение. Дадим неформальное определение этой важной операции.

Естественным (внутренним) соединением отношений Яг (А, В, С) и R2 (В, С, D) называется отношение R (А, В, С, D), полученное по условию равенства (эквисоединение) общих (часто одноименных) атрибутов связи (В, С), из которого исключаются дубли атрибутов.

Атрибуты связи (В и С в данном примере), принадлежащие разным отношениям-операндам, могут иметь разные имена, но должны быть определены на совместимых доменах.

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

Результирующее отношение R состоит из кортежей, которые представляют собой сцепление только тех кортежей отношений-операндов и R2, которые содержат совпадающие значения общих атрибутов (В, С), без дублей столбцов.

Допустим в кадровой информационной системе между отношениями «Сотрудники» C-Ri) и «Дети» (В2) имеется идентифицирующая связь типа «один ко многим». Атрибуты первичных ключей подчеркнуты. Семантика связи такова, что не у всех сотрудников могут быть дети. Причем у любого сотрудника может быть более одного ребенка. Тогда список сотрудников и их детей может быть получен при помощи естественного соединения.

Сотрудники» (Rj)

номер сотрудника

фамилия

должность

номер отдела

1001

Иванов

инженер

101

1002

Петров

инженер

102

1003

Смирнов

техник

101

1004

Волков

инженер

101

1005

Белов

техник

102

1006

Кравцов

оператор

102

Дети (R2)

номер сотрудника

имя ребенка

дата рождения

1001

Иван

10.04.1998

1001

Татьяна

18.05.2004

1002

Сергей

22.01.1995

1004

Наталья

05.10.2005

Здесь атрибутами связи являются атрибуты «Сотрудники.номер сотрудника» и «Дети.номер сотрудника», а результатом является отношение «Сотрудники с детьми».

Сотрудники с детьми (R)

номер

сотрудника

фамилия

должность

номер

отдела

имя

ребенка

дата рождения

1001

Иванов

инженер

101

Иван

10.04.1998

1001

Иванов

инженер

101

Татьяна

18.05.2004

1002

Петров

инженер

102

Сергей

22.01.1995

1004

Волков

инженер

101

Наталья

05.10.2005

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

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

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

Для обозначения несовпадающих значений кортежей используется определитель Null.

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

Все сотрудники (Я,)

номер

сотрудника

фамилия

должность

номер

отдела

имя

ребенка

дата рождения

1001

Иванов

инженер

101

Иван

10.04.1998

1001

Иванов

инженер

101

Татьяна

18.05.2004

1002

Петров

инженер

102

Сергей

22.01.1995

1003

Смирнов

техник

101

Null

Null

1004

Волков

инженер

101

Наталья

05.10.2005

1005

Белов

техник

102

Null

Null

1006

Кравцов

оператор

102

Null

Null

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

Сотрудники с детьми (Я)

номер

сотрудника

фамилия

должность

номер

отдела

имя

ребенка

дата рождения

1001

Иванов

инженер

101

Иван

10.04.1998

1001

Иванов

инженер

101

Татьяна

18.05.2004

1002

Петров

инженер

102

Сергей

22.01.1995

1004

Волков

инженер

101

Наталья

05.10.2005

Результат операции правого соединения зависит от типа связи. Например, если между отношениями «Отдел» и «Сотрудники» имеется неидентифицирующая связь «один ко многим», то по определению неидентифицирующей связи в отношении-потомке «Сотрудники» допускаются кортежи, которым нет соответствия в родительском отношении «Отдел». Если в таком случае в качестве правого операнда используется отношение-потомок («Сотрудники»), то правое соединение даст полный список сотрудников, в том числе временно не приписанных ни к какому отделу (сотрудники, допустим, ликвидированного отдела 102).

Отдел (Rx)

номер отдела

название отдела

101

ОГК

Сотрудники (R2)

номер

сотрудника

фамилия

должность

номер отдела

1001

Иванов

инженер

101

1002

Петров

инженер

102

1003

Смирнов

техник

101

1004

Волков

инженер

101

1005

Белов

техник

102

1006

Кравцов

оператор

102

Все сотрудники (R)

номер

отдела

название отдела

номер

сотрудника

фамилия

должность

101

ОГК

1001

Иванов

инженер

Null

Null

1002

Петров

инженер

101

ОГК

1003

Смирнов

техник

101

ОГК

1004

Волков

инженер

Null

Null

1005

Белов

техник

Null

Null

1006

Кравцов

оператор

Деление

Делением отношений R±(A, В, С) и R2 (С) называется отношение R(A, В), тело которого содержит кортежи такие, что для всех кортежей отношения К2 найдется кортеж в отношении Rv

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

Результирующее отношение R состоит из кортежей отношения Яь определенных на множестве атрибутов (А, В), которые соответствуют комбинации всех кортежей отношения R2.

Деление отношений аналогично делению чисел с остатком.

Отношение Rг выступает в роли делимого, отношение R2 выступает в роли делителя.

Допустим отношение «Исполнитель проекта» (ЯД моделирует связь «многие ко многим» между отношениями «Сотрудники» и «Проекты» (Я2) • Между родительским отношением «Проект» и отношени- ем-потомком «Исполнитель проекта» имеется идентифицирующая зависимость. Тогда ответ на вопрос, какие сотрудники участвовали в работе над всеми проектами, даст отношение «Передовики» (Я), полученное при помощи операции деления.

Исполнитель проекта (ЯД

номер сотрудника

фамилия

номер проекта

1001

Иванов

1

1001

Иванов

2

1001

Иванов

3

1002

Петров

1

1002

Петров

3

1003

Смирнов

1

1003

Смирнов

2

1003

Смирнов

3

1004

Волков

2

Проект (Я2)

номер проекта

1

2

3

Передовики (Я)

номер сотрудника

фамилия

1001

Иванов

1003

Смирнов

SQL —

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >