Реляционное исчисление — различия между версиями
(→Структура запросов) |
(→Реляционное исчисление) |
||
Строка 7: | Строка 7: | ||
'''Реляционное исчисление''' {{---}} декларативный язык для работы с отношениями, описывающий какими свойствами должен обладать требуемый результат. | '''Реляционное исчисление''' {{---}} декларативный язык для работы с отношениями, описывающий какими свойствами должен обладать требуемый результат. | ||
}} | }} | ||
− | В отличие от реляционной алгебры не описываем, как будет получен результат. | + | В отличие от [[Реляционная алгебра | реляционной алгебры]] не описываем, как будет получен результат. |
Выделяют две разновидности реляционного исчисления: | Выделяют две разновидности реляционного исчисления: |
Версия 23:22, 26 декабря 2021
В этом разделе будет рассмотрен подход к формированию запросов, основанный на описании данных, которые необходимо получить.
Содержание
Реляционное исчисление
Определение: |
Реляционное исчисление — декларативный язык для работы с отношениями, описывающий какими свойствами должен обладать требуемый результат. |
В отличие от реляционной алгебры не описываем, как будет получен результат.
Выделяют две разновидности реляционного исчисления:
- Исчисление кортежей — переменные принимают значения кортежа целиком;
- Исчисление доменов — каждая переменная принимает одно атомарное значение из какого-то домена.
Структура запросов
Запросы в обоих видах исчислений устроены одинаково:
- Сначала определение переменных, с которыми будем работать;
- Затем определение атрибутов результата из наборов переменных и свойств, которым они должны удовлетворять.
Синтаксис
Определения переменных select СписокАтрибутов from Переменные where Условие
Отличия от реляционной алгебры
Рассмотрим разницу между реляционной алгеброй и реляционным исчислением на примере: получить идентификаторы студентов, обучающихся в группе M34371.
Запрос в реляционной алгебре состоит из естественного соединения студентов с номерами групп, затем фильтрации по номеру группы и получения идентификаторов студентов:
. По шагам описали, что необходимо сделать.Соответсвующий запрос в терминах исчисления кортежей (S — Students, G — Groups):
select S.SId from S where $\exists$G (S.GId = G.GId ∧ G.Name = 'M34371')
То есть, не указываем, как конкретно собираемся исполнять запрос, а описали, какие студенты нас интересуют.