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

Материал из Викиконспекты
Версия от 19:30, 4 сентября 2022; Maintenance script (обсуждение | вклад) (rollbackEdits.php mass rollback)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

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

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

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

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

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


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

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

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

  • Проекция: [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].

Операции

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

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