Реляционная алгебра — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Добавлен текст)
Строка 1: Строка 1:
 
==Запросы. Мотивация==
 
==Запросы. Мотивация==
  
Базы данных подразумевают не только хранение данных, но и запросы, позволяющие эти данные так или иначе получать. Как минимум, запросы нужны для следующих действий:
+
Предположим, что так или иначе мы научились проектировать базы данных. Теперь хотелось бы их использовать. Действительно,
* Выборка данных: достаем данные из БД, чтобы их как-то использовать уже извне;
+
базы данных не только хранить данные, но и делать выборки, изменять их каким-либо образом. Для этого вводится понятие запроса.
* Область действия обновлений: часто в запросах обновления (например, UPDATE или DELETE) необходимо указывать область данных, на которые этот запрос распостраняется;
+
При первом рассмотрении, запросы нужны как минимум для выполнения следующих действий:
* Ограничения целостности: до сих пор было только два вида ограничений (ключи и внешние ключи). Использование запросов позволит расширить инструментарий;
+
* Выборка данных: получить данные из базы, чтобы тем или иным способом обрабатывать их уже извне.
 +
* Область действия обновлений: запросы позволят указывать область действия тех или иных операций, что крайне полезно. Например, к таким операциям относятся операции удаления или изменения данных: хочется указывать, на какие именно записи эти операции подействуют.
 +
* Ограничения целостности: до сих пор было только два вида ограничений (ключи и внешние ключи). Некоторые базы данных позволяют создавать произвольные ограничения целостности, заданные на поддерживаемом языке. В рамках этих ограничений очень удобно пользоваться запросами.
 
* Ограничения доступа.
 
* Ограничения доступа.
 +
 +
Одним из способов описания запросов является реляционная алгебра.
  
 
== Реляционная алгебра ==
 
== Реляционная алгебра ==
  
В рамках курса рассматривается несколько подходов к описанию запросов. Один из них {{---}} реляционная алгебра.
 
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
'''Реляционная алгебра''' {{---}} императивный язык для работы с отношениями. Носитель в терминах алгебры над отношениями {{---}} множество всех отношений. Далее будут определены операции, замкнутые над носителем, и ограничения, им соответствующие.
+
'''Реляционная алгебра''' {{---}} алгебра над множеством всех [[Реляционная_модель_данных._Ключи|отношений]]. Далее будут определены операции, замкнутые над носителем, и ограничения, им соответствующие.
 
}}
 
}}
 +
 +
В целом, реляционная алгебра {{---}} это императивный язык для работы с отношениями: он позволяет в явном виде, по действиям, описать, каким образом получить требуемый результат.
  
 
== Примеры операций ==
 
== Примеры операций ==
  
* Проекция: <tex>\pi_A(R)</tex>;
+
В качестве примеров рассмотрим несколько простых операций в рамках реляционной алгебры.
* Естественное соединение: <tex>R_1 \bowtie R_2</tex>.
 
  
'''Замечание'''. Поскольку все операции в алгебре замкнуты по определению, можно комбинировать применения тех или иных операций любым разумным способом. Например: <tex>\pi_A(R_1 \bowtie \pi_B(R_2)) \bowtie R_3</tex>.
+
* Проекция: <tex>\pi_A(R)</tex>. Проекция отношения <tex>R</tex> на набор атрибутов <tex>A</tex>.
 +
* Естественное соединение: <tex>R_1 \bowtie R_2</tex>. Естественное соединение отношений <tex>R_1</tex> и <tex>R_2</tex>.
  
== Отношения и операции ==
+
Все операции в алгебре замкнуты по определению, поэтому можно комбинировать применения тех или иных операций любым разумным способом. Например: <tex>\pi_A(R_1 \bowtie \pi_B(R_2)) \bowtie R_3</tex>.
  
Для определения операций будет полезным уточнить, что такое отношение.
+
== Операции ==
{{Определение
 
|definition=
 
'''Отношение''' {{---}} пара из заголовка и тела.
 
}}
 
  
{{Определение
+
В текущем контексте полезно уточнить, что именно понимается под операцией над отношениями в рамках реляционной алгебры. А именно, для того, чтобы определить операцию, необходимо определить следующее:
|definition=
+
* Правило построения заголовка по заданным отношениям.
'''Операция''' {{---}} правило построения заголовка и тела по заданным отношениям, а так же набор условий, при которых операция применима.
+
* Правило построения тела по заданным отношениям.
}}
+
* Условия, при которых операция выполнима, то есть ограничения на отношения, к которым она применяется.

Версия 15:37, 22 декабря 2021

Запросы. Мотивация

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

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

Одним из способов описания запросов является реляционная алгебра.

Реляционная алгебра

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


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

Примеры операций

В качестве примеров рассмотрим несколько простых операций в рамках реляционной алгебры.

  • Проекция: [math]\pi_A(R)[/math]. Проекция отношения [math]R[/math] на набор атрибутов [math]A[/math].
  • Естественное соединение: [math]R_1 \bowtie R_2[/math]. Естественное соединение отношений [math]R_1[/math] и [math]R_2[/math].

Все операции в алгебре замкнуты по определению, поэтому можно комбинировать применения тех или иных операций любым разумным способом. Например: [math]\pi_A(R_1 \bowtie \pi_B(R_2)) \bowtie R_3[/math].

Операции

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

  • Правило построения заголовка по заданным отношениям.
  • Правило построения тела по заданным отношениям.
  • Условия, при которых операция выполнима, то есть ограничения на отношения, к которым она применяется.