Как найти пересечение отношений

Так
как отношения это множества, то над ними
можно производить операции.

Операции
над отношениями можно разделить на 2
класса:

1. Операции,
которые сводятся к теоретико-множественным
операциям.

2. Операции,
которые не сводятся к теоретико-мно­жествен­ным
операциям.

Рассмотрим
операции 1-го класса.

2.26.1. Объединение отношений

Пусть
заданы следующие бинарные отношения

,

и

,

,
заданные на одном и том же множестве

.

Объединением
отношений

и

называется отношение

,
определяемое объединением соответствующих
множеств:


.

Для

и

соотношение

выполняется тогда и только тогда, когда
выполнено хотя бы одно из соотношений

или

.

Пример 2.22

Пусть

множество
вещественных чисел, накотором заданы
бинарные отношения

,

и

,

.
Отношение
означает
«быть больше», т.е.

можно записать как

.
Отношение

означает «быть равным», т.е.

можно записать как

.
Тогда отношение

означает «быть болше или равным». Для
любых

и

из
множества

соотношение

(или в другой форме

)
означает, что элемент

больше или равен элементу

,
т.е.

.

2.26.2. Пересечение отношений

Рассмотрим
те же отношения

,

и

,

,
заданные на одном и том же множестве

.

Пересечением
отношений

и

называется отношение

,
определяемое пересечением соответствующих
множеств:


.

Для

и

соотношение

выполняется тогда и только тогда, когда
одновременно выполнено каждое из
соотношений


и

.

Пример 2.23

Рассмотрим

множество вещественных чисел, накотором
заданы бинарные отношения

,

и

,

.
Отношение

означает «быть не меньше», т.е. запись

имеет вид

,
а

«быть не равным», т.е.

имеет вид

.
Тогда отношение

означает «быть строго больше». Для любых

и

из
множества

соотношение

(или в другой форме

)
означает, что элемент

строго больше элемента

,
т.е.

.

2.26.3. Разность отношений

Рассматриваются
те же отношения

,

и

,

,
заданные на одном и том же множестве

.
Разностью отношений

и

называется
отношение

,
определяемое пересечением соответствующих
множеств:


.

Для

и

соотношение

выполняется тогда и только тогда, когда
соотношение выполняется

,
а соотношение

не выполняется, т.е. когда

и

.

Пример
2.24

Если

множество
вещественных чисел, накотором заданы
бинарные отношения

,

и

,

,
отношение
означает
«быть больше, т.е.

а

«быть не равным», т.е.

.
Тогда отношение

означает «быть болше или равно». Для
любых

и

из
множества

соотношение

(или в другой форме

)
означает, что элемент

больше или равенэлемента

,
т.е.

.

2.26.4. Включение отношений

Нестрогое
включение

отношения

в отношение

выполняется тогда и только тогда, когда
множество упорядоченных пар, для которых
выполняется отношение

,
содержится содержится в множестве пар,
для которых выполнено отношение

:


.

Строгое
включение

отношения

в отношение

выполняется тогда и только тогда, когда
множество упорядоченных пар отношения

является подмножеством пар отношения

и

:


.

Пример
2.25

На
множестве

рассмотрим
отношения

и

из
предыдущего примера:

,

и

,

,
где

«быть меньше», т.е.

,
а

«быть меньшим или равным», т.е.

.
Тогда

,
т.е.

.

Рассмотрим
операции второго класса, т.е. операции,
не сводящиеся к теоретико-множественным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Основы реляционной алгебры

Время на прочтение
6 мин

Количество просмотров 281K

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

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Реляционная база данных

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

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

таблица PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
156 Чай ООО ”Темная сторона” 60
235 Ананасы ОАО ”Фрукты” 100
623 Томаты ООО ”Овощи” 130

Таблица состоит из 4х строк, строка в таблице является кортежем в реляционной теории. Множество упорядоченных кортежей называется отношением.
Перед тем как дать определение отношения, введем еще один термин — домен. Домены применительно к таблице это столбцы.

Для ясности, теперь введем строгое определение отношения.

Пусть даны N множеств D1,D2, …. Dn (домены), отношением R над этими множествами называется множество упорядоченных N-кортежей вида <d1,d1,…dn>, где d1 принадлежит D1 и тд. Множества D1,D2,..Dn называются доменами отношения R.
Каждый элемент кортежа представляет собой значение одного из атрибутов, соответствующего одному из доменов.

