Изменения

Перейти к: навигация, поиск

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

3331 байт добавлено, 19:36, 4 сентября 2022
м
rollbackEdits.php mass rollback
В этом разделе рассматривается такой будет рассмотрен подход к формированию запросов, как реляционное исчисление. В отличие от [[Реляционная_алгебра|реляционной алгебры]], он основан основанный на описании тогоданных, какие данные которые необходимо получить.
== Реляционное исчисление ==
{{Определение
|definition=
'''Реляционное исчисление''' {{---}} декларативный язык для работы с отношениями, описывающий свойства требуемого результатакакими свойствами должен обладать требуемый результат.
}}
В отличие от [[Реляционная алгебра | реляционной алгебры]] не описываем, как будет получен результат.
Выделяют две разновидности реляционного исчисления:
* Исчисление кортежей{{---}} переменные принимают значения кортежа целиком;* Исчисление доменов{{---}} каждая переменная принимает одно атомарное значение из какого-то домена. == Структура запросов ==Запросы в обоих видах исчислений устроены одинаково: сначала определяем переменные, с которыми будем работать, а затем определяем атрибуты результата из наборов переменных и свойства, которым они должны удовлетворять. Для реализации описанного поведения в реляционном исчисление используется стандартная конструкция select-from-where, как и в [[Реляционная алгебра|реляционной алгебре]]. В секции select указываются интересующие атрибуты, в секции from указываются переменные, из которых берутся соответствующие атрибуты, а в секции where ограничивающие условия. С точки зрения синтаксиса запрос выглядит так: <font color = red>Определения переменных</font> <font color = blue>select</font> <font color = red>СписокАтрибутов</font> <font color = blue>from</font> <font color = red>Переменные</font> <font color = blue>where</font> <font color = red>Условие</font> == Отличия от реляционной алгебры ==Рассмотрим разницу между [[Реляционная алгебра | реляционной алгеброй]] и реляционным исчислением на примере: получить идентификаторы студентов, обучающихся в группе M34371. Запрос в реляционной алгебре состоит из естественного соединения студентов с номерами групп, затем фильтрации по номеру группы и получения идентификаторов студентов:<tex>\pi_{SId}(\sigma_{Name=M34371}(Students \bowtie Groups))</tex>. По шагам описали, что необходимо сделать. Соответсвующий запрос в терминах исчисления кортежей (S {{---}} Students, G {{---}} Groups): <font color = blue>select</font> S<font color = grey>.</font>SId <font color = blue>from</font> S <font color = blue>where $\exists$</font>G <font color = grey>(</font>S<font color = grey>.</font>GId <font color = grey>=</font> G<font color = grey>.</font>GId <font color = blue>∧</font> G<font color = grey>.</font>Name <font color = grey>=</font> <font color = green>'M34371'</font><font color = grey>)</font>То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.
1632
правки

Навигация