Языки реляционных баз данных
7.5 Реляционное исчисление предикатов на кортежах
В реляционном исчислении на кортежах (Tuple Relation Calculus — TRC) правильные формулы строятся как описания условий, которым должны удовлетворять кортежи, образующие искомые отношения. Эти условия в простейшем варианте имеют вид: . Здесь — переменная, обозначающая некоторый кортеж, а —предикат. Формула исчисления кортежей описывает множество всех таких кортежей, для которых предикат принимает значение "истина". Общий вид правильно построенных формул исчисления на кортежах приведен в разделе 7.5.5.
7.5.1 Состав предиката Р(i) в исчислении на кортежах
Элементарными образующими предиката являются атомы трех видов — переменные кортежи, отношения между кортежами и отношения между кортежем и константой. Опишем их:
- Переменные кортежи: , где — отношение. Данный атом имеет значение "истина", если кортеж принадлежит отношению . При этом если отношение имеет схему , то и кортеж имеет такую же схему.
- Специфика реляционного исчисления на кортежах в том, что элементы рассматриваемого множества — это кортежи, которые обязательно принадлежат некоторым отношениям. И переменные в нем — это переменные кортежи.
- Пример: Пусть отношение СОТРУДНИК имеет схему {ИМЯ, ФАМИЛИЯ, ОТЧЕСТВО, ВОЗРАСТ}. Утверждение СОТРУДНИК, означает, что является кортежем отношения СОТРУДНИК, и имеет ту же схему: {ИМЯ, ФАМИЛИЯ, ОТЧЕСТВО, ВОЗРАСТ}.
- Отношения между кортежами (записываются в точечном синтаксисе): , где и — некоторые кортежи, и — имена атрибутов, и — множества атрибутов, причем и, а — оператор сравнения. Этот атом принимает значение "истина", тогда и только тогда, когда атрибут кортежа находится в отношении с атрибутом кортежа 1 Например, если СОТРУДНИК, то .ВОЗРАСТ < .ВОЗРАСТ истинно, если возраст сотрудника s меньше возраста сотрудника .
- Отношения между кортежем и константой: , где — некоторый кортеж, — имя атрибута ( ), а — константа из домена атрибута . Атом принимает значение "истина", если значение атрибута кортежа находится в отношении с константой . Например, .ВОЗРАСТ < 40 истинно, если возраст сотрудника меньше 40.
7.5.2 Правильно построенные формулы исчисления на кортежах
Могут использоваться логические операции, кванторы и скобки. Рекурсивное определение правильно построенных формул:
- Атом — это ППФ.
- Если и — ППФ, то будут ППФ.
- Если — ППФ, то — ППФ.
- Если — ППФ, то — ППФ.
- Если — ППФ, то - ППФ.
- Ничто иное не является ППФ.
Замечание. Квантор существования в инструментальном средстве WinRDBI обозначается как EXISTS, квантор всеобщности как FORALL.
7.5.3 Сопоставление операторов реляционной алгебры и формул исчисления на кортежах
- Объединение:
- Разность:
- Селекция:
Здесь и — отношения, — формула.
7.5.4 О реляционной полноте языка запросов
Как определено ранее, язык запросов к реляционной базе данных называется реляционно-полным, если он, по крайней мере, так же выразителен, как язык запросов реляционной алгебры. Иначе говоря, реляционно-полный язык позволяет, по крайней мере, моделировать язык запросов реляционной алгебры. Используемые в практике языки запросов "более чем полны" за счет:
- включения арифметики и вычисления однострочных функций;
- включения агрегатных (многострочных) функций;
- иногда за счет вычисления транзитивного замыкания отношения.
7.5.5 Синтаксис запросов TRC в WinRDBI
Запрос (ППФ) имеет вид: , где — формула исчисления, а — кортежные переменные, действующие как глобальные переменные в и определяющие схему результата.
Обозначим и — переменные кортежи, — атрибут, — константа уровня домена, — оператор сравнения. Тогда атомами будут: . Пусть — формулы. Тогда формулами будут: and . Если свободна (переменная свободна в формуле, если она не квантифицирована действием exists или forall) в , то формулами будут .
7.5.6 Реляционная полнота реляционного исчисления на кортежах
Как вы помните, для доказательства достаточно выразить операции реляционной алгебры через операции исследуемого исчисления. Сведем представления операций реляционной алгебры формулами реляционного исчисления на кортежах в таблицу 7.2.
Исчисление первого порядка на кортежах реляционно полно, так как мы смогли операции реляционной алгебры представить в виде операций реляционного исчисления на кортежах.
Реляционная алгебра | Реляционное исчисление на кортежах |
Рассмотрим несколько примеров.
7.5.7 Примеры запросов в исчислении на кортежах
Войдите в WinRDBI, откройте базу empTraining.rdb и файл empTrain-ing.trc с набором запросов в исчислении на кортежах (рисунок 7.1).
Все запросы имеют единую структуру вида {ti,... ,tn\F (ti,...,tn)}. Разберитесь с десятком примеров, особенно сложных, помещенных в конце списка в правом окне.
Обратите внимание на создание новых отношений (рисунок 7.2), и соединения отношений, например, в запросе "Какие курсы предлагаются в области баз данных?" (рисунок 7.3).
Как вы помните, (exists A) это квантор существования.