Ключи в отношениях

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

таблица DRIVERS

COMPANY DRIVER
ООО ”Темная сторона” Владимир
ООО ”Темная сторона” Михаил
ОАО ”Фрукты” Руслан
ООО ”Овощи” Владимир

Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.

В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ ( foreign key ) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.

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

Операции реляционной алгебры

Основные восемь операций реляционной алгебры были предложены Э.Коддом.

  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение
  • Выборка
  • Проекция
  • Соединение
  • Деление

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

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

таблица SELLERS

ID SELLER
123 OOO “Дарт”
156 ОАО ”Ведро”
235 ЗАО “Овоще База”
623 ОАО ”Фирма”

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.

Для начала рассмотрим самую простую операцию — имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

Проекция

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

Синтаксис операции:

π(ID, PRICE) PRODUCTS

В результате этой операции получим отношение:

ID PRICE
123 190
156 60
235 100
623 130
Выборка

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

Синтаксис операции:

σ(PRICE>90) PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
235 Ананасы ОАО ”Фрукты” 100
623 Томаты ООО ”Овощи” 130

В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:

σ(PRICE>90 ^ ID<300) PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
235 Ананасы ОАО ”Фрукты” 100

Совместим операторы проекции и выборки. Мы можем это сделать, потому что любой из операторов в результате возвращает отношение и в качестве аргументов использует также отношение.
Из таблицы с продуктами выберем все компании, продающие продуты дешевле 110.

πCOMPANYσ(PRICE<100 ) PRODUCTS

COMPANY
ООО ”Темная сторона”
ОАО ”Фрукты”
Умножение

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

Получим декартово произведения таблиц PRODUCTS и SELLERS.
Синтаксис операции:

PRODUCTS × SELLERS
Можно заметить, что у двух этих таблиц есть одинаковый домен ID. В подобной ситуации домены с одинаковыми названиями получают префикс в виде названия соответствующего отношения, как показано ниже.
Для краткости перемножим не полные отношения, а выборки с условием ID<235

(цветом выделены одни и те же кортежи)

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
123 Печеньки ООО ”Темная сторона” 190 156 ОАО ”Ведро”
156 Чай ООО ”Темная сторона” 60 123 OOO “Дарт”

Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос:

π(SELLER) σ(RODUCTS.ID=SELLERS.ID ^ PRICE<90) PRODUCTS × SELLERS

В результате этой операции получим отношение:

Соединение и естественное соединение

Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов. В частности, если соединить отношения PRODUCTS и SELLERS, этими атрибутами будут атрибуты доменов ID.

Также для понятности можно представить соеднинение как результат двух операций. Сначала берется произведение исходных таблиц, а потом из полученного отношения мы делаем выборку с условием равенства атрибутов из одинаковых доменов. В данном случае условием явлется равенство PRODUCTS.ID и SELLERS.ID.

Попробуем соединить отношения PRODUCTS и SELLERS и получим отношение.

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 235 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 623 ОАО ”Фирма”

Натуральное соединение получает схожее отношение, но в случае, если у нас корректно настроена схема в базе ( в данном случае первичный ключ таблицы PRODUCTS ID связан с внешним ключем таблицы SELLERS ID), то в результирующем отношении остается один домен ID.

Синтаксис операции:
PRODUCTS ⋈ SELLERS;

Получится такое отношение:

PRODUCTS.ID NAME COMPANY PRICE SELLER
123 Печеньки ООО ”Темная сторона” 190 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 ОАО ”Фирма”
Пересечение и вычитание.

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

Источники информации

  • Основы использования и проектирования баз данных — В. М. Илюшечкин
  • курс лекций Introduction to Databases — Jennifer Widom, Stanford University

Буду благодарен за аргументированные замечания

Привет, сегодня поговорим про реляционная алгебра, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое
реляционная алгебра, операции объединение пересечение разность декартово произведение выборка проекция соединение , настоятельно рекомендую прочитать все из категории Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL.

Обзор реляционной алгебры

Третья часть реляционной модели, манипуляционная часть, утверждает, что доступ к реляционным данным осуществляется при помощи реляционной алгебры или эквивалентного ему реляционного исчисления.

