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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Отличия от реляционной алгебры)
Строка 31: Строка 31:
 
Соответсвующий запрос в терминах исчисления кортежей (S {{---}} Students, G {{---}} Groups):
 
Соответсвующий запрос в терминах исчисления кортежей (S {{---}} Students, G {{---}} Groups):
 
  <font color = blue>select</font> S.SId <font color = blue>from</font> S
 
  <font color = blue>select</font> S.SId <font color = blue>from</font> S
  <font color = blue>where </font>G (S.GId = G.GId <font color = blue>∧</font> G.Name = 'M34371')
+
  <font color = blue>where \exists </font>G (S.GId = G.GId <font color = blue>∧</font> G.Name = <font color = green>'M34371'</font>)
 
То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.
 
То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.

Версия 22:16, 19 декабря 2021

В этом разделе будет рассмотрен подход к формированию запросов, основанный на описании данных, которые необходимо получить.

Реляционное исчисление

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

Выделяют две разновидности реляционного исчисления:

  • Исчисление кортежей;
  • Исчисление доменов.

Структура запросов

Запросы в обоих видах исчислений устроены одинаково:

  • Определение переменных;
  • Определение атрибутов результата и свойств, которым они должны удовлетворять.

Синтаксис

Определения переменных
select СписокАтрибутов
from Переменные
where Условие

Отличия от реляционной алгебры

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

Запрос в реляционной алгебре состоит из естественного соединения студентов с номерами групп, затем фильтрации по номеру группы и получения идентификаторов студентов: [math]\pi_{SId}(\sigma_{Name=M34371}(Students \bowtie Groups))[/math]. По шагам описали, что необходимо сделать.

Соответсвующий запрос в терминах исчисления кортежей (S — Students, G — Groups):

select S.SId from S
where \exists G (S.GId = G.GId  G.Name = 'M34371')

То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.