<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Masmirnov</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Masmirnov"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Masmirnov"/>
		<updated>2026-06-11T14:06:27Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81887</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81887"/>
				<updated>2021-12-26T10:42:17Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
** ''Замечание 1.'' &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt; — это и есть кортежи из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, которым не соответствует ни один кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
** ''Замечание 2.'' Множество атрибутов у &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt; есть надмножество атрибутов у &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;. Подразумевается, что у &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt; недостающие атрибуты дополняются значениями &amp;lt;tex&amp;gt;null&amp;lt;/tex&amp;gt;, чтобы операция объединения была определена&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подставив &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; в соответствующие свойства &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;, получим:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
** ''Объяснение.'' &amp;lt;tex&amp;gt;\pi_X(A) \times B \setminus A&amp;lt;/tex&amp;gt;  это все такие пары &amp;lt;tex&amp;gt;(x, y) \in X \times Y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in \pi_X(A)&amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;(x, y) \notin A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** Тогда &amp;lt;tex&amp;gt;\pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — это все &amp;lt;tex&amp;gt;x \in \pi_X(A)&amp;lt;/tex&amp;gt;, такие что &amp;lt;tex&amp;gt;\{x\} \times B \not\subseteq A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** Тогда &amp;lt;tex&amp;gt;\pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — это максимальное по включению &amp;lt;tex&amp;gt;C \subseteq \pi_X(A)&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;C \times B \subseteq A&amp;lt;/tex&amp;gt; — то есть, в точности результат деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; по определению&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;(x, z) \in X \times Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\{x\} \times \pi_Y(\sigma_{Z=z}(B)) \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение.'' Чтобы найти результат большого деления, переберём всевозможные &amp;lt;tex&amp;gt;(x, z) \in X \times Z&amp;lt;/tex&amp;gt;. В нашем случае &amp;lt;tex&amp;gt;X = \{(Иван), (Пётр), (Сидор)\}, Z = \{(Иванов), (Петров), (Сидоров)\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Возьмём &amp;lt;tex&amp;gt;(x, z) = (Иван, Иванов)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\pi_Y(\sigma_{Z=Иванов}(B)) = \{(1), (2)\}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\{Иван\} \times \pi_Y(\sigma_{Z=Иванов}(B)) = \{(1, Иван), (2, Иван)\}&amp;lt;/tex&amp;gt;, что является подмножеством &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;(Иван, Иванов)&amp;lt;/tex&amp;gt; есть в результате большого деления.&lt;br /&gt;
&lt;br /&gt;
Возьмём &amp;lt;tex&amp;gt;(x, z) = (Иван, Петров)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\pi_Y(\sigma_{Z=Петров}(B)) = \{(1)\}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\{Иван\} \times \pi_Y(\sigma_{Z=Петров}(B)) = \{(1, Иван)\}&amp;lt;/tex&amp;gt;, что является подмножеством &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt;(Иван, Петров)&amp;lt;/tex&amp;gt; есть в результате большого деления.&lt;br /&gt;
&lt;br /&gt;
Возьмём &amp;lt;tex&amp;gt;(x, z) = (Иван, Сидоров)&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\pi_Y(\sigma_{Z=Сидоров}(B)) = \{(3)\}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\{Иван\} \times \pi_Y(\sigma_{Z=Сидоров}(B)) = \{(3, Иван)\}&amp;lt;/tex&amp;gt;, что '''не''' является подмножеством &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt;. Значит, элемента &amp;lt;tex&amp;gt;(Иван, Сидоров)&amp;lt;/tex&amp;gt; нет в результате большого деления.&lt;br /&gt;
&lt;br /&gt;
Аналогично перебираются 6 оставшихся элементов &amp;lt;tex&amp;gt;X \times Z&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;C = A ⋇ B&amp;lt;/tex&amp;gt;, то для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_X(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt; — интерпретация большого деления как &amp;quot;деление для каждого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;&amp;quot;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81886</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81886"/>
				<updated>2021-12-26T10:27:30Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
** ''Замечание 1.'' &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt; — это и есть кортежи из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, которым не соответствует ни один кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
** ''Замечание 2.'' Множество атрибутов у &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt; есть надмножество атрибутов у &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;. Подразумевается, что у &amp;lt;tex&amp;gt;R_1 \setminus \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt; недостающие атрибуты дополняются значениями &amp;lt;tex&amp;gt;null&amp;lt;/tex&amp;gt;, чтобы операция объединения была определена&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подставив &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; в соответствующие свойства &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;, получим:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
** ''Объяснение.'' &amp;lt;tex&amp;gt;\pi_X(A) \times B \setminus A&amp;lt;/tex&amp;gt;  это все такие пары &amp;lt;tex&amp;gt;(x, y) \in X \times Y&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;x \in \pi_X(A)&amp;lt;/tex&amp;gt;, но &amp;lt;tex&amp;gt;(x, y) \notin A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** Тогда &amp;lt;tex&amp;gt;\pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — это все &amp;lt;tex&amp;gt;x \in \pi_X(A)&amp;lt;/tex&amp;gt;, такие что &amp;lt;tex&amp;gt;\{x\} \times B \not\subseteq A&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** Тогда &amp;lt;tex&amp;gt;\pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — это максимальное по включению &amp;lt;tex&amp;gt;C \subseteq \pi_X(A)&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;C \times B \subseteq A&amp;lt;/tex&amp;gt; — то есть, в точности результат деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; по определению&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется отношение с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;(x, z) \in X \cup Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\{x\} \times \pi_Y(\sigma_{Z=z}(B)) \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение:''&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Иванов&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1, 2\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Иванов'' и ''Пётр Иванов''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Петров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Петров'', ''Пётр Петров'' и ''Сидор Петров''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Сидоров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{3\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Пётр Сидоров'' и ''Сидор Сидоров''.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;C = A ⋇ B&amp;lt;/tex&amp;gt;, то для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_X(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt; — интерпретация большого деления как &amp;quot;деление для каждого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;&amp;quot;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81804</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81804"/>
				<updated>2021-12-20T12:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: /* Большое деление */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из соответствующих свойств внешних соединений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется отношение с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;(x, z) \in X \cup Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\{x\} \times \pi_Y(\sigma_{Z=z}(B)) \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение:''&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Иванов&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1, 2\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Иванов'' и ''Пётр Иванов''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Петров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Петров'', ''Пётр Петров'' и ''Сидор Петров''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Сидоров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{3\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Пётр Сидоров'' и ''Сидор Сидоров''.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;C = A ⋇ B&amp;lt;/tex&amp;gt;, то для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_x(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt; — интерпретация большого деления как &amp;quot;деление для каждого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;&amp;quot;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81803</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81803"/>
				<updated>2021-12-20T12:49:04Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: /* Большое деление */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из соответствующих свойств внешних соединений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется отношение с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;(x, z) \in X \cup Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\{x\} \times \pi_Y(\sigma_{Z=z}(B)) \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение:''&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Иванов&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1, 2\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Иванов'' и ''Пётр Иванов''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Петров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Петров'', ''Пётр Петров'' и ''Сидор Петров''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Сидоров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{3\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Пётр Сидоров'' и ''Сидор Сидоров''.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* Для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_x(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt; — интерпретация большого деления как &amp;quot;деление для каждого &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;&amp;quot;&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81364</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81364"/>
				<updated>2021-12-14T18:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из двух отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из соответствующих свойств внешних соединений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_x(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение:''&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Иванов&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1, 2\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Иванов'' и ''Пётр Иванов''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Петров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Петров'', ''Пётр Петров'' и ''Сидор Петров''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Сидоров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{3\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Пётр Сидоров'' и ''Сидор Сидоров''.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81363</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81363"/>
				<updated>2021-12-14T17:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: Деления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из нескольких отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из соответствующих свойств внешних соединений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} \, R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖_{\theta} \, R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕_{\theta} \, R_2 = R_2 \, ⟖_{\theta} \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗_{\theta} \, R_2 = (R_1 \, ⟕_{\theta} \, R_2) \cup (R_1 \, ⟖_{\theta} \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y&amp;lt;/tex&amp;gt;. Тогда '''делением''' (англ. ''Division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется максимальное по включению отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;B \times C \subseteq A&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A \div B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Определение деления в реляционной алгебре хорошо перекликается с определением деления с остатком в арифметике: ''«Частным от деления целого числа &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; на натуральное число &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; называется максимальное целое &amp;lt;tex&amp;gt;c&amp;lt;/tex&amp;gt;, такое что &amp;lt;tex&amp;gt;bc \leq a&amp;lt;/tex&amp;gt;.»''&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будут такие имена (FirstName), которые в отношении &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; ассоциированы и с &amp;lt;tex&amp;gt;Id = 1&amp;lt;/tex&amp;gt;, и с &amp;lt;tex&amp;gt;Id = 2&amp;lt;/tex&amp;gt;. Итого получим:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \{x \in \pi_X(A) \, | \, \forall y \in B: \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A \div B = \pi_X(A) \setminus \pi_X(\pi_X(A) \times B \setminus A)&amp;lt;/tex&amp;gt; — выражение деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
Пусть даны отношения &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Y&amp;lt;/tex&amp;gt; и отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;Y \cup Z \,\,\,\, (X \cap Z = \varnothing)&amp;lt;/tex&amp;gt;. Тогда '''большим делением''' (англ. ''Great division'') &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; называется отношение &amp;lt;tex&amp;gt;C&amp;lt;/tex&amp;gt; с заголовком &amp;lt;tex&amp;gt;X \cup Z&amp;lt;/tex&amp;gt;, такое что для каждого &amp;lt;tex&amp;gt;z \in Z&amp;lt;/tex&amp;gt; верно &amp;lt;tex&amp;gt;\pi_x(\sigma_{Z=z}(C)) = A \div \pi_Y(\sigma_{Z=z}(B))&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;A ⋇ B&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующие отношения, &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; соответственно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Сидор&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Тогда результатом большого деления &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
''Объяснение:''&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Иванов&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1, 2\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Иванов'' и ''Пётр Иванов''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Петров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{1\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Иван, Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Иван Петров'', ''Пётр Петров'' и ''Сидор Петров''.&lt;br /&gt;
&lt;br /&gt;
Зафиксируем &amp;lt;tex&amp;gt;LastName = Сидоров&amp;lt;/tex&amp;gt;. Отфильтровав по этому условию отношение &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;, получим &amp;lt;tex&amp;gt;Id = \{3\}&amp;lt;/tex&amp;gt;. Поделив отношение &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; на это, получим &amp;lt;tex&amp;gt;FirstName = \{Пётр, Сидор\}&amp;lt;/tex&amp;gt;. Поэтому в ответе есть ''Пётр Сидоров'' и ''Сидор Сидоров''.&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \{(x, z) \in \pi_X(A) \times \pi_Z(B) \, | \, \forall y \in \pi_Y(\sigma_{Z=z}(B)): \,\, (x, y) \in A\}&amp;lt;/tex&amp;gt; — интерпретация определения на языке кванторов&lt;br /&gt;
* &amp;lt;tex&amp;gt;A ⋇ B = \pi_X(A) \times \pi_Z(B) \setminus \pi_{XZ}(\pi_X(A) \times B \setminus A \Join B)&amp;lt;/tex&amp;gt; — выражение большого деления через простейшие операции реляционной алгебры&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81362</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81362"/>
				<updated>2021-12-14T15:57:58Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: Соединения&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из нескольких отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Естественным соединением''' (англ. ''Natural join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \Join R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их естественным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
''Замечание.'' Здесь и далее под теоретико-множественными операциями над отношениями (мощность отношения, включение одного отношения в другое и т.д.) будем иметь ввиду соответствующие операции над телами отношений.&lt;br /&gt;
&lt;br /&gt;
* Если &amp;lt;tex&amp;gt;|R_1| = m&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;|R_2| = n&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;0 \leq |R_1 \Join R_2| \leq mn&amp;lt;/tex&amp;gt;.&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = 0&amp;lt;/tex&amp;gt; достигается, если у общих атрибутов в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; нет равных значений&lt;br /&gt;
** &amp;lt;tex&amp;gt;|R_1 \Join R_2| = mn&amp;lt;/tex&amp;gt; достигается, в частности, при отсутствии общих атрибутов у &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; (в такой ситуации естественное соединение совпадает с полным: &amp;lt;tex&amp;gt;R_1 \Join R_2 = R_1 \times R_2&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым соединением''' (англ. ''Left join'' или ''Left outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым соединением''' (англ. ''Right join'' или ''Right outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним соединением''' (англ. ''Outer join'' или ''Full outer join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей, полученных всевозможными соединениями кортежей &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2&amp;lt;/tex&amp;gt; (левое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2&amp;lt;/tex&amp;gt; (правое соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2&amp;lt;/tex&amp;gt; (внешнее соединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Непосредственно из определений вытекают следующие свойства:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus \pi_{R_1}(R_1 \Join R_2)) \cup (R_2 \setminus \pi_{R_2}(R_1 \Join R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из этих свойств, в свою очередь, следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = R_2 \, ⟖ \, R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \, ⟕ \, R_2) \cup (R_1 \, ⟖ \, R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым полусоединением''' (англ. ''Left semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым полусоединением''' (англ. ''Right semijoin'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок равен заголовку &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело состоит из кортежей в &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, для которых существует кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; с равными значениями одноимённых атрибутов. Обозначение: &amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 \ltimes R_2&amp;lt;/tex&amp;gt; (левое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;tex&amp;gt;R_1 \rtimes R_2&amp;lt;/tex&amp;gt; (правое полусоединение) равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определения следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = \pi_{R_1}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \rtimes R_2 = \pi_{R_2}(R_1 \Join R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \ltimes R_2 = R_2 \rtimes R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из соответствующих свойств внешних соединений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟕ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟖ \, R_2 = (R_1 \Join R_2) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \, ⟗ \, R_2 = (R_1 \Join R_2) \cup (R_1 \setminus (R_1 \ltimes R_2)) \cup (R_2 \setminus (R_1 \rtimes R_2))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Условным соединением''' (англ. ''Conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Левым условным соединением''' (англ. ''Left conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 ⟕_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Правым условным соединением''' (англ. ''Right conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; не соответствует ни одного кортежа из &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt;, то в результат добавляется этот кортеж из &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 ⟖_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Внешним условным соединением''' (англ. ''Outer conditional join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, по условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt; называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а кортежами тела являются всевозможные конкатенации кортежей тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, удовлетворяющих условию &amp;lt;tex&amp;gt;\theta&amp;lt;/tex&amp;gt;. Если в результате кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: &amp;lt;tex&amp;gt;R_1 ⟗_{\theta} R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения (&amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt; соответственно):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|}&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt;R_1 ⟕_{\text{length(FirstName)}+2&amp;lt;\text{length(LastName)}} R_2&amp;lt;/tex&amp;gt; равно:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Плюшкин&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Свойства===&lt;br /&gt;
&lt;br /&gt;
Из определений следует:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 \times_{\theta} R_2 = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 ⟕_{\theta} R_2 = J \cup (R_1 \setminus \pi_{R_1}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 ⟖_{\theta} R_2 = J \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 ⟗_{\theta} R_2 = J \cup (R_1 \setminus \pi_{R_1}(J)) \cup (R_2 \setminus \pi_{R_2}(J))&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;J = \sigma_{\theta}(R_1 \times R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Из свойств выше нетрудно вывести:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 ⟕_{\theta} R_2 = R_2 ⟖_{\theta} R_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
* &amp;lt;tex&amp;gt;R_1 ⟗_{\theta} R_2 = (R_1 ⟕_{\theta} R_2) \cup (R_1 ⟖_{\theta} R_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
==Деление==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
==Большое деление==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* ''Дейт К.'' Введение в системы баз данных (глава 7)&lt;br /&gt;
* ''Уидом Д., Ульман Д.'' Основы реляционных баз данных (главы 4 и 5)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81342</id>
		<title>Реляционная алгебра: соединения, деление</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0:_%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F,_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=81342"/>
				<updated>2021-12-14T11:46:08Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: Структура страницы; полное соединение&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Соединения=&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Соединение''' (англ. ''Join'') — общее наименование для бинарных операторов на отношениях, позволяющих некоторым образом соединить данные из нескольких отношений в одно.&lt;br /&gt;
}}&lt;br /&gt;
==Полное соединение==&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
'''Полным''', или '''декартовым соединением''' (англ. ''Cross join'', ''Cartesian join'') двух отношений &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, у которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;, а тело — декартовым произведением тел &amp;lt;tex&amp;gt;R_1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;R_2&amp;lt;/tex&amp;gt;. Обозначение: &amp;lt;tex&amp;gt;R_1 \times R_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
В случае, если у двух отношений есть хотя бы один общий атрибут в заголовке, их полное соединение не определено.&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два отношения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
Их полным соединением будет следующее отношение:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color:#FFF; text-align:center; padding:1000px&amp;quot;&lt;br /&gt;
!'''Id1'''&lt;br /&gt;
!'''FirstName'''&lt;br /&gt;
!'''Id2'''&lt;br /&gt;
!'''LastName'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Иван&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Пётр&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|1&lt;br /&gt;
|Иванов&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|3&lt;br /&gt;
|Петров&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Сидор&lt;br /&gt;
|4&lt;br /&gt;
|Сидоров&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Естественное соединение==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
==Внешние соединения==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
==Полусоединения==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
==Условные соединения==&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
=Деление=&lt;br /&gt;
&lt;br /&gt;
'''TODO'''&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=81341</id>
		<title>Базы данных</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=81341"/>
				<updated>2021-12-14T10:37:53Z</updated>
		
		<summary type="html">&lt;p&gt;Masmirnov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.kgeorgiy.info/courses/dbms/index.html&lt;br /&gt;
&lt;br /&gt;
==Ответник== &lt;br /&gt;
&lt;br /&gt;
# [[Развитие баз данных]]&lt;br /&gt;
# [[Архитектура современной СУБД]]&lt;br /&gt;
# [[Физическая модель базы данных]]&lt;br /&gt;
# [[Модель сущность-связь]]&lt;br /&gt;
# [[Преобразование модели сущность-связь в физическую модель]]&lt;br /&gt;
# [[Реляционная модель данных. Ключи]]&lt;br /&gt;
# [[Функциональные зависимости: замыкание, эквивалентность и правила вывода]]&lt;br /&gt;
# [[Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение]]&lt;br /&gt;
# [[Цели и средства нормализации]]&lt;br /&gt;
# [[Нормальные формы: первая и вторая]]&lt;br /&gt;
# [[Нормальные формы: третья и Бойса-Кодда]]&lt;br /&gt;
# [[Многозначные зависимости и четвертая нормальная форма]]&lt;br /&gt;
# [[Зависимости соединения и пятая нормальная форма]]&lt;br /&gt;
# [[Процесс нормализации и другие нормальные формы]]&lt;br /&gt;
# [[Реляционная алгебра]]&lt;br /&gt;
# [[Реляционная алгебра: унарные операции]]&lt;br /&gt;
# [[Реляционная алгебра: операции над множествами]]&lt;br /&gt;
# [[Реляционная алгебра: соединения, деление]]&lt;br /&gt;
# [[Реляционная алгебра: деление и операции над данными|Реляционная алгебра: операции над данными]]&lt;br /&gt;
# [[Исчисление кортежей и его реляционная полнота]]&lt;br /&gt;
# [[Исчисление доменов и его реляционная полнота]]&lt;br /&gt;
# [[Datalog и рекурсия]]&lt;br /&gt;
# [[Целостность данных. Триггеры]]&lt;br /&gt;
# [[Представления и их обновление]]&lt;br /&gt;
# [[Управление доступом к данным]]&lt;br /&gt;
# [[Подсистема хранения данных]]&lt;br /&gt;
# [[Индексация данных. Упорядоченные и хеш-индексы]]&lt;br /&gt;
# [[Индексация данных. Другие типы индексов. Применение индексов]]&lt;br /&gt;
# [[Хранимые процедуры и функции. Сходства и различия]]&lt;br /&gt;
# [[Императивное подмножество SQL]]&lt;br /&gt;
# [[Data Control Language]]&lt;br /&gt;
# [[Курсоры]]&lt;br /&gt;
# [[Хранимые функции]]&lt;br /&gt;
# [[Транзакции. Восстановление. Классический алгоритм]]&lt;br /&gt;
# [[Транзакции. Восстановление. Алгоритм ARIES]]&lt;br /&gt;
# [[Транзакции. Параллельное исполнение. Блокировки]]&lt;br /&gt;
# [[Транзакции. Параллельное исполнение. Уровни изоляции]]&lt;br /&gt;
# [[Этапы обработки запроса. Перезапись запросов]]&lt;br /&gt;
# [[Оптимизация запросов. Выбор структуры исполнения запроса]]&lt;br /&gt;
# [[Оптимизация запросов. Выбор методов исполнения запроса]]&lt;br /&gt;
# [[Оптимизация запросов. Оценка размера и распределения]]&lt;br /&gt;
# [[Секционирование]]&lt;br /&gt;
# [[Репликация]]&lt;br /&gt;
# [[Распределенные транзакции]]&lt;br /&gt;
# [[Распределенные базы данных. Цели и проблемы]]&lt;br /&gt;
# [[Иерархические данные. Модель близости]]&lt;br /&gt;
# [[Иерархические данные. Вложенные множества]]&lt;br /&gt;
# [[Иерархические данные. Модель путей]]&lt;br /&gt;
# [[Временны́е данные. Полутемпоральные базы данных]]&lt;br /&gt;
# [[Временны́е данные. Модель интервалов]]&lt;br /&gt;
# [[Временны́е данные. Модель событий]]&lt;br /&gt;
# [[ORM. Ключи и ссылки]]&lt;br /&gt;
# [[ORM. Наследование]]&lt;br /&gt;
# [[ORM. Модель сущность-атрибут-значение]]&lt;br /&gt;
&lt;br /&gt;
=== [[Практические навыки по Базам данных|Практические навыки]] ===&lt;br /&gt;
&lt;br /&gt;
Используем категорию &amp;lt;nowiki&amp;gt;[[Категория: Базы данных]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Базы данных]]&lt;/div&gt;</summary>
		<author><name>Masmirnov</name></author>	</entry>

	</feed>