В реализациях конкретных реляционных СУБД сейчас не используется в чистом виде ни
реляционная алгебра
, ни реляционное исчисление. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language). Язык SQL представляет собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении. Вообще, язык доступа к данным называетсяреляционно полным, если он по выразительной силе не уступает реляционной алгебре (или, что то же самое, реляционному исчислению), т.е. любой оператор реляционной алгебры может быть выражен средствами этого языка. Именно таким и является язык SQL.

В данной главе будут рассмотрены основы реляционной алгебры.

Замкнутость реляционной алгебры

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

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

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

Традиционно, вслед за Коддом [43], определяют восемь реляционных операторов, объединенных в две группы.

Теоретико-множественные операторы:

  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение

Специальные реляционные операторы:

  • Выборка
  • Проекция
  • Соединение
  • Деление

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

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

  • объединение,
  • пересечение,
  • разность
  • декартово произведение.

Во вторую группу входят операции, применимые только к отношениям:

  • выборка,
  • проекция,
  • соединение.

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Рис. 1. Операции реляционной алгебры

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

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

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

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

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

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

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

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

Пример проекции

Из отношения Жители нужно выбрать только фамилии жителей

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

На языке SQL запрос запрос выглядит так:

     SELECT DISTINCT ФИО FROM Жители;

Результат выборки

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

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

Отношения, совместимые по типу

Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Действительно, отношения состоят из заголовка и тела. Операция объединения двух отношений есть просто объединение двух множеств кортежей, взятых из тел соответствующих отношений. Но будет ли результат отношением? Во-первых, если исходные отношения имеют разное количество атрибутов, то, очевидно, что множество, являющееся объединением таких разнотипных кортежей нельзя представить в виде отношения. Во-вторых, пусть даже отношения имеют одинаковое количество атрибутов, но атрибуты имеют различные наименования. Как тогда определить заголовок отношения, полученного в результате объединения множеств кортежей? В-третьих, пусть отношения имеют одинаковое количество атрибутов, атрибуты имеют одинаковые наименования, но определенны на различных доменах. Тогда снова объединение кортежей не будет образовывать отношение.

Определение 1. Будем называть отношения совместимыми по типу, если они имеют идентичные заголовки, а именно,

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

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

Оператор переименования атрибутов

Оператор переименования атрибутов имеет следующий синтаксис:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

где

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — отношение,

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — исходные имена атрибутов,

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — новые имена атрибутов.

В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов.

Пример 1.

Следующий оператор возвращает неименованное отношение, в котором атрибут 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение переименован в 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Теоретико-множественные операторы

Объединение

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

Синтаксис операции объединения:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

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

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000

Таблица 1 Отношение A

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Пушников 2500
4 Сидоров 3000

Таблица 2 Отношение B

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

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000
2 Пушников 2500
4 Сидоров 3000

Таблица 3 Отношение A UNION B

Замечание. Как видно из приведенного примера, потенциальные ключи, которые были в отношениях 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение не наследуются объединением этих отношений. Поэтому, в объединении отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение атрибут «Табельный номер» может содержать дубликаты значений. Если бы это было не так, и ключи наследовались бы, то это противоречило бы понятию объединения как «объединение множеств». Конечно, объединение отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение имеет, как и любое отношение, потенциальный ключ, например, состоящий из всех атрибутов.

Пересечение

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

Синтаксис операции пересечения:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Табельный номер Фамилия Зарплата
1 Иванов 1000

Таблица 4 Отношение A INTERSECT B

Замечание. Казалось бы, что в отличие от операции объединения, потенциальные ключи могли бы наследоваться пересечением отношений. Однако это не так. Вообще, никакие реляционные операторы не передают результатирующему отношению никаких данных о потенциальных ключах. В качестве причины этого можно было бы привести тривиальное соображение, что так получается более просто и симметрично — все операторы устроены одинаково. На самом деле причина более глубока, и заключается в том, что потенциальный ключ — семантическое понятие, отражающее различимость объектов предметной области. Наличие потенциальных ключей не выводится из структуры отношения, а явно задается для каждого отношения, исходя из его смысла. Реляционные же операторы являются формальнымиоперациями над отношениями и выполняются одинаково, независимо от смысла данных, содержащихся в отношениях. Поэтому, реляционные операторы ничего не могут «знать» о смысле данных. Трактовка результата реляционных операций — дело пользователя.

