Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
11.05.2015
Размер:
226.3 Кб
Скачать

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

В отличие от реляционной алгебры (процедурный подход), реляционное исчисление реализует декларативный (описательный) подход к выполнению операций над данными, поскольку оно лишь описывает свойства желаемого результата в виде логической формулы.

Основная идея состоит в том, чтобы любую операцию над отношениями описать в виде правильной формулы. СУБД, основанные на реляционном исчислении, автоматически распознают эти формулы и выполняют требуемые преобразования над данными. Достоинством такого подхода является то, что он позволяет построить непроцедурные языки манипулирования данными.

Базисными понятиями реляционного исчисления являются:

  • понятие переменной с определенной для нее областью допустимых значений,

  • понятие правильно построенной формулы, опирающейся на переменные, предикаты и кванторы.

Аналитические выражения записывают в одной из следующих форм:

  1. { t | (t) } - читается так: “множество переменных t таких, что истинна формула “.

  2. { t1, t2, ... tk | ‘ ( t1, t2, ... tk ) },

где t - переменная - кортеж,

t1,...tk - переменные на доменах,

k - ранг отношения,

- формула, построенная из атомов.

В зависимости от того, что является областью определения переменной, различают исчисление кортежей и исчисление доменов. В первом случае (форма а) в качестве значений переменных используются кортежи, во втором - домены.

Реляционное исчисление кортежей

Атомы формул Y могут быть трех типов:

  1. R(S) - означает, что S - это кортеж в отношении R.

  2. s[i] @ u[j] - означает, что i -ая компонента S и j-ая компонента U связаны оператором сравнения (< > = ). Например: s[1] < u[3] справедливо для кортежей s = (1, 6, 6, 6) и u = (2, 2, 5, 2).

  3. s[i] @ const или const @ s[i], - аналогичная п.2 связь с константой. Например, s[3] = “СИДОРОВ”.

Формулы составляются из атомов по следующим правилам:

  1. Каждый атом - это формула.

  2. Если 1 и 2 - формулы, то 1 2, 1 2,  1 - тоже формулы.

  3. Если - формула, то ( s) ( ) - тоже формула, которая утверждает, что существует такое значение переменной S, при котором истинна.

  4. Если - формула, то ( s) ( ) - тоже формула, которая утверждает, что при подстановке любого значения переменной S в формулу она остается истинной.

  5. Порядок старшинства операций в формулах: операторы сравнения (< > = и т.п.), , , , , .

Правильно построенные формулы служат для описания условий, которые накладываются пользователем на кортежные переменные. В условиях применяются только простые сравнения атрибутов отношений с константой или с другим атрибутом.

При использовании кортежных переменных можно ссылаться на отдельный атрибут этой переменной, например: если S = (5, Иванов, 500, 3) - это кортеж отношения СОТРУДНИКИ (номер, имя, оклад, отдел), то S[3] = 500 - это значение третьего атрибута данного кортежа (оклад). На практике в языках, основанных на реляционном исчислении, часто вместо номера атрибута используют его имя, например, вместо S[3] пишут S.Оклад,что более наглядно.

Переменные, входящие в формулы, могут быть свободными или связанными. К свободным относят все переменные, входящие в формулу, при построении которой не использовались кванторы. Множество кортежей - значений этих переменных, при которых формула истинна, образуют результирующее отношение.

Если же имя переменной Х использовано сразу после квантора Х или Х, то она считается связанной переменной, которая не видна за пределами формулы, описанной в кванторе. При вычислении значения такой формулы используется не одно значение связанной переменной, а вся ее область определения. Например, пусть Х и Y - две кортежные переменные, определенные на отношении СОТРУДНИКИ. Тогда, формула

 Y (Х.Оклад > Y.Оклад)

для текущего значения Х истинна в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж Y такой, что значение его атрибута Оклад удовлетворяет заданному условию сравнения.

Чтобы описать, какие атрибуты кортежа должны входить в результирующее отношение, используют целевой список, который может состоять из следующих элементов:

  1. Х.А где Х - имя свободной переменной, а А - имя атрибута отношения,

  2. Х, то есть имена всех атрибутов отношения;

  3. N = X.A, где N - новое имя атрибута результирующего отношения (когда используются несколько переменных с одинаковой областью определения).

В реальных языках БД вместо математических обозначений кванторов и логических связок используют, как правило, словесные обозначения:

EXISTS

NOT



FORALL

AND

WHERE

OR

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

Соседние файлы в папке Лекции_БД