Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_Чигарина_бд_2014.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.25 Mб
Скачать

2.2 Реляционное исчисление кортежей и доменов

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

,

где f-формула, выражающая некоторый предикат над переменной-кортежем x . Результат этого выражения есть отношение r(R),которое состоит из всех кортежей t(R), для которых f(t) истинно.

Минимальные строительные блоки для формул называют атомами. Атомы бывают следующих типов:

  1. Атом x R или R(x), где x – кортеж отношения R;

  2. Атом S(i) U(j), где S и U – переменные-кортежи; - оператор сравнения; i, j – номера или имена атрибутов в соответствующих кортежах.

  3. Атом S(i) а или, а S(i), где, а – константа, S – переменная-кортеж; - оператор сравнения; i – номер или имя атрибута в соответствующем кортеже.

  4. Операции: сравнения ( ,<,>,=, ), кванторы всеобщности( ), логические операции( ).

  5. Скобки.

В реляционном исчислении с переменными – кортежами справедливо следующее утверждение: для любого выражения реляционной алгебры существует эквивалентное ему безопасное выражение в реляционном исчислении с переменными-кортежами. В исчислении кортежей на вид формул накладываются определенные ограничения, чтобы исключить выражения, не имеющие смысла. Формулы, удовлетворяющие этим ограничениям, называют разрешёнными формулами, а соответствующие выражения – безопасными.

Реляционное исчисление доменов напоминает реляционное исчисление кортежей, за тем исключением, что переменные этого исчисления являются переменными значениями из доменов, а не переменными-кортежами. Выражение исчисления доменов имеет вид:

где f – формула, обладающая тем свойством, что ее переменные являются переменными значениями из доменов.

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

  1. Атом R(a1,…,ak), где - либо переменная исчисления доменов, либо постоянная из домена, с помощью которого задается атрибут.

  2. Атом x y , где x, y – константы или переменные на домене; - оператор сравнения.

  3. Формула использует кванторы x;x и логические операции , , .

  4. Скобки.

В реляционном исчислении с переменными на доменах справедливы следующие утверждения:

  1. Для каждого безопасного выражения реляционного исчисления с переменными кортежами существует эквивалентное ему безопасное выражение реляционного исчисления с переменными на доменах.

  2. Для каждого безопасного выражения реляционного исчисления с переменными на доменах существует эквивалентное ему выражение реляционной алгебры.

2.3. Языки манипулирования данными в реляционных системах

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

1) На основе реляционной алгебры фирмой IBM был разработан язык ISBL(Information System Base Language). Выражения этого языка строятся с помощью операций, соответствующих операциям реляционной алгебры или их обобщениям. Например, объединение, пересечение, соединение и выбор обозначаются соответственно: (R : F).

Результат вычисления любого выражения языка ISBL может быть присвоен некоторому отношению, либо напечатан с помощью ключевого слова list.

2) Реляционное исчисление кортежей послужило основой для создания языка QUEL(QUEry Language), разработанного в университете шт. Калифорния. Все переменные языка неявно связаны квантором существования, и область определения каждой из них ограничена одним из отношений. Объявление переменной и её привязка к определенному отношению производится с помощью оператора следующего вида:

range of <переменная> is <имя отношения>

Основная форма оператора запроса в QUEL является:

retrieve (<целевой список>) where <условие>,

где условию соответствует формула исчисления кортежей. Целевой список представляет собой последовательность компонент переменных, напоминающую ту часть выражения в исчислении доменов, что расположена слева от вертикальной черты. Результат запроса можно присвоить некоторому отношению, если после ключевого слова retrieve написать into <отношение>.

  1. Слабость языка QUEL заключается в том, что он использует для исчисления кортежей только кванторы существования. Это послужило причиной роста популярности другого языка, основанного на полном исчислении кортежей и частично реляционной алгебре - язык SQL. Язык SQL был разработан в научно-исследовательской лаборатории фирмы IBM в Сан-Хосе (шт. Калифорния).

Основной операцией в SQL служит отображение, представляющее собой композицию ограничения предикатом и проекции. В простейшем случае отображение выражается синтаксической конструкцией вида:

select <список атрибутов>

from <отношение>

where <условие>

  1. Реляционное исчисление доменов стало основой для создания языка QBE(Query-By-Example) – реляционного языка манипулирования данными, разработанного Злуфом из Уотсоновского исследовательского центра фирмы IBM. Язык QBE обладает двумерным синтаксисом. Запрос формулируется путём заполнения табличной формы, содержащей имя отношения и имена атрибутов схемы. Строки запроса имеют вид:

Имя отношения

Имя атр.1

….

Имя атр.n

операция

Примером СУБД, реализующей язык QBE, является Paradox.

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