Вычитание

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

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

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Табельный номер Фамилия Зарплата
2 Петров 2000
3 Сидоров 3000

Таблица 5 Отношение A MINUS B

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

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

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение,

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

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение,

таких, что 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение.

Синтаксис операции декартового произведения:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Замечание . Об этом говорит сайт https://intellect.icu . Мощность произведения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение равна произведению мощностей отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, т.к. каждый кортеж отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение соединяется с каждым кортежем отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение.

Замечание. Если в отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение имеются атрибуты с одинаковыми наименованиями, то перед выполнением операции декартового произведения такие атрибуты необходимо переименовать.

Замечание. Перемножать можно любые два отношения, совместимость по типу при этом не требуется.

Пример 5. Пусть даны два отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение с информацией о поставщиках и деталях:

Номер поставщика Наименование поставщика
1 Иванов
2 Петров
3 Сидоров

Таблица 6 Отношение A (Поставщики)

Номер детали Наименование детали
1 Болт
2 Гайка
3 Винт

Таблица 7 Отношение B (Детали)

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

Номер поставщика Наименование поставщика Номер детали Наименование детали
1 Иванов 1 Болт
1 Иванов 2 Гайка
1 Иванов 3 Винт
2 Петров 1 Болт
2 Петров 2 Гайка
2 Петров 3 Винт
3 Сидоров 1 Болт
3 Сидоров 2 Гайка
3 Сидоров 3 Винт

Таблица 8 Отношение A TIMES B

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

Специальные реляционные операторы

Выборка (ограничение, селекция)

Определение 6. Выборкой (ограничением, селекцией) на отношении 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение с условием 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение называется отношение с тем же заголовком, что и у отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, и телом, состоящем из кортежей, значения атрибутов которых при подстановке в условие 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение дают значение ИСТИНА. 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение представляет собой логическое выражение, в которое могут входить атрибуты отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениеи (или) скалярные выражения.

В простейшем случае условие 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение имеет вид 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, где 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — один из операторов сравнения (4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и т.д.), а 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — атрибуты отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение или скалярные значения. Такие выборки называются 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениевыборки (тэта-выборки) или 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениеограничения, 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениеселекции.

Синтаксис операции выборки:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение,

или

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000

Таблица 9 Отношение A

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

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000

Таблица 10 Отношение A WHERE Зарплата<3000

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

Проекция

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

Синтаксис операции проекции:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

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

Номер поставщика Наименование поставщика Город поставщика
1 Иванов Уфа
2 Петров Москва
3 Сидоров Москва
4 Сидоров Челябинск

Таблица 11 Отношение A (Поставщики)

Проекция 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение будет иметь вид:

Город поставщика
Уфа
Москва
Челябинск

Таблица 12 Отношение A[Город поставщика]

Соединение

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

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

  • Общая операция соединения
  • 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение-соединение (тэта-соединение)
  • Экви-соединение
  • Естественное соединение

Наиболее важным из этих частных случаев является операция естественного соединения. Все разновидности соединения являются частными случаями общей операции соединения.

Общая операция соединения

Определение 8. Соединением отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение по условию 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение называется отношение

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Таким образом, операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.

Тэта-соединение

Определение 9. Пусть отношение 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение содержит атрибут 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, отношение 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение содержит атрибут 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, а 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — один из операторов сравнения (4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и т.д.). Тогда 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениесоединением отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение по атрибуту 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение с отношением 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение по атрибуту 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединениеназывают отношение

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Это частный случай операции общего соединения.

Иногда, для операции 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение-соединения применяют следующий, более короткий синтаксис:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Номер поставщика Наименование поставщика X

(Статус поставщика)

1 Иванов 4
2 Петров 1
3 Сидоров 2

Таблица 13 Отношение A (Поставщики)

Номер детали Наименование детали Y

(Статус детали)

1 Болт 3
2 Гайка 2
3 Винт 1

Таблица 14 Отношение B (Детали)

Ответ на вопрос «какие поставщики имеют право поставлять какие детали?» дает 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение-соединение 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение:

