Кубанский государственный университет
Опубликован: 24.12.2013 | Доступ: свободный | Студентов: 681 / 8 | Длительность: 24:28:00
Лекция 7:

Языки реляционных баз данных

7.5 Реляционное исчисление предикатов на кортежах

В реляционном исчислении на кортежах (Tuple Relation Calculus — TRC) правильные формулы строятся как описания условий, которым должны удовлетворять кортежи, образующие искомые отношения. Эти условия в простейшем варианте имеют вид: \{t|P(t)\}. Здесь t — переменная, обозначающая некоторый кортеж, а Р(t) —предикат. Формула исчисления кортежей описывает множество всех таких кортежей, для которых предикат принимает значение "истина". Общий вид правильно построенных формул исчисления на кортежах приведен в разделе 7.5.5.

7.5.1 Состав предиката Р(i) в исчислении на кортежах

Элементарными образующими предиката Р(t) являются атомы трех видов — переменные кортежи, отношения между кортежами и отношения между кортежем и константой. Опишем их:

  1. Переменные кортежи: t\in R, где r— отношение. Данный атом имеет значение "истина", если кортеж t принадлежит отношению r. При этом если отношение имеет схему R, то и кортеж t имеет такую же схему.
  2. Специфика реляционного исчисления на кортежах в том, что элементы рассматриваемого множества — это кортежи, которые обязательно принадлежат некоторым отношениям. И переменные в нем — это переменные кортежи.
  3. Пример: Пусть отношение СОТРУДНИК имеет схему {ИМЯ, ФАМИЛИЯ, ОТЧЕСТВО, ВОЗРАСТ}. Утверждение t\in СОТРУДНИК, означает, что t является кортежем отношения СОТРУДНИК, и имеет ту же схему: {ИМЯ, ФАМИЛИЯ, ОТЧЕСТВО, ВОЗРАСТ}.
  4. Отношения между кортежами (записываются в точечном синтаксисе): s.A\Theta t.B, где s и t — некоторые кортежи, А и В — имена атрибутов, S и R — множества атрибутов, причем A\in R иB\in R, а \Theta — оператор сравнения. Этот атом принимает значение "истина", тогда и только тогда, когда атрибут А кортежа s находится в отношении \Theta с атрибутом В кортежа 1 Например, если s,t\in СОТРУДНИК, то s.ВОЗРАСТ < t.ВОЗРАСТ истинно, если возраст сотрудника s меньше возраста сотрудника .
  5. Отношения между кортежем и константой: s.A\Theta c, где s — некоторый кортеж, A — имя атрибута ( A\in S ), а c — константа из домена атрибута A . Атом принимает значение "истина", если значение атрибута кортежа находится в отношении \Thetaс константой c. Например, s.ВОЗРАСТ < 40 истинно, если возраст сотрудника s меньше 40.
7.5.2 Правильно построенные формулы исчисления на кортежах

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

  • Атом — это ППФ.
  • Если Р и Q — ППФ, то P\vee Q, ~P\&Q,~\urcorner P будут ППФ.
  • Если Р — ППФ, то \exists X ~P(X) — ППФ.
  • Если Р — ППФ, то \forallX ~ P(X) — ППФ.
  • Если Р — ППФ, то (Р) - ППФ.
  • Ничто иное не является ППФ.

Замечание. Квантор существования в инструментальном средстве WinRDBI обозначается как EXISTS, квантор всеобщности как FORALL.

7.5.3 Сопоставление операторов реляционной алгебры и формул исчисления на кортежах
  1. Объединение: R\cup S=\{t|t\in R\vee t\in S\}
  2. Разность: R-S=\{t|t\in R\&(\urcorner(t\in S))\}
  3. Селекция: sel_F(R)=\{t|t\in R\&F\}

Здесь R и S — отношения, F — формула.

7.5.4 О реляционной полноте языка запросов

Как определено ранее, язык запросов к реляционной базе данных называется реляционно-полным, если он, по крайней мере, так же выразителен, как язык запросов реляционной алгебры. Иначе говоря, реляционно-полный язык позволяет, по крайней мере, моделировать язык запросов реляционной алгебры. Используемые в практике языки запросов "более чем полны" за счет:

  • включения арифметики и вычисления однострочных функций;
  • включения агрегатных (многострочных) функций;
  • иногда за счет вычисления транзитивного замыкания отношения.
7.5.5 Синтаксис запросов TRC в WinRDBI

Запрос (ППФ) имеет вид: \{t_1,\dots,t_n|F(t_1,\dots,t_n)\}, где F — формула исчисления, аt_1,\dots,t_n — кортежные переменные, действующие как глобальные переменные в F и определяющие схему результата.

Обозначим t и t_i — переменные кортежи, a_j — атрибут, с — константа уровня домена, \vartheta — оператор сравнения. Тогда атомами будут: r(t),~t_{i\cdot}a_m\vartheta t_{j\cdot}\varthetac. Пусть F,~F_1,~F_2 — формулы. Тогда формулами будут: (F),~ not F,~ F_1 and F_2,~ F_1~ or~ F_2. Если t свободна (переменная свободна в формуле, если она не квантифицирована действием exists или forall) в F(t), то формулами будут (\exists t) F(t),~ (\forall t) F(t).

7.5.6 Реляционная полнота реляционного исчисления на кортежах

Как вы помните, для доказательства достаточно выразить операции реляционной алгебры через операции исследуемого исчисления. Сведем представления операций реляционной алгебры формулами реляционного исчисления на кортежах в таблицу 7.2.

Исчисление первого порядка на кортежах реляционно полно, так как мы смогли операции реляционной алгебры представить в виде операций реляционного исчисления на кортежах.

Таблица 7.2. Сравнение реляционной алгебры и исчисления на кортежах
Реляционная алгебра Реляционное исчисление на кортежах
sel_{condition}(R) \{r|R(r)~and~condition\}
proj\{a_i,\dots,a_j\}(R) \{R_{\cdot}a_i,\dots,R_{\cdot}a_j|R(r)\}
R\cup S \{t|R(t)~or~S(t)\}
R-S \{t|R(t)~and~not~S(t)\}
Q\times R \{q,r|Q(q)~and~R(r)\}

Рассмотрим несколько примеров.

7.5.7 Примеры запросов в исчислении на кортежах

Войдите в WinRDBI, откройте базу empTraining.rdb и файл empTrain-ing.trc с набором запросов в исчислении на кортежах (рисунок 7.1).

 Примеры запросов в исчислении на кортежах

Рис. 7.1. Примеры запросов в исчислении на кортежах

Все запросы имеют единую структуру вида {ti,... ,tn\F (ti,...,tn)}. Разберитесь с десятком примеров, особенно сложных, помещенных в конце списка в правом окне.

Обратите внимание на создание новых отношений (рисунок 7.2), и соединения отношений, например, в запросе "Какие курсы предлагаются в области баз данных?" (рисунок 7.3).

 Создание нового отношения по данным существующих отношений

Рис. 7.2. Создание нового отношения по данным существующих отношений
 Соединение отношений technologyArea и trainingCourse

увеличить изображение
Рис. 7.3. Соединение отношений technologyArea и trainingCourse

Как вы помните, (exists A) это квантор существования.