- •Теоретические языки запросов в реляционных базах данных
- •Введение
- •Языки реляционной алгебры являются процедурными. Опе- раторы этой алгебры состоят из операндов, в
- •Языки исчислений, в отличие от
- •Реляционные таблицы для примеров
- •Таблица S
- •Таблица P
- •1. Реляционная алгебра
- •Перечисленный набор из 8 операций является избыточным. Минимально необходимый набор составляет 5 операций
- •С другой стороны указанных 8 опера- ций недостаточно для построения ре- альной СУБД
- •Операции реляционной алгебры могут
- •1.1. Объединение
- •Пример 1
- •1.2. Вычитание
- •1.3. Пересечение
- •1.4. Декартово произведение
- •Замечание 1
- •Пример 2
- •Замечание 2
- •1.5. Выборка (ограничение)
- •Пример 3
- •Пример 4
- •1.6. Проекция (PROJECT)
- •Дополнительные варианты записи операции проекции
- •Замечание 3
- •1.7. Деление
- •Результатом деления отношения R1на отношение R2 является отношение R с заголовком A и
- •Пример 5
- •Результатом деления отношения R1 на отношение R2 будет отношение с заголовком
- •1.8. Соединение
- •Уоперации соединения есть
- •1.8. 1. Естественное соединение
- •1)Берется декартово произведение
- •1.8. 2. Тета-соединение и эквисоединение
- •Замечание 4
- •1.8. 3. Внешнее соединение
- •Пример 6 (эквисоединение)
- •Результатом эквисоединения будет следующее отношение
- •Обзор дополнительных операций реляционной алгебры, предложенных Дейтом
- •В операции расширения имя нового атрибута не должно повторять имен имеющихся в данном
- •3Д. Операция подведения итогов
- •Результатом операции подведения итогов является отношение R с заголовком, состоящим из атрибутов списка,
- •Пример 6
- •4Д. Операция присваивания
- •5Д. Операция вставки
- •6Д. Операция обновления
- •7Д. Операция удаления 8Д. Операции реляционного сравнения
- •Замечание 5
- •-выражения можно заменять другими выражениями, получающи- мися с помощью тождественных преобразований;
- •2. Реляционное исчисление
- •Понятие реляционного исчисления, как
- •2.1.Исчисление кортежей
- •Все элементы списка должны быть сов- местимы по типу, то есть соответ- ствующие
- •Пример 1
- •Переменные SX и SPX в первых двух описаниях определены соответственно на отношениях S
- •Пример 2
- •Замечание
- •2.2. Исчисление доменов
- •Отличительной особенностью исчи- сления доменов от исчисления кортежей является то, что в нем
- •Проверяемое условие будет истинным тогда и только тогда, когда существует кортеж в отношении
- •Примеры выражений исчисления доменов
- •Третье выражение соответствует запросу на получение имен поставщиков, производящих все детали.
2. Реляционное исчисление
Принципиальное отличие между реляционной алгеброй и реляционным исчислением состоит в том, что в первом случае процесс получения искомого результата описывается явным образом путем указания набора операций, которые надо выполнить, а во втором – указываются свойства искомого отношения без конкретизации процедуры его получения.
51
Понятие реляционного исчисления, как
языка работы с БД, было впервые предложено Э. Коддом. Им же был
разработан язык ALPHA – прототип программно реализованного языка QUEL,
который некоторое время конкурировал с языком SQL.
Существует два варианта реляционного исчисления: исчисление кортежей и
исчисление доменов.
52
2.1.Исчисление кортежей
Висчислении кортежей, как и в про- цедурных языках программирования, сначала нужно описать используемые переменные, а затем записывать неко- торые выражения. Описательную часть исчисления можно представить в виде:
RANGE OF <переменная> IS <список>, где RANGE, OF, IS – ключевые слова,
53
<переменная> - идентификатор пере- менной кортежа (области значений), а <список> - последовательность одного
или |
более элементов, разделенных |
||
запятыми, то есть конструкция вида |
|||
|
x [, x [,..., x ]...] |
. |
|
|
1 2 |
n |
|
Вся |
конструкция |
RANGE указывает |
идентификатор переменной и область ее допустимых значений. Список эле- ментов содержит элементы, каждый из которых является либо отношением, либо выражением над отношением.
54
Все элементы списка должны быть сов- местимы по типу, то есть соответ- ствующие элементам отношения должны иметь идентичные заголовки. Область допустимых значений <переменной> об- разуется путем объединения значений
всех элементов списка. Так, запись RANGE OF T IS X1, X2 означает, что
область определения переменной T включает в себя все значения из отно- шения, которое является объединением отношений X1 и X2.
55
Пример 1
Варианты описаний:
-RANGE OF SX IS S;
-RANGE OF SPX IS SP;
-RANGE OF SY IS (SX) WHERE
SX.Город_П = ‘Москва’, (SX) WHERE EXISTS SPX (SPX. П# = X. П# AND SPX. Д# = ‘P1’).
56
Переменные SX и SPX в первых двух описаниях определены соответственно на отношениях S и SP. В третьем опи- сании переменная SY может принимать значения из множества кортежей отно- шения S для поставщиков из г. Москвы
или поставщиков деталей P1. Служеб- ное слово EXISTS означает сущест- вование хотя бы одного кортежа, удов-
летворяющего условию, записанному в последних круглых скобках.
57
Пример 2
Записать выражение на языке исчи-
сления кортежей, соответствующее за- просу «Получить имена поставщиков, которые поставляют все детали».
SX. Город_П WHERE FORALL PX (EXISTS
SPX (SPX.П# = SX.П# AND SPX. Д# = SX. Д#)) или (второй вариант этого же запроса):
SX. Город_П WHERE NOT EXISTS PX (NOT EXISTS SPX (SPX. П# = SX.П# AND SPX. Д# = SX. Д#))
58
Замечание
В исчисление кортежей можно добавить вычислительные функ-
ции из реляционной алгебры:
COUNT, SUM, AVG, MAX, MIN. Тогда это исчисление будет обладать вычислительной полно- той.
59
2.2. Исчисление доменов
Исчисление доменов было предложено
Лакроиксом и Пиротте, которые на его основе разработали язык ILL. Другими языками, основанными на исчислении
доменов, являются языки FQL, DEDUCE, а также QBE.
В исчислении доменов основой любого
запроса выступают переменные доме- нов. Переменная домена – это
скалярная переменная, значения которой охватывают элементы некоторого домена.
60