Номер поставщика Наименование поставщика X

(Статус поставщика)

Номер детали Наименование детали Y

(Статус детали)

1 Иванов 4 1 Болт 3
1 Иванов 4 2 Гайка 2
1 Иванов 4 3 Винт 1
2 Петров 1 3 Винт 1
3 Сидоров 2 2 Гайка 2
3 Сидоров 2 3 Винт 1

Таблица 15 Отношение «Какие поставщики поставляют какие детали»

Экви-соединение

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

Синтаксис экви-соединения:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Пример 9. Пусть имеются отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, хранящие информацию о поставщиках, деталях и поставках соответственно (для удобства введем краткие наименования атрибутов):

Номер поставщика

PNUM

Наименование поставщика

PNAME

1 Иванов
2 Петров
3 Сидоров

Таблица 16 Отношение P (Поставщики)

Номер детали

DNUM

Наименование детали

DNAME

1 Болт
2 Гайка
3 Винт

Таблица 17 Отношение D (Детали)

Номер поставщика

PNUM

Номер детали

DNUM

Поставляемое количество

VOLUME

1 1 100
1 2 200
1 3 300
2 1 150
2 2 250
3 1 1000

Таблица 18 Отношение PD (Поставки)

Ответ на вопрос, какие детали поставляются поставщиками, дает экви-соединение 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение. На самом деле, т.к. в отношениях имеются одинаковые атрибуты, то требуется сначала переименовать атрибуты, а потом выполнить экви-соединение. Запись становится более громоздкой:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Обычно, такой сложной формой записи не пользуются. Но как бы то ни было, в результате имеем отношение:

Номер поставщика

PNUM1

Наименование поставщика

PNAME

Номер поставщика

PNUM2

Номер детали

DNUM

Поставляемое количество

VOLUME

1 Иванов 1 1 100
1 Иванов 1 2 200
1 Иванов 1 3 300
2 Петров 2 1 150
2 Петров 2 2 250
3 Сидоров 3 1 1000

Таблица 19 Отношение «Какие детали поставляются какими поставщиками»

Недостатком экви-соединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результатирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.

Естественное соединение

Определение 10. Пусть даны отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, имеющие одинаковые атрибуты 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).

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

Естественное соединение настолько важно, что для него используют специальный синтаксис:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.

Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:

  1. Переименовать одинаковые атрибуты в отношениях
  2. Выполнить декартово произведение отношений
  3. Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
  4. Выполнить проекцию, удалив повторяющиеся атрибуты
  5. Переименовать атрибуты, вернув им первоначальные имена

Замечание. Можно выполнять последовательное естественное соединение нескольких отношений. Нетрудно проверить, что естественное соединение (как, впрочем, и соединение общего вида) обладает свойством ассоциативности, т.е.

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

поэтому такие соединения можно записывать, опуская скобки:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Пример 10. В предыдущем примере ответ на вопрос «какие детали поставляются поставщиками», более просто записывается в виде естественного соединения трех отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение (для удобства просмотра порядок атрибутов изменен, это является допустимым по свойствам отношений):

Номер поставщика

PNUM

Наименование поставщика

PNAME

Номер детали

DNUM

Наименование детали

DNAME

Поставляемое количество

VOLUME

1 Иванов 1 Болт 100
1 Иванов 2 Гайка 200
1 Иванов 3 Винт 300
2 Петров 1 Болт 150
2 Петров 2 Гайка 250
3 Сидоров 1 Болт 1000

Таблица 20 Отношение P JOIN PD JOIN D

Деление

Определение 11. Пусть даны отношения 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, причем атрибуты 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — общие для двух отношений. Делением отношений 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение на 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение называется отношение с заголовком 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение и телом, содержащим множество кортежей 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение, таких, что для всех кортежей 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение в отношении 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение найдется кортеж 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение.

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

Синтаксис операции деления:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово «все» — «какие поставщики поставляют все детали?».

Пример 11. В примере с поставщиками, деталями и поставками ответим на вопрос, «какие поставщики поставляют вседетали?».

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

Номер поставщика

PNUM

Номер детали

DNUM

1 1
1 2
1 3
2 1
2 2
3 1

Таблица 21 Проекция X=PD[PNUM,DNUM]

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

