<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;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</id>
	<title>Реляционная алгебра - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;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"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/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&amp;action=history"/>
	<updated>2026-07-19T10:48:44Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/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&amp;diff=45745&amp;oldid=prev</id>
		<title>imported&gt;Naut-rena: удаление ссылки на википедию в качестве источника</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/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&amp;diff=45745&amp;oldid=prev"/>
		<updated>2026-03-12T22:26:50Z</updated>

		<summary type="html">&lt;p&gt;удаление ссылки на википедию в качестве источника&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Реляционная [[алгебра]]&amp;#039;&amp;#039;&amp;#039; — замкнутая система [[Операция (математика)|операций]] над [[Отношение (реляционная модель)|отношениями]] в [[Реляционная модель данных|реляционной модели данных]]. Операции реляционной алгебры также называют &amp;#039;&amp;#039;реляционными операциями&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Первоначальный набор из 8 операций был предложен [[Кодд, Эдгар|Э. Коддом]] в 1970-е годы и включал как операции, которые до сих пор используются ([[Реляционная алгебра#Проекция|проекция]], [[Реляционная алгебра#Соединение|соединение]] и т. д.), так и операции, которые не вошли в употребление (например, [[Реляционная алгебра#Деление|деление]] отношений).&lt;br /&gt;
&lt;br /&gt;
В процессе развития реляционной теории и практики было предложено несколько новых реляционных операций, например полусоединение (&amp;#039;&amp;#039;SEMI-JOIN&amp;#039;&amp;#039;) и полуразность, или анти-полусоединение (&amp;#039;&amp;#039;ANTI-SEMI-JOIN&amp;#039;&amp;#039;)&amp;lt;ref&amp;gt;{{Cite web |url=http://blogs.msdn.com/b/craigfr/archive/2006/07/19/671712.aspx |title=Introduction to Joins |access-date=2011-11-14 |archive-date=2011-11-26 |archive-url=https://web.archive.org/web/20111126073325/http://blogs.msdn.com/b/craigfr/archive/2006/07/19/671712.aspx |url-status=live }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Дейт, Кристофер. SQL и реляционная теория. Как грамотно писать код на SQL. — Символ-Плюс, 2010&amp;lt;/ref&amp;gt;, &amp;#039;&amp;#039;CROSS APPLY&amp;#039;&amp;#039; и &amp;#039;&amp;#039;OUTER APPLY&amp;#039;&amp;#039;, [[транзитивное замыкание]] (&amp;#039;&amp;#039;TCLOSE&amp;#039;&amp;#039;) и др.&lt;br /&gt;
&lt;br /&gt;
Поскольку многие операции выразимы друг через друга, в составе реляционной алгебры можно выделить несколько вариантов базиса (набора операций, через который выразимы все остальные). Наиболее известный и строго определённый базис ([[алгебра А]]) предложен [[Дейт, Кристофер|Кристофером Дейтом]] и [[Дарвен, Хью|Хью Дарвеном]]&amp;lt;ref&amp;gt;К. Дейт, Хью Дарвен. Основы будущих систем баз данных. Третий манифест. М: Янус-К, 2004.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Реляционная алгебра и [[реляционное исчисление]] эквивалентны по своей выразительной силе{{sfn|Грей|1989|с=188}}. Существуют правила преобразования запросов между ними.&lt;br /&gt;
&lt;br /&gt;
Основное применение реляционной алгебры — предоставить теоретическую основу для [[Реляционная база данных|реляционных баз данных]], особенно [[Язык запросов|языков запросов]] для таких баз данных, главным из которых является [[SQL]].&lt;br /&gt;
&lt;br /&gt;
== Замкнутость реляционной алгебры ==&lt;br /&gt;
Реляционная алгебра представляет собой набор таких операций над отношениями, что результат каждой из операций также является отношением. Это свойство алгебры называется &amp;#039;&amp;#039;замкнутостью&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Операции над одним отношением называются &amp;#039;&amp;#039;унарными&amp;#039;&amp;#039;, над двумя отношениями — &amp;#039;&amp;#039;бинарными&amp;#039;&amp;#039;, над тремя — &amp;#039;&amp;#039;тернарными&amp;#039;&amp;#039; (таковые практически неизвестны).&lt;br /&gt;
&lt;br /&gt;
Пример унарной операции — проекция, пример [[Бинарная операция|бинарной операции]] — объединение.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;N&amp;#039;&amp;#039;-арную реляционную операцию &amp;#039;&amp;#039;f&amp;#039;&amp;#039; можно представить функцией, возвращающей отношение и имеющей &amp;#039;&amp;#039;n&amp;#039;&amp;#039; отношений в качестве аргументов:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;R = f(R_1, R_2,\dots, R_n)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поскольку реляционная алгебра является замкнутой, в качестве операндов в реляционные операции можно подставлять другие выражения реляционной алгебры (подходящие по типу):&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;R = f(f_1(R_{11},R_{12},\dots),f_2(R_{21},R_{22},\dots),\dots)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В реляционных выражениях можно использовать вложенные выражения сколь угодно сложной структуры.&lt;br /&gt;
&lt;br /&gt;
== Ограничения на операции ==&lt;br /&gt;
Некоторые реляционные операции, в частности, операции &amp;#039;&amp;#039;объединения&amp;#039;&amp;#039;, &amp;#039;&amp;#039;пересечения&amp;#039;&amp;#039; и &amp;#039;&amp;#039;вычитания&amp;#039;&amp;#039;, требуют, чтобы отношения имели совпадающие (одинаковые) заголовки (схемы). Это означает, что совпадают количество атрибутов, названия атрибутов и тип ([[Домен (базы данных)|домен]]) одноимённых атрибутов.&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;#039;&amp;#039;R&amp;#039;&amp;#039; RENAME &amp;#039;&amp;#039;Atr&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, Atr&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039; … AS &amp;#039;&amp;#039;NewAtr&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, NewAtr&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039; …&lt;br /&gt;
где &amp;lt;br&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;R&amp;#039;&amp;#039; — отношение&lt;br /&gt;
: &amp;#039;&amp;#039;Atr&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, Atr&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039; … — исходные имена атрибутов&lt;br /&gt;
: &amp;#039;&amp;#039;NewAtr&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, NewAtr&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039; … — новые имена атрибутов.&lt;br /&gt;
&lt;br /&gt;
=== Объединение ===&lt;br /&gt;
[[Файл:Venn0111.svg|thumb|[[Диаграмма Венна]] для &amp;lt;math&amp;gt;A \cup B&amp;lt;/math&amp;gt; (объединение).]]&lt;br /&gt;
&lt;br /&gt;
Отношение с тем же заголовком, что и у совместимых по типу отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, и телом, состоящим из [[Кортеж (информатика)|кортежей]], принадлежащих или &amp;#039;&amp;#039;A&amp;#039;&amp;#039;, или &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, или обоим отношениям. &amp;lt;br&amp;gt;&lt;br /&gt;
Синтаксис: &amp;lt;br&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; UNION &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Пересечение ===&lt;br /&gt;
[[Файл:Venn0001.svg|thumb|[[Диаграмма Венна]] для &amp;lt;math&amp;gt;A \cap B&amp;lt;/math&amp;gt; (пересечение).]]&lt;br /&gt;
&lt;br /&gt;
Отношение с тем же заголовком, что и у отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
Синтаксис: &amp;lt;br&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; INTERSECT &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Вычитание ===&lt;br /&gt;
[[Файл:Venn0100.svg|thumb|[[Диаграмма Венна]] для &amp;lt;math&amp;gt;A \setminus B&amp;lt;/math&amp;gt; (вычитание).]]&lt;br /&gt;
&lt;br /&gt;
Отношение с тем же заголовком, что и у совместимых по типу отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, и телом, состоящим из кортежей, принадлежащих отношению &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и не принадлежащих отношению &amp;#039;&amp;#039;B&amp;#039;&amp;#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
Синтаксис: &amp;lt;br&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; MINUS &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Операция присваивания ===&lt;br /&gt;
Операция присваивания (:=) позволяет сохранить результат вычисления реляционного выражения в существующем отношении.&lt;br /&gt;
&lt;br /&gt;
=== [[Декартово произведение]] ===&lt;br /&gt;
Отношение, заголовок (&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;) которого является сцеплением заголовков отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039;(&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;) и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;(&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;), а тело состоит из кортежей, являющихся всеми вариантами сцеплений кортежей отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039;: (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …,&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
таких, что&lt;br /&gt;
: (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;) ∈ &amp;#039;&amp;#039;A&amp;#039;&amp;#039;,&lt;br /&gt;
: (&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;) ∈ &amp;#039;&amp;#039;B&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Синтаксис:&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; TIMES &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Выборка (ограничение) ===&lt;br /&gt;
Отношение с тем же заголовком, что и у отношения &amp;#039;&amp;#039;A&amp;#039;&amp;#039;, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие &amp;#039;&amp;#039;c&amp;#039;&amp;#039; дают значение ИСТИНА. &amp;#039;&amp;#039;c&amp;#039;&amp;#039; представляет собой [[логическое выражение]], в которое могут входить атрибуты отношения &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и/или скалярные выражения. &amp;lt;br&amp;gt;&lt;br /&gt;
Синтаксис: &amp;lt;br&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; WHERE &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Выборка]] записывается как &amp;lt;math&amp;gt;\sigma_{a \theta b}( R )&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\sigma_{a \theta v}( R )&amp;lt;/math&amp;gt; где:&lt;br /&gt;
* {{mvar|a}} и {{mvar|b}} — имена атрибутов&lt;br /&gt;
* {{mvar|&amp;amp;theta;}} — одна из бинарных операций &amp;lt;math&amp;gt;\{\;&amp;lt;, \le, =, \ne, \ge, \;&amp;gt;\}&amp;lt;/math&amp;gt;&lt;br /&gt;
* {{mvar|v}} — постоянная величина&lt;br /&gt;
* {{mvar|R}} отношение&lt;br /&gt;
&lt;br /&gt;
=== Проекция ===&lt;br /&gt;
Проекцией кортежа &amp;lt;math&amp;gt;t = {\{(a, v) \ | \ a \in A, v \in D\}}&amp;lt;/math&amp;gt;, отвечающего множеству атрибутов &amp;lt;math&amp;gt;A = \{A_1,\ A_2, \ ..., \ A_n \}&amp;lt;/math&amp;gt;, на подмножество &amp;lt;math&amp;gt;A&amp;#039; = \{A_{i_1},\;A_{i_2},\;\ldots,\;A_{i_k}\}&amp;lt;/math&amp;gt; множества атрибутов исходного кортежа называется кортеж&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;t[A&amp;#039;] = {\{(a, v) \ | \ (a, v) \in t, a \in A&amp;#039;\}}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
полученный из исходного кортежа удалением пар, содержащих атрибуты, не входящие в множество атрибутов &amp;lt;math&amp;gt;A&amp;#039;&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Проекция — [[унарная операция]], которая позволяет получить «вертикальное» [[подмножество]] данного [[Отношение (реляционная модель)|отношения]], то есть такое подмножество, которое получается выбором специфицированных [[атрибут]]ов с последующим исключением, если это необходимо, избыточных [[дубликат]]ов [[Кортеж (информатика)|кортежей]].&lt;br /&gt;
Пусть дано отношение &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; с именами атрибутов &amp;lt;math&amp;gt;A_1,\;A_2,\;\ldots,\;A_n&amp;lt;/math&amp;gt;, то есть &amp;lt;math&amp;gt;A(A_1,\;A_2,\;\ldots,\;A_n)&amp;lt;/math&amp;gt; и некоторое подмножество &amp;lt;math&amp;gt;\{A_{i_1},\;A_{i_2},\;\ldots,\;A_{i_k}\}&amp;lt;/math&amp;gt; множества имён атрибутов. Результатом проекции отношения по выбранным именам атрибутов называется новое отношение &amp;lt;math&amp;gt;A(A_{i_1},\;A_{i_2},\;\ldots,\;A_{i_k})&amp;lt;/math&amp;gt; с телом, состоящим из проекций кортежей исходного отношения &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; на множество имен атрибутов &amp;lt;math&amp;gt;\{A_{i_1},\;A_{i_2},\;\ldots,\;A_{i_k}\}&amp;lt;/math&amp;gt;. Другими словами, новое отношение получается из исходного вычёркиванием атрибутов, не входящих в выбранное множество, с последующим возможным удалением избыточных дубликатов кортежей.&lt;br /&gt;
&lt;br /&gt;
При осуществлении проекции необходимо задать проецируемое отношение и некий набор его атрибутов, который станет заголовком результирующего.&lt;br /&gt;
&lt;br /&gt;
При выполнении проекции выделяется «вертикальная» вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.&lt;br /&gt;
&lt;br /&gt;
Синтаксис: &amp;lt;br&amp;gt;&lt;br /&gt;
: A[X, Y, …, Z]&lt;br /&gt;
или &amp;lt;br&amp;gt;&lt;br /&gt;
: PROJECT &amp;#039;&amp;#039;A {x, y, …, z}&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Соединение ===&lt;br /&gt;
{{main|Операция соединения (реляционная алгебра)}}&lt;br /&gt;
Операция соединения отношений &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039; по [[Предикат|предикату]] &amp;#039;&amp;#039;P&amp;#039;&amp;#039; логически эквивалентна [[Композиция функций|последовательному применению]] операций декартова произведения &amp;#039;&amp;#039;A&amp;#039;&amp;#039; и &amp;#039;&amp;#039;B&amp;#039;&amp;#039; и выборки по предикату &amp;#039;&amp;#039;P&amp;#039;&amp;#039;. Если в отношениях имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.&lt;br /&gt;
&lt;br /&gt;
Синтаксис:&lt;br /&gt;
: (&amp;#039;&amp;#039;A&amp;#039;&amp;#039; TIMES &amp;#039;&amp;#039;B&amp;#039;&amp;#039;) WHERE &amp;#039;&amp;#039;P&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Деление ===&lt;br /&gt;
Отношение с заголовком &amp;#039;&amp;#039;(X&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, X&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, X&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)&amp;#039;&amp;#039; и телом, содержащим множество кортежей &amp;#039;&amp;#039;(x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)&amp;#039;&amp;#039;, таких, что для всех кортежей &amp;#039;&amp;#039;(y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, y&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;) ∈ B&amp;#039;&amp;#039; в отношении &amp;#039;&amp;#039;A(X&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, X&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, X&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;, Y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, Y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, Y&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;)&amp;#039;&amp;#039; найдётся кортеж &amp;#039;&amp;#039;(x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;, y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, …, y&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;)&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Синтаксис:&lt;br /&gt;
: &amp;#039;&amp;#039;A&amp;#039;&amp;#039; DIVIDEBY &amp;#039;&amp;#039;B&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Выразимость одних операций через другие ==&lt;br /&gt;
Некоторые из реляционных операций могут быть выражены через другие реляционные операторы.&lt;br /&gt;
; Оператор соединения&lt;br /&gt;
Оператор соединения определяется через операторы декартова произведения и выборки следующим образом:&lt;br /&gt;
: (A TIMES B) WHERE X=Y&lt;br /&gt;
: где X и Y атрибуты соответственно отношений A и B с первоначально равными именами.&lt;br /&gt;
; Оператор пересечения&lt;br /&gt;
Оператор пересечения выражается через [[вычитание]] следующим образом:&lt;br /&gt;
: A INTERSECT B = A MINUS (A MINUS B)&lt;br /&gt;
; Оператор деления&lt;br /&gt;
Оператор деления выражается через операторы вычитания, декартова произведения и проекции следующим образом:&lt;br /&gt;
: A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X]&lt;br /&gt;
&lt;br /&gt;
== Реализации ==&lt;br /&gt;
Первым языком запросов, основанным на алгебре Кодда, был Alpha, разработанный самим Коддом. Впоследствии был создан ISBL, и эта новаторская работа была оценена многими авторитетными специалистами&amp;lt;ref&amp;gt;{{cite web |title = Edgar F. Codd - A.M. Turing Award Laureate |url = https://amturing.acm.org/award_winners/codd_1000892.cfm |author = C. J. Date |website = amturing.acm.org |access-date = 2020-12-27 |archive-date = 2017-12-23 |archive-url = https://web.archive.org/web/20171223141345/http://amturing.acm.org/award_winners/codd_1000892.cfm |url-status = live }}&amp;lt;/ref&amp;gt; как показывающая способ превратить идею Кодда в полезный язык. Business System 12 была недолговечной [[Реляционная СУБД|реляционной СУБД]], которая последовала примеру ISBL.&lt;br /&gt;
&lt;br /&gt;
В 1998 году [[Дейт, Кристофер|Кристофер Дэйт]] и Хью Дарвен предложили язык под названием [[Tutorial D]], предназначенный для использования в преподавании теории реляционных баз данных, этот язык запросов также был основан на идеях ISBL. Rel — это реализация Tutorial D.&lt;br /&gt;
&lt;br /&gt;
Даже язык запросов [[SQL]] слабо основан на реляционной алгебре, хотя операнды в SQL ([[Таблица (база данных)|таблицы]]) это не совсем [[Отношение (реляционная модель)|отношения]], и несколько полезных теорем реляционной алгебры не выполняются в SQL (возможно, в ущерб оптимизаторам и/или пользователям). Модель таблицы SQL — это [[мультимножество]], а не [[множество]]. Например, выражение &amp;lt;math&amp;gt;(R \cup S) \setminus T = (R \setminus T) \cup (S \setminus T)&amp;lt;/math&amp;gt; — это теорема реляционной алгебры на множествах, но не реляционной алгебры на мультимножествах; для изучения реляционной алгебры на мультимножествах см. главу 5 «Полного» учебника [[Гарсия-Молина, Гектор|Гарсиа-Молины]], [[Ульман, Джеффри Дэвид|Ульмана]] и Видома&amp;lt;ref name=&amp;quot;Garcia-MolinaUllman2009&amp;quot;&amp;gt;{{cite book |author1 = [[Гарсия-Молина, Гектор|Hector Garcia-Molina]] |author2 = [[Ульман, Джеффри Дэвид|Jeffrey D. Ullman]] |author3 = Jennifer Widom |title = Database systems: the complete book |ссылка = https://archive.org/details/databasesystemsc0000_2ndedgarc|year = 2009 |publisher = Pearson Prentice Hall |isbn = 978-0-13-187325-4 |edition = 2nd }}&amp;lt;/ref&amp;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;
|original=Logic, algebra and databases&lt;br /&gt;
|место=М.&lt;br /&gt;
|издательство=Машиностроение&lt;br /&gt;
|год=1989&lt;br /&gt;
|страниц=368&lt;br /&gt;
|страницы=188—213&lt;br /&gt;
|ref=Грей&lt;br /&gt;
}}&lt;br /&gt;
* {{книга&lt;br /&gt;
|автор = [[Дейт, Кристофер|Дейт К. Дж.]]&lt;br /&gt;
|заглавие = [[Введение в системы баз данных]]&lt;br /&gt;
|оригинал = Introduction to Database Systems&lt;br /&gt;
|ссылка = &lt;br /&gt;
|издание = 8-е изд&lt;br /&gt;
|место =  М.&lt;br /&gt;
|издательство = [[Вильямс (издательство)|Вильямс]]&lt;br /&gt;
|год = 2005&lt;br /&gt;
|страниц = 1328&lt;br /&gt;
|isbn = 5-8459-0788-8  (рус.) 0-321-19784-4 (англ.)&lt;br /&gt;
|ref=Дейт К. Дж.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* http://www.citforum.ru/database/dblearn/&lt;br /&gt;
&lt;br /&gt;
{{databases}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Реляционная алгебра|*]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Naut-rena</name></author>
	</entry>
</feed>