Что общего между операцией произведения и соединения
Что общего между операцией произведения и соединения
Во вторую группу входят операции, применимые только к отношениям:
Рис. 1. Операции реляционной алгебры |
Нужно объединить два отношения Физ_лица и Юр_лица.
ФИО | Адр_регистрации | Факт_адр |
---|---|---|
Иванов Ю.М. | Москва, Тверская 2 | С.-Петербург,Садовая ул. 12 |
Сергеев И.А. | С.-Петербург, Седова 23 | С.-Петербург, Гороховая ул. 34 |
. | . | . |
Наим | Адр_регистрации | Адр_офиса |
---|---|---|
Альфа | Новгород, Садовая ул. 2 | С.-Петербург,Садовая ул. 42 |
Бета. | С.-Петербург, Московский пр. 23 | Гатчина, Лесная ул. 34 |
. | . | . |
Результат запроса:
ИМЯ | Адр_официальный | Фактический_адр |
---|---|---|
Иванов Ю.М. | Москва, Тверская 2 | С.-Петербург,Садовая ул. 12 |
Сергеев И.А. | С.-Петербург, Седова 23 | С.-Петербург, Гороховая ул. 34 |
Альфа | Новгород, Садовая ул. 2 | С.-Петербург,Садовая ул. 42 |
Бета. | С.-Петербург, Московский пр. 23 | Гатчина, Лесная ул. 34 |
. | . | . |
Операции объединения, пересечения и разности имеют следующие особенности:
Из отношения Жители нужно выбрать жителей, младше 30 лет
ФИО | Возраст |
---|---|
Андреев | 31 |
Иванов | 21 |
Перов | 40 |
Яковлев | 27 |
На языке SQL запрос запрос выглядит так:
Результат выборки
ФИО | Возраст |
---|---|
Андреев | 31 |
Перов | 40 |
Из отношения Жители нужно выбрать только фамилии жителей
Имя | ФИО | Возраст |
---|---|---|
Юрий | Иванов | 31 |
Сергей | Иванов | 21 |
Владимир | Перов | 40 |
Игорь | Перов | 27 |
На языке SQL запрос запрос выглядит так:
Результат выборки
ФИО |
---|
Иванов |
Перов |
Язык SQL предназначен для работы с реальными таблицами и допускает несколько одинаковых строк в таблице с результатами запроса. Для исключения одинаковых строк служит служебное слово DISTINCT
Семантически общие атрибуты описывают общие свойства соединяемых отношений. Общие атрибуты должны иметь один тип
Даны два отношения Рабочие и Инструменты
|
|
ТабНомер | ФИО | Должность | Инструмент |
---|---|---|---|
1 | Андреев | Слесарь | Штангельциркул |
1 | Андреев | Слесарь | Микрометр |
1 | Андреев | Слесарь | Линейка |
2 | Иванов | Слесарь | Штангельциркул |
2 | Иванов | Слесарь | Скоба |
Если в запросе не указать общий атрибут, то получится декартово произведение, состоящее из 4*5=20 кортежей.
При выполнении запроса SELECT, как правило, делаются несколько реляционных операций. Например, для выборки из отношения Рабочие всех кортежей со слесарями и атрибутов ФИО и Должность служит оператор
Выполнение этого запроса состоит из двух реляционных операций: выборки и проекции.
МИГКУ ИТ-51вс
Метки
Добавить страницу
Реляционная алгебра — формальная система манипулирования отношениями в реляционной модели данных. [1]
Выборка
Операция выборки — унарный оператор, записываемый как σaθb(R) или σaθv(R), где:
Выборка σaθb(R) (или σaθv(R)) выбирает все наборы значений R, для которых функция a θ b (или a θ v) будет истинна.
Пример
Пусть даны следующие соотношения:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Тогда результаты выборок будут следующими:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Имя | Возраст | Вес |
---|---|---|
Helena | 54 | 54 |
Проекция
Операция выборки — унарный оператор, записываемый как πa1,…,an(R) где a1,…,an — спиоск полей, подлежащих выборке. Результатом такой выборки будет набор последовательностей значений отношения R, в котором будут присутствовать только поля, перечисленные в списке a1,…,an с естественным уничтожением потенциально возникающих кортежей-дубликатов[4].
Пример
Пусть даны следующие соотношения:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Возраст | Вес |
---|---|
28 | 64 |
29 | 70 |
54 | 54 |
34 | 80 |
Объединение
Результатом объединения отношений A и B будет отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям.
Пример
Пусть даны следующие соотношения:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Имя | Возраст | Вес |
---|---|---|
Daffy | 24 | 19 |
Donald | 25 | 23 |
Scrooge | 81 | 27 |
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Daffy | 24 | 19 |
Donald | 25 | 23 |
Scrooge | 81 | 27 |
Пересечение
Результатом пересечения отношений A и B будет отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B.
Пример
Пусть даны следующие соотношения:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Имя | Возраст | Вес |
---|---|---|
Daffy | 24 | 19 |
George | 29 | 70 |
Donald | 25 | 23 |
Scrooge | 81 | 27 |
Sally | 28 | 64 |
Имя | Возраст | Вес |
---|---|---|
George | 29 | 70 |
Sally | 28 | 64 |
Разность
Результатом разности отношений A и B будет отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B.
Пример
Пусть даны следующие соотношения:
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Sally | 28 | 64 |
George | 29 | 70 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Имя | Возраст | Вес |
---|---|---|
Daffy | 24 | 19 |
George | 29 | 70 |
Donald | 25 | 23 |
Scrooge | 81 | 27 |
Sally | 28 | 64 |
Имя | Возраст | Вес |
---|---|---|
Harry | 34 | 80 |
Helena | 54 | 54 |
Peter | 34 | 80 |
Произведение
При выполнении прямого произведения двух отношений производится отношение, кортежи которого являются конкатенацией (сцеплением) кортежей первого и второго операндов.
Пример
Пусть даны следующие соотношения:
Код_мульта | Название_мульта |
---|---|
0 | The Simpsons |
1 | Family Guy |
2 | Duck Tales |
Код_канала | Название_канала |
---|---|
0 | СТС |
1 | 2х2 |
Код_мульта | Название_мульта | Код_канала | Название_канала |
---|---|---|---|
0 | The Simpsons | 0 | СТС |
0 | The Simpsons | 1 | 2х2 |
1 | Family Guy | 0 | СТС |
1 | Family Guy | 1 | 2х2 |
2 | Duck Tales | 0 | СТС |
2 | Duck Tales | 1 | 2х2 |
Деление
Реляционное деление достаточно нетривиально описать, но на примере его смысл нагляден. В целом, из таблицы A берутся значения строк, для которых присутствуют все комбинации значений из таблицы B. Понятно? Ну, примерно об этом я и пытался сказать, смотрим пример:
Пример
Пусть даны следующие соотношения:
Код_мульта | Название_мульта | Название_канала |
---|---|---|
0 | The Simpsons | RenTV |
0 | The Simpsons | 2х2 |
0 | The Simpsons | CTC |
1 | Family Guy | RenTV |
1 | Family Guy | 2х2 |
2 | Duck Tales | СТС |
2 | Duck Tales | 2×2 |
Тогда при делении на таблицу каналов:
Название_канала |
---|
RenTV |
2х2 |
Код_мульта | Название_мульта |
---|---|
0 | The Simpsons |
1 | Family Guy |
Family Guy и The Simpsons — мультфильмы, которые показывались и на RenTV и на 2×2 (условие во второй таблице). При этом Duck Tales не показывалось по RenTV, потому был исключён из результирующей таблицы.
Эквивалентный SQL-запрос привести затрудняюсь
Соединение
Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.[4]
Пример
Код_мульта | Название_мульта | Название_канала |
---|---|---|
0 | The Simpsons | 2х2 |
1 | Family Guy | 2х2 |
2 | Duck Tales | RenTV |
Код_канала | Частота |
---|---|
RenTV | 3,1415 |
2х2 | 783,25 |
Соединим их с выборкой σНазвание_канала = Код_канала(Произведение)
Первый этап, произведение:
Код_мульта | Название_мульта | Название_канала | Код_канала | Частота |
---|---|---|---|---|
0 | The Simpsons | 2х2 | RenTV | 3,1415 |
0 | The Simpsons | 2х2 | 2х2 | 783,25 |
1 | Family Guy | 2х2 | RenTV | 3,1415 |
1 | Family Guy | 2х2 | 2х2 | 783,25 |
2 | Duck Tales | RenTV | RenTV | 3,1415 |
2 | Duck Tales | RenTV | 2х2 | 783,25 |
Второй этап, выборка σНазвание_канала = Код_канала(Произведение):
2. Операции декартового произведения и естественного соединения
Операция декартового произведения и операция естественного соединения являются бинарными операциями типа произведения и основываются на операции объединения двух отношений, которую мы рассматривали ранее.
Хотя действие операции декартова произведения многим может показаться знакомым, начнем мы все-таки с операции естественного произведения, так как она является более общим случаем, нежели первая операция.
Итак, рассмотрим операцию естественного соединения. Следует сразу заметить, что операндами этого действия могут являться отношения с разными схемами в отличие от трех бинарных операций объединения, пересечения и переименования.
Если рассмотреть два отношения с различными схемами отношений r1(S1) и r2(S2), то их естественным соединением будет новое отношение r3(S3), которое будет состоять только из тех кортежей операндов, которые совпадают на пересечении схем отношений. Соответственно, схема нового отношения будет больше любой из схем отношений исходных, так как является их соединением, «склеиванием». Кстати, кортежи, одинаковые в двух отношениях-операндах, по которым и происходит это «склеивание», называются соединимыми.
Запишем определение операции естественного соединения на языке формул систем управления базами данных:
Рассмотрим пример, хорошо иллюстрирующий работу естественного соединения, его «склеивание». Пусть дано два отношения r1(S1) и r2(S2), в табличной форме представления соответственно равные:
Мы видим, что у этих отношений присутствуют кортежи, совпадающие при пересечении схем S1 и S2 отношений. Перечислим их:
3) кортеж
Значит, при естественном соединении новое отношение r3(S3) получается «склеиванием» именно на этих кортежах. Таким образом, r3(S3) в табличном представлении будет выглядеть следующим образом:
Получается по определению: схема S3 не совпадает ни со схемой S1, ни со схемой S2, мы «склеили» две исходные схемы по пересекающимся кортежам, чтобы получить их естественное соединение.
Покажем схематично, как происходит соединение кортежей при применении операции естественного соединения.
Пусть отношение r1 имеет условный вид:
Тогда их естественное соединение будет выглядеть следующим образом:
Видим, что «склеивание» отношений-операндов происходит по той самой схеме, что мы приводили ранее, рассматривая пример.
Операция декартового соединения является частным случаем операции естественного соединения. Если конкретнее, то, рассматривая действие операции декартового произведения на отношения, мы заведомо оговариваем, что в этом случае может идти речь только о непересекающихся схемах отношений. В результате применения обеих операций получаются отношения со схемами, равными объединению схем отношений-операндов, только в декартово произведение двух отношений попадают всевозможные пары их кортежей, так как схемы операндов ни в коем случае не должны пересекаться.
Таким образом, исходя из всего вышесказанного запишем математическую формулу для операции декартового произведения:
Теперь рассмотрим пример, чтобы показать, какой вид будет иметь результирующая схема отношения, при применении операции декартового произведения.
Пусть даны два отношения r1(S1) и r2(S2), которые в табличном виде представляются следующим образом:
Итак, мы видим, что ни один из кортежей отношений r1(S1) и r2(S2), действительно, не совпадает в их пересечении. Поэтому в результирующее отношение r4(S4) попадут всевозможные пары кортежей первого и второго отношений-операндов. Получится:
Получилась новая схема отношения r4(S4) не «склеиванием» кортежей как в предыдущем случае, а перебором всех возможных различных пар несовпадающих в пересечении исходных схем кортежей.
Снова, как и в случае естественного соединения, приведем схематичный пример работы операции декартового произведения.
Пусть r1 задано следующим условным образом:
Тогда их декартовое произведение схематично можно изобразить следующим образом:
Именно таким образом и получается результирующее отношение при применении операции декартового произведения.
Данный текст является ознакомительным фрагментом.
Что общего между операцией произведения и соединения
Третья часть реляционной модели, манипуляционная часть, утверждает, что доступ к реляционным данным осуществляется при помощи реляционной алгебры или эквивалентного ему реляционного исчисления.
В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни реляционная алгебра, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называется реляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL.
В данной главе будут рассмотрены основы реляционной алгебры.
Замкнутость реляционной алгебры
Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Таким образом, реляционный оператор выглядит как функция с отношениями в качестве аргументов:
Реляционная алгебра является замкнутой, т.к. в качестве аргументов в реляционные операторы можно подставлять другие реляционные операторы, подходящие по типу:
Таким образом, в реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.
Каждое отношение обязано иметь уникальное имя в пределах базы данных. Имя отношения, полученного в результате выполнения реляционной операции, определяется в левой части равенства. Однако можно не требовать наличия имен от отношений, полученных в результате реляционных выражений, если эти отношения подставляются в качестве аргументов в другие реляционные выражения. Такие отношения будем называть неименованными отношениями. Неименованные отношения реально не существуют в базе данных, а только вычисляются в момент вычисления значения реляционного оператора.
Традиционно, вслед за Коддом [43], определяют восемь реляционных операторов, объединенных в две группы.
Не все они являются независимыми, т.е. некоторые из этих операторов могут быть выражены через другие реляционные операторы.
Отношения, совместимые по типу
Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Действительно, отношения состоят из заголовка и тела. Операция объединения двух отношений есть просто объединение двух множеств кортежей, взятых из тел соответствующих отношений. Но будет ли результат отношением? Во-первых, если исходные отношения имеют разное количество атрибутов, то, очевидно, что множество, являющееся объединением таких разнотипных кортежей нельзя представить в виде отношения. Во-вторых, пусть даже отношения имеют одинаковое количество атрибутов, но атрибуты имеют различные наименования. Как тогда определить заголовок отношения, полученного в результате объединения множеств кортежей? В-третьих, пусть отношения имеют одинаковое количество атрибутов, атрибуты имеют одинаковые наименования, но определенны на различных доменах. Тогда снова объединение кортежей не будет образовывать отношение.
Некоторые отношения не являются совместимыми по типу, но становятся таковыми после некоторого переименования атрибутов. Для того чтобы такие отношения можно было использовать в реляционных операторах, вводится вспомогательный оператор переименования атрибутов.
Оператор переименования атрибутов
Оператор переименования атрибутов имеет следующий синтаксис:
— отношение,
— исходные имена атрибутов,
— новые имена атрибутов.
В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.
Следующий оператор возвращает неименованное отношение, в котором атрибут переименован в
:
Теоретико-множественные операторы
Объединение
Определение 2. Объединением двух совместимых по типу отношений и
называется отношение с тем же заголовком, что и у отношений
и
, и телом, состоящим из кортежей, принадлежащих или
, или
, или обоим отношениям.
Синтаксис операции объединения:
Замечание. Объединение, как и любое отношение, не может содержать одинаковых кортежей. Поэтому, если некоторый кортеж входит и в отношение , и отношение
, то в объединение он входит один раз.
Пример 2. Пусть даны два отношения и
с информацией о сотрудниках:
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
2 | Петров | 2000 |
3 | Сидоров | 3000 |
Таблица 1 Отношение A
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
2 | Пушников | 2500 |
4 | Сидоров | 3000 |
Таблица 2 Отношение B
Объединение отношений и
будет иметь вид:
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
2 | Петров | 2000 |
3 | Сидоров | 3000 |
2 | Пушников | 2500 |
4 | Сидоров | 3000 |
Таблица 3 Отношение A UNION B
Замечание. Как видно из приведенного примера, потенциальные ключи, которые были в отношениях и
не наследуются объединением этих отношений. Поэтому, в объединении отношений
и
атрибут «Табельный номер» может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию объединения как «объединение множеств». Конечно, объединение отношений
и
имеет, как и любое отношение, потенциальный ключ, например, состоящий из всех атрибутов.
Пересечение
Определение 3. Пересечением двух совместимых по типу отношений и
называется отношение с тем же заголовком, что и у отношений
и
, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям
и
.
Синтаксис операции пересечения:
Пример 3. Для тех же отношений и
, что и в предыдущем примере пересечение имеет вид:
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
Таблица 4 Отношение A INTERSECT B
Вычитание
Определение 4. Вычитанием двух совместимых по типу отношений и
называется отношение с тем же заголовком, что и у отношений
и
, и телом, состоящим из кортежей, принадлежащих отношению
и не принадлежащих отношению
.
Синтаксис операции вычитания:
Пример 4. Для тех же отношений и
, что и в предыдущем примере вычитание имеет вид:
Табельный номер | Фамилия | Зарплата |
---|---|---|
2 | Петров | 2000 |
3 | Сидоров | 3000 |
Таблица 5 Отношение A MINUS B
Декартово произведение
Определение 5. Декартовым произведением двух отношений и
называется отношение, заголовок которого является сцеплением заголовков отношений
и
:
,
а тело состоит из кортежей, являющихся сцеплением кортежей отношений и
:
,
таких, что ,
.
Синтаксис операции декартового произведения:
Замечание. Мощность произведения равна произведению мощностей отношений
и
, т.к. каждый кортеж отношения
соединяется с каждым кортежем отношения
.
Замечание. Если в отношения и
имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать.
Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.
Пример 5. Пусть даны два отношения и
с информацией о поставщиках и деталях:
Номер поставщика | Наименование поставщика |
---|---|
1 | Иванов |
2 | Петров |
3 | Сидоров |
Таблица 6 Отношение A (Поставщики)
Номер детали | Наименование детали |
---|---|
1 | Болт |
2 | Гайка |
3 | Винт |
Таблица 7 Отношение B (Детали)
Декартово произведение отношений и
будет иметь вид:
Номер поставщика | Наименование поставщика | Номер детали | Наименование детали |
---|---|---|---|
1 | Иванов | 1 | Болт |
1 | Иванов | 2 | Гайка |
1 | Иванов | 3 | Винт |
2 | Петров | 1 | Болт |
2 | Петров | 2 | Гайка |
2 | Петров | 3 | Винт |
3 | Сидоров | 1 | Болт |
3 | Сидоров | 2 | Гайка |
3 | Сидоров | 3 | Винт |
Таблица 8 Отношение A TIMES B
Замечание. Сама по себе операция декартового произведения не очень важна, т.к. она не дает никакой новой информации, по сравнению с исходными отношениями. Для реальных запросов эта операция почти никогда не используется. Однако операция декартового произведения важна для выполнения специальных реляционных операций, о которых речь пойдет ниже.
Специальные реляционные операторы
Выборка (ограничение, селекция)
Определение 6. Выборкой (ограничением, селекцией) на отношении с условием
называется отношение с тем же заголовком, что и у отношения
, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие
дают значение ИСТИНА.
представляет собой логическое выражение, в которое могут входить атрибуты отношения
и (или) скалярные выражения.
В простейшем случае условие имеет вид
, где
— один из операторов сравнения (
и т.д.), а
и
— атрибуты отношения
или скалярные значения. Такие выборки называются
—выборки (тэта-выборки) или
—ограничения,
—селекции.
Синтаксис операции выборки:
,
Пример 6. Пусть дано отношение с информацией о сотрудниках:
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
2 | Петров | 2000 |
3 | Сидоров | 3000 |
Таблица 9 Отношение A
Результат выборки будет иметь вид:
Табельный номер | Фамилия | Зарплата |
---|---|---|
1 | Иванов | 1000 |
2 | Петров | 2000 |
НОМ_ВЕЩЕСТВА | ВЕЩЕСТВО |
---|---|
1 | Дезоксирибонуклеиновая кислота |
2 | Бензин |
Таблица 25 Отношение ВЕЩЕСТВО
НОМ_ЭЛЕМЕНТА | ЭЛЕМЕНТ |
---|---|
1 | Водород |
2 | Гелий |
… | … |
105 | … |
Таблица 26 Отношение ЭЛЕМЕНТЫ
НОМ_ВЕЩЕСТВА | НОМ_ЭЛЕМЕНТА | ПРОЦЕНТ |
---|---|---|
1 | 1 | 5 |
1 | 2 | 3 |
1 | 105 | 0.01 |
2 | 1 | 50 |
Таблица 27 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ
На языке SQL такой запрос реализуется одной командой:
Невыразимость транзитивного замыкания реляционными операторами
Следующий пример иллюстрирует класс запросов, невыразимых средствами реляционной алгебры или реляционного исчисления по причине невыразимости средствами реляционной алгебры транзитивного замыкания отношений (см. гл. 1).
Пример 17. Рассмотрим отношение, описывающее сотрудников некоего предприятия. Отношение содержит данные о табельном номере сотрудника, фамилии, должности и табельном номере руководителя сотрудника – СОТРУДНИКИ ( ТАБ_НОМ, ФАМИЛИЯ, ДОЛЖНОСТЬ, ТАБ_НОМ_РУК):
ТАБ_НОМ | ФАМИЛИЯ | ДОЛЖНОСТЬ | ТАБ_НОМ_РУК |
---|---|---|---|
1 | Иванов | Директор | 1 |
2 | Петров | Глав.бухгалтер | 1 |
3 | Сидоров | Бухгалтер | 2 |
4 | Васильев | Начальник цеха | 1 |
5 | Сухов | Мастер | 4 |
6 | Шарипов | Рабочий | 5 |
… | … | … | … |
Таблица 28 Отношение СОТРУДНИКИ
Рассмотрим запрос «Перечислить всех руководителей (прямых и непрямых) данного сотрудника».
Ответом на запрос может быть получен при помощи понятия транзитивного замыкания. Однако транзитивное замыкание не может быть выражено операторами реляционной алгебры.
Кросс-таблицы
Одной из задач, связанных с представлением табличных данных является построение так называемых кросс-таблиц.
Пусть имеется отношение с тремя атрибутами и потенциальным ключом, включающим первые два атрибута. Примером такого отношения могут быть данные с объемами продаж различных товаров за некоторые промежутки времени:
Товар | Месяц | Количество |
---|---|---|
Компьютеры | Январь | 100 |
Принтеры | Январь | 200 |
Сканеры | Январь | 300 |
Компьютеры | Февраль | 150 |
Принтеры | Февраль | 250 |
Сканеры | Февраль | 350 |
… | … | … |
Таблица 29 Данные о продажах
Товар | Январь | Февраль | … |
---|---|---|---|
Компьютеры | 100 | 150 | … |
Принтеры | 200 | 250 | … |
Сканеры | 300 | 350 | … |
Таблица 30 Кросс-таблица
Построение кросс-таблицы средствами реляционной алгебры невозможно, т.к. для этого требуется превратить данные в ячейках таблицы в наименования новых столбцов таблицы.
Выводы
Доступ к реляционным данным возможен при помощи операторов реляционной алгебры. Реляционная алгебра представляет собой набор операторов, использующих отношения в качестве аргументов, и возвращающие отношения в качестве результата. Реляционная алгебра замкнута таким образом, что результаты одних реляционных выражений можно использовать в других выражениях.
Традиционно определяют восемь реляционных операторов, объединенных в две группы.
Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение.
Специальные реляционные операторы: выборка, проекция, соединение, деление.
Для выполнения некоторых реляционных операторов требуется, чтобы отношения были совместимы по типу.
Имеется несколько типов запросов, которые нельзя выразить средствами реляционной алгебры. К ним относятся запросы, требующие дать в ответе список атрибутов, удовлетворяющих определенным условиям, построение транзитивного замыкания отношений, построение кросс-таблиц. Для получения ответов на подобные запросы приходится использовать процедурные расширения реляционных языков.