Номер детали

DNUM

1
2
3

Таблица 22 Проекция Y=D[DNUM]

Деление 4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение дает список номеров поставщиков, поставляющих все детали:

Номер поставщика

PNUM

1

Таблица 23 Отношение X DEVIDEBY Y

Оказалось, что только поставщик с номером 1 поставляет все детали.

Примеры использования реляционных операторов

Пример 12. Получить имена поставщиков, поставляющих деталь номер 2.

Решение:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Пример 13. Получить имена поставщиков, поставляющих по крайней мере одну гайку.

Решение:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Ответ на этот запрос можно получить и иначе:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Пример 14. Получить имена поставщиков, поставляющих все детали.

Решение:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Пример 15. Получить имена поставщиков, не поставляющих деталь номер 2.

Решение:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Ответ на этот запрос можно получить и пошагово:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — получить список номеров всех поставщиков

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — соединить данные о поставщиках и поставках

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — в данных о поставщиках и поставках оставить только данные о поставках детали номер 2.

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — получить список номеров поставщиков, поставляющих деталь номер 2.

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — получить список номеров поставщиков, не поставляющих деталь номер 2.

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — соединить список номеров поставщиков, не поставляющих деталь номер 2 с данными о поставщиках (получатся полные данные о поставщиках, не поставляющих деталь номер 2).

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение — искомый ответ (имена поставщиков, не поставляющих деталь номер 2).

Зависимые реляционные операторы

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

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

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

Оператор пересечения

Оператор пересечения выражается через вычитание следующим образом:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

Оператор деления

Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:

4. Реляционная алгебра - операции объединение, пересечение, разность, декартово произведение, выборка, проекция, соединение

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

Примитивные реляционные операторы

Оставшиеся реляционные операторы (объединение, вычитание, декартово произведение, выборка, проекция) являютсяпримитивными операторами — их нельзя выразить друг через друга.

Оператор декартового произведения

Оператор декартового произведения — это единственный оператор, увеличивающий количество атрибутов, поэтому его нельзя выразить через объединение, вычитание, выборку, проекцию.

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

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

Оператор выборки

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

Операторы объединения и вычитания

Доказательство примитивности операторов объединения и вычитания более сложны и мы их здесь не приводим.

Запросы, невыразимые средствами реляционной алгебры

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

Плохая нормализация отношений

Данный пример взят из книги Гилуа М.М. [6, стр.43].

Пример 16. Пусть имеется отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ с набором атрибутов (Наименование вещества, Водород, Гелий, …, 105_элемент). Значением атрибута «Вещество» являются наименования химических веществ, значениями остальных атрибутов — процентный состав соответствующих элементов в этом веществе. Такое отношение могло бы иметь, к примеру, следующий вид:

Наименование вещества Водород Гелий 105 элемент
Дезоксирибону-клеиновая кислота 5 3 0.01
Бензин 50 0 0

Таблица 24 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ

Рассмотрим запрос «Найти все химические элементы, содержание которых в каком-либо из веществ превышает заданный процент (скажем, 90)».

С алгоритмической точки зрения этот запрос выполняется элементарно — просматриваются все столбцы таблицы, если в столбце присутствует хотя бы одно значение, большее 90, то запоминается заголовок этого столбца. Набор наименований запомненных столбцов и является ответом на запрос.

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

На самом деле, этот пример показывает, что таблица плохо нормализована (нормализация отношений рассматривается в гл.6 и 7). В таблице есть набор однотипных атрибутов («Водород», «Гелий» и т.д. в количестве 105 столбцов).

Правильнее разбить это отношение на три различных отношения:

  1. ВЕЩЕСТВО(НОМ_ВЕЩЕСТВА, ВЕЩЕСТВО),
  2. ЭЛЕМЕНТЫ(НОМ_ЭЛЕМЕНТА, ЭЛЕМЕНТ),
  3. ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ(НОМ_ВЕЩЕСТВА, НОМ_ЭЛЕМЕНТА, ПРОЦЕНТ).
НОМ_ВЕЩЕСТВА ВЕЩЕСТВО
1 Дезоксирибонуклеиновая кислота
2 Бензин

Таблица 25 Отношение ВЕЩЕСТВО

НОМ_ЭЛЕМЕНТА ЭЛЕМЕНТ
1 Водород
2 Гелий
105

Таблица 26 Отношение ЭЛЕМЕНТЫ

НОМ_ВЕЩЕСТВА НОМ_ЭЛЕМЕНТА ПРОЦЕНТ
1 1 5
1 2 3
1 105 0.01
2 1 50

Таблица 27 Отношение ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ

Для отношений, нормализованных таким образом, исходный запрос реализуется следующей последовательностью операторов:

  1. R1(НОМЕР_ВЕЩЕСТВА,НОМ_ЭЛЕМЕНТА,ПРОЦЕНТ)= ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ[ПРОЦЕНТ>90]. (Выборка из отношения).
  2. R2(НОМ_ЭЛЕМЕНТА) = R1[НОМ_ЭЛЕМЕНТА]. (Проекция отношения).
  3. R3(НОМ_ЭЛЕМЕНТА,ЭЛЕМЕНТ)= R2[НОМ_ЭЛЕМЕНТА=НОМ_ЭЛЕМЕНТА]ЭЛЕМЕНТЫ. (Естественное соединение)
  4. ОТВЕТ(ЭЛЕМЕНТ) = R3[ЭЛЕМЕНТ]. (Проекция таблицы).

На языке SQL такой запрос реализуется одной командой:

SELECT ЭЛЕМЕНТЫ.ЭЛЕМЕНТ
  FROM ЭЛЕМЕНТЫ, ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ
  WHERE
    ЭЛЕМЕНТЫ.НОМ_ЭЛЕМЕНТА=ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ.НОМ_ЭЛЕМЕНТА
    AND ХИМИЧЕСКИЙ_СОСТАВ_ВЕЩЕСТВ.ПРОЦЕНТ>90;

Невыразимость транзитивного замыкания реляционными операторами

Следующий пример иллюстрирует класс запросов, невыразимых средствами реляционной алгебры или реляционного исчисления по причине невыразимости средствами реляционной алгебры транзитивного замыкания отношений (см. гл. 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 Кросс-таблица

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

Выводы

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

Традиционно определяют восемь реляционных операторов, объединенных в две группы.

Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение.

Специальные реляционные операторы: выборка, проекция, соединение, деление.

Для выполнения некоторых реляционных операторов требуется, чтобы отношения были совместимы по типу.

Не все операторы реляционной алгебры являются независимыми — некоторые из них выражаются через другие реляционные операторы. Операторы соединения, пересечения и деления можно выразить через другие реляционные операторы, т.е. эти операторы не являются примитивными. Оставшиеся реляционные операторы (объединение, вычитание,декартово произведение, выборка, проекция) являются примитивными операторами — их нельзя выразить друг через друга.

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

Вау!! 😲 Ты еще не читал? Это зря!

  • реляционная алгебра ,
  • реляционные соединения , операции над отношениями , реляционная алгебра ,

Напиши свое отношение про реляционная алгебра. Это меня вдохновит писать для тебя всё больше и больше интересного. Спасибо Надеюсь, что теперь ты понял что такое реляционная алгебра, операции объединение пересечение разность декартово произведение выборка проекция соединение
и для чего все это нужно, а если не понял, или есть замечания,
то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

Операция объединения

Объединение ( UNION ) R cup S отношений R и S можно получить в результате их конкатенации с образованием одного отношения с исключением кортежей-дубликатов. При этом отношения R и S должны быть совместимы, т.е. иметь одинаковое количество полей с совпадающими типами данных. Иначе говоря, отношения должны быть совместимы по объединению.

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

SELECT R.a1, R.a2 
FROM R
UNION
SELECT S.b2, S.b1 
FROM S

5.13.
Объединение отношений в SQL.

Операция пересечения

Операция пересечения ( INTERSECT ) R cap S=R-(R-S) определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместимы по объединению .

Пересечением двух таблиц R и S является таблица, содержащая все строки, присутствующие в обеих исходных таблицах одновременно.

SELECT R.a1, R.a2
FROM R,S
WHERE R.a1=S.b1 AND R.a2=S.b2

   или

SELECT R.a1, R.a2
FROM R
WHERE R.a1 IN    
    (SELECT S.b1 FROM S
     WHERE S.b1=R.a1) AND R.a2 IN
         (SELECT S.b2
          FROM S
          WHERE S.b2=R.a2)

5.14.
Пересечение отношений в SQL.

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

Разность ( EXCEPT ) R-S двух отношений R и S состоит из кортежей, которые имеются в отношении R, но отсутствуют в отношении S. Причем отношения R и S должны быть совместимы по объединению.

Разностью двух таблиц R и S является таблица, содержащая все строки, которые присутствуют в таблице R, но отсутствуют в таблице S.

SELECT R.a1, R.a2
FROM R
WHERE NOT EXISTS 
    (SELECT S.b1,S.b2
     FROM S
     WHERE S.b1=R.a2 AND S.b2=R.a1)

5.15.
Разность отношений в SQL.

Операция деления отношений

Результат операции деления R:S — набор кортежей отношения R, определенных на множестве атрибутов C, которые соответствуют комбинации всех кортежей отношения S .

T1=ПC( R );
T2=ПC( (S X T1) -R );
T=T1 - T2.

Отношение R определено на множестве атрибутов A, а отношение S — на множестве атрибутов B, причем A supseteq B и C=A — B.

Пусть A ={имя, пол, рост, возраст, вес}; B ={имя, пол, возраст}; C ={рост, вес}.

Таблица
5.6.

Отношение R
имя пол рост возраст вес
a ж 160 20 60
b м 180 30 70
c ж 150 16 40
Отношение S
имя пол возраст
a ж 20
T1=ПC(R)
рост вес
160 60
180 70
150 40
TT=(S X T1)-R
имя пол возраст рост вес
a ж 20 180 70
a ж 20 150 40
T2=ПC((S X T1)-R)
рост вес
180 70
150 40

Пример 5.16. Деление отношений в SQL.

  • Создание отношения R
    CREATE TABLE R
    (i     int primary key,
    имя    varchar(3),
    пол    varchar(3),
    рост   int,
    возраст int,
    вес    int)

    5.16a.
    Деление отношений в SQL.

  • Создание отношения S
    CREATE TABLE S
    (i     int primary key,
    имя    varchar(3),
    пол    varchar(3),
    возраст int)

    5.16b.
    Деление отношений в SQL.

  • Создание отношения T1
    CREATE VIEW T1
    AS 
    SELECT рост,вес
    FROM R

    5.16c.
    Деление отношений в SQL.

  • Создание отношения TT
    CREATE VIEW TT AS
    SELECT S.имя, S.пол, S.возраст, 
           T1.рост, T1.вес
    FROM S, T1

    5.16d.
    Деление отношений в SQL.

  • Создание отношения T2
    CREATE VIEW T2
    AS
    SELECT TT.рост, TT.вес
    FROM TT
    WHERE NOT EXISTS 
        (SELECT R.рост, R.вес
         FROM R
         WHERE TT.имя=R.имя AND TT.пол=R.пол
               AND TT.возраст=R.возраст 
               AND TT.рост=R.рост 
    		   AND TT.вес=R.вес)

    5.16e.
    Деление отношений в SQL.

  • Создание отношения T
    SELECT T1.рост, T1.вес
    FROM T1
    WHERE NOT EXISTS 
        (SELECT T2.рост,T2.вес
         FROM T2
         WHERE T1.рост=T2.рост AND T1.вес=T2.вес)

    5.16f.
    Деление отношений в SQL.

Пересечение множеств A и B являет собой такое же, как и исходные, множество, в составе которого наличествуют элементы, принадлежащие как одному, так и обязательно всем иным пересекающимся между собой множествам. Пересечение множеств A и B обозначается наличием специального символа, напоминающего перевернутую латинскую букву «U» — символ «» может заменяться знаком умножения ««.

Понять то, как происходит пересечение множеств, легко на простом примере:
Если A ={1, 3, 5, 7} и B ={2,3,6,7,9}, то A ∩ B = {3,7}.
Или: если A ={1, 4, 5, 8} и B ={2,5,7,8,9}, то A • B = {5,8}

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

Понравилась статья? Поделить с друзьями:
  • Как исправить часы на андроиде
  • Как составить бизнес план образец для соцзащиты
  • Как найти высокооплачиваемую работу вакансии
  • Как найти третью часть площади треугольника
  • Как найти массу газа в сосуде