Реляционная алгебра: соединения, деление — различия между версиями
Masmirnov (обсуждение | вклад) |
|||
| Строка 1: | Строка 1: | ||
| + | {| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;" | ||
| + | |+ | ||
| + | |-align="center" | ||
| + | |'''НЕТ ВОЙНЕ''' | ||
| + | |-style="font-size: 16px;" | ||
| + | | | ||
| + | 24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. | ||
| + | |||
| + | Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. | ||
| + | |||
| + | Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. | ||
| + | |||
| + | Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. | ||
| + | |||
| + | ''Антивоенный комитет России'' | ||
| + | |-style="font-size: 16px;" | ||
| + | |Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. | ||
| + | |-style="font-size: 16px;" | ||
| + | |[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки]. | ||
| + | |} | ||
| + | |||
=Соединения= | =Соединения= | ||
Версия 06:42, 1 сентября 2022
| НЕТ ВОЙНЕ |
|
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян. Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием. Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей. Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить. Антивоенный комитет России |
| Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению. |
| meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки. |
Содержание
Соединения
| Определение: |
| Соединение (англ. Join) — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно. |
Полное соединение
| Определение: |
| Полным, или декартовым соединением (англ. Cross join, Cartesian join) двух отношений и , у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков и , а тело — декартовым произведением тел и . Обозначение: |
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.
Пример
Рассмотрим два отношения:
| Id1 | FirstName |
|---|---|
| 1 | Иван |
| 2 | Пётр |
| 3 | Сидор |
| Id2 | LastName |
|---|---|
| 1 | Иванов |
| 3 | Петров |
| 4 | Сидоров |
Их полным соединением будет следующее отношение:
| Id1 | FirstName | Id2 | LastName |
|---|---|---|---|
| 1 | Иван | 1 | Иванов |
| 1 | Иван | 3 | Петров |
| 1 | Иван | 4 | Сидоров |
| 2 | Пётр | 1 | Иванов |
| 2 | Пётр | 3 | Петров |
| 2 | Пётр | 4 | Сидоров |
| 3 | Сидор | 1 | Иванов |
| 3 | Сидор | 3 | Петров |
| 3 | Сидор | 4 | Сидоров |
Естественное соединение
| Определение: |
| Естественным соединением (англ. Natural join) двух отношений и называется отношение, в котором заголовок является объединением заголовков и , а тело состоит из кортежей, полученных всевозможными соединениями кортежей и , имеющих равные значения одноимённых атрибутов. Обозначение: |
Пример
Рассмотрим два отношения:
| Id | FirstName |
|---|---|
| 1 | Иван |
| 2 | Пётр |
| 3 | Сидор |
| Id | LastName |
|---|---|
| 1 | Иванов |
| 1 | Петров |
| 2 | Сидоров |
Их естественным соединением будет следующее отношение:
| Id | FirstName | LastName |
|---|---|---|
| 1 | Иван | Иванов |
| 1 | Иван | Петров |
| 2 | Пётр | Сидоров |
Свойства
Замечание. Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.
- Если и , то .
- достигается, если у общих атрибутов в и нет равных значений
- достигается, в частности, при отсутствии общих атрибутов у и (в такой ситуации естественное соединение совпадает с полным: )
Внешние соединения
| Определение: |
| Левым соединением (англ. Left join или Left outer join) двух отношений и называется отношение, в котором заголовок является объединением заголовков и , а тело состоит из кортежей, полученных всевозможными соединениями кортежей и , имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из не соответствует ни одного кортежа из , то в результат добавляется этот кортеж из , дополненный пустыми значениями. Обозначение: |
| Определение: |
| Правым соединением (англ. Right join или Right outer join) двух отношений и называется отношение, в котором заголовок является объединением заголовков и , а тело состоит из кортежей, полученных всевозможными соединениями кортежей и , имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из не соответствует ни одного кортежа из , то в результат добавляется этот кортеж из , дополненный пустыми значениями. Обозначение: |
| Определение: |
| Внешним соединением (англ. Outer join или Full outer join) двух отношений и называется отношение, в котором заголовок является объединением заголовков и , а тело состоит из кортежей, полученных всевозможными соединениями кортежей и , имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: |
Пример
Рассмотрим два отношения ( и соответственно):
| Id | FirstName |
|---|---|
| 1 | Иван |
| 2 | Пётр |
| 3 | Сидор |
| Id | LastName |
|---|---|
| 1 | Иванов |
| 1 | Петров |
| 3 | Сидоров |
| 4 | Плюшкин |
Тогда (левое соединение) равно:
| Id | FirstName | LastName |
|---|---|---|
| 1 | Иван | Иванов |
| 1 | Иван | Петров |
| 2 | Пётр | |
| 3 | Сидор | Сидоров |
(правое соединение) равно:
| Id | FirstName | LastName |
|---|---|---|
| 1 | Иван | Иванов |
| 1 | Иван | Петров |
| 3 | Сидор | Сидоров |
| 4 | Плюшкин |
(внешнее соединение) равно:
| Id | FirstName | LastName |
|---|---|---|
| 1 | Иван | Иванов |
| 1 | Иван | Петров |
| 2 | Пётр | |
| 3 | Сидор | Сидоров |
| 4 | Плюшкин |
Свойства
Непосредственно из определений вытекают следующие свойства:
-
- Замечание 1. — это и есть кортежи из , которым не соответствует ни один кортеж из
- Замечание 2. Множество атрибутов у есть надмножество атрибутов у . Подразумевается, что у недостающие атрибуты дополняются значениями , чтобы операция объединения была определена
Из этих свойств, в свою очередь, следует:
Полусоединения
| Определение: |
| Левым полусоединением (англ. Left semijoin) двух отношений и называется отношение, в котором заголовок равен заголовку , а тело состоит из кортежей в , для которых существует кортеж из с равными значениями одноимённых атрибутов. Обозначение: |
| Определение: |
| Правым полусоединением (англ. Right semijoin) двух отношений и называется отношение, в котором заголовок равен заголовку , а тело состоит из кортежей в , для которых существует кортеж из с равными значениями одноимённых атрибутов. Обозначение: |
Пример
Рассмотрим два отношения ( и соответственно):
| Id | FirstName |
|---|---|
| 1 | Иван |
| 2 | Пётр |
| 3 | Сидор |
| Id | LastName |
|---|---|
| 1 | Иванов |
| 1 | Петров |
| 3 | Сидоров |
| 4 | Плюшкин |
Тогда (левое полусоединение) равно:
| Id | FirstName |
|---|---|
| 1 | Иван |
| 3 | Сидор |
(правое полусоединение) равно:
| Id | LastName |
|---|---|
| 1 | Иванов |
| 1 | Петров |
| 3 | Сидоров |
Свойства
Из определения следует:
Подставив и в соответствующие свойства и , получим:
Условные соединения
| Определение: |
| Условным соединением (англ. Conditional join) двух отношений и , у которых нет общих атрибутов, по условию называется отношение, в котором заголовок является объединением заголовков и , а кортежами тела являются всевозможные конкатенации кортежей тел и , удовлетворяющих условию . Обозначение: |
| Определение: |
| Левым условным соединением (англ. Left conditional join) двух отношений и , у которых нет общих атрибутов, по условию называется отношение, в котором заголовок является объединением заголовков и , а кортежами тела являются всевозможные конкатенации кортежей тел и , удовлетворяющих условию . Если в результате кортежу из не соответствует ни одного кортежа из , то в результат добавляется этот кортеж из , дополненный пустыми значениями. Обозначение: |
| Определение: |
| Правым условным соединением (англ. Right conditional join) двух отношений и , у которых нет общих атрибутов, по условию называется отношение, в котором заголовок является объединением заголовков и , а кортежами тела являются всевозможные конкатенации кортежей тел и , удовлетворяющих условию . Если в результате кортежу из не соответствует ни одного кортежа из , то в результат добавляется этот кортеж из , дополненный пустыми значениями. Обозначение: |
| Определение: |
| Внешним условным соединением (англ. Outer conditional join) двух отношений и , у которых нет общих атрибутов, по условию называется отношение, в котором заголовок является объединением заголовков и , а кортежами тела являются всевозможные конкатенации кортежей тел и , удовлетворяющих условию . Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: |
Пример
Рассмотрим два отношения ( и соответственно):
| Id1 | FirstName |
|---|---|
| 1 | Иван |
| 2 | Пётр |
| 3 | Сидор |
| Id2 | LastName |
|---|---|
| 1 | Иванов |
| 1 | Петров |
| 3 | Сидоров |
| 4 | Плюшкин |
Тогда равно:
| Id1 | FirstName | Id2 | LastName |
|---|---|---|---|
| 1 | Иван | 3 | Сидоров |
| 1 | Иван | 4 | Плюшкин |
| 2 | Пётр | 3 | Сидоров |
| 2 | Пётр | 4 | Плюшкин |
| 3 | Сидор |
Свойства
Из определений следует:
- , где
- , где
- , где
Из свойств выше нетрудно вывести:
Деление
Деление
| Определение: |
| Пусть даны отношения с заголовком и отношение с заголовком . Тогда делением (англ. Division) на называется максимальное по включению отношение с заголовком , такое что . Обозначение: |
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: «Частным от деления целого числа на натуральное число называется максимальное целое , такое что .»
Пример
Рассмотрим следующие отношения, и соответственно:
| Id | FirstName |
|---|---|
| 1 | Иван |
| 2 | Иван |
| 1 | Пётр |
| 2 | Пётр |
| 3 | Пётр |
| 1 | Сидор |
| 3 | Сидор |
| Id |
|---|
| 1 |
| 2 |
Тогда результатом деления на будут такие имена (FirstName), которые в отношении ассоциированы и с , и с . Итого получим:
| FirstName |
|---|
| Иван |
| Пётр |
Свойства
- — интерпретация определения на языке кванторов
- — выражение деления через простейшие операции реляционной алгебры
- Объяснение. это все такие пары , что , но .
- Тогда — это все , такие что .
- Тогда — это максимальное по включению , что — то есть, в точности результат деления на по определению
Большое деление
| Определение: |
| Пусть даны отношения с заголовком и отношение с заголовком . Тогда большим делением (англ. Great division) на называется максимальное по включению отношение с заголовком , такое что для каждого верно . Обозначение: |
Пример
Рассмотрим следующие отношения, и соответственно:
| Id | FirstName |
|---|---|
| 1 | Иван |
| 2 | Иван |
| 1 | Пётр |
| 2 | Пётр |
| 3 | Пётр |
| 1 | Сидор |
| 3 | Сидор |
| Id | LastName |
|---|---|
| 1 | Иванов |
| 2 | Иванов |
| 1 | Петров |
| 3 | Сидоров |
Тогда результатом большого деления на будет:
| FirstName | LastName |
|---|---|
| Иван | Иванов |
| Иван | Петров |
| Пётр | Иванов |
| Пётр | Петров |
| Пётр | Сидоров |
| Сидор | Петров |
| Сидор | Сидоров |
Объяснение. Чтобы найти результат большого деления, переберём всевозможные . В нашем случае .
Возьмём . Тогда . Тогда , что является подмножеством . Значит, есть в результате большого деления.
Возьмём . Тогда . Тогда , что является подмножеством . Значит, есть в результате большого деления.
Возьмём . Тогда . Тогда , что не является подмножеством . Значит, элемента нет в результате большого деления.
Аналогично перебираются 6 оставшихся элементов .
Свойства
- — интерпретация определения на языке кванторов
- Если , то для каждого верно — интерпретация большого деления как "деление для каждого "
- — выражение большого деления через простейшие операции реляционной алгебры
Литература
- Дейт К. Введение в системы баз данных (глава 7)
- Уидом Д., Ульман Д. Основы реляционных баз данных (главы 4 и 5)