Реляционное исчисление — различия между версиями
Sashapff (обсуждение | вклад) (→Отличия от реляционной алгебры) |
Sashapff (обсуждение | вклад) (→Отличия от реляционной алгебры) |
||
Строка 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 color = blue>where ∃</font>G (S.GId = G.GId <font color = blue>∧</font> G.Name = <font color = green>'M34371'</font>) |
То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют. | То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют. |
Версия 22:21, 19 декабря 2021
В этом разделе будет рассмотрен подход к формированию запросов, основанный на описании данных, которые необходимо получить.
Содержание
Реляционное исчисление
Определение: |
Реляционное исчисление — декларативный язык для работы с отношениями, описывающий какими свойствами должен обладать требуемый результат. |
Выделяют две разновидности реляционного исчисления:
- Исчисление кортежей;
- Исчисление доменов.
Структура запросов
Запросы в обоих видах исчислений устроены одинаково:
- Определение переменных;
- Определение атрибутов результата и свойств, которым они должны удовлетворять.
Синтаксис
Определения переменных select СписокАтрибутов from Переменные where Условие
Отличия от реляционной алгебры
Рассмотрим разницу между реляционной алгеброй и реляционным исчислением на примере: получить идентификаторы студентов, обучающихся в группе M34371.
Запрос в реляционной алгебре состоит из естественного соединения студентов с номерами групп, затем фильтрации по номеру группы и получения идентификаторов студентов:
. По шагам описали, что необходимо сделать.Соответсвующий запрос в терминах исчисления кортежей (S — Students, G — Groups):
select S.SId from S where ∃G (S.GId = G.GId ∧ G.Name = 'M34371')
То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.