![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
RANGE OF SY IS (SX) WHERE SX.Гopoд_П = 'Москва',
(SX) WHERE EXISTS SPX (SPX.П# = SX.П# AND
SPX.Д# = 'P1');
Переменные SX и SPX в первых двух примерах определены соответственно на отношениях S и SP соответственно (рис. 3.7). Третий пример иллюстрирует запись выражений при определении переменной кортежа. Переменная SY здесь может принимать значения из множества кортежей отношения S для поставщиков из Москвы или поставщиков, которые поставляют деталь Р1 (или для тех и других).
Синтаксис выражений исчисления рассматривается ниже. Запись выражения, формулирующего запрос на языке исчисления кортежей с помощью формы Бэкуса-Наура, упрощенно можно представить следующим образом:
<выражение>::= (у, [, у; [..., у^ ]...]) [ WHERE wff]
у::= {<переменная> | <переменная>.<атрибут> } [ AS <атрибут> ]
wff::=-<ycлoвиe> |
NOT wff |
< ycлoвиe >AND wff|
<условие> OR wff|
IF< условие >THEN wff |
EXISTS <переменная> (wff) |
FORALL <переменная> (wff) |
(wff)
Общий смысл записи выражения состоит в перечислении атрибутов результирующего (целевого) отношения, атрибуты которого должны удовлетворять условию истинности формулы wff (well formulated formula — правильно построенная формула). Список атрибутов целевого отношения, или целевой список, в терминах реляционной алгебры по существу определяет операцию проекции, а формула wff — селекцию кортежей.
В паре <переменная>.<атри6ут> первая составляющая служит для указания переменной кортежа (определенной конструкцией RANGE), а вторая — для определения атрибута отношения, на котором изменяется переменная кортежа. Необязательная часть " AS <атрибут> " используется для переименования целевого отношения. Если она отсутствует, то имя атрибута целевого отношения наследуется от соответствующего имени атрибута исходного отношения.
Употребление в качестве элемента целевого отношения просто имени переменной Т равносильно перечислению в списке всех соответствующих атрибутов, т. е. Т.А1, Т.А2, ..., Т.Аn, где А1, А2,.., Аn — атрибуты отношения, сопоставляемого с переменной Т.
Пример 2. Варианты записи пары <переменная>.<атрибут>.
SX.П#
SX.П# AS Город_Поставщика
SX
SX.П#, SХ.Город_П AS Город_Поставщика, РХ.Д#, РХ.Город_Д# AS Город_Детали
В приведенном определении wff <условие> представляет собой либо формулу wff, заключенную в скобки, либо простое сравнение вида:
<операнд1> Q <операнд2>,
где в качестве любого операнда выступает переменная или скалярная константа, а символ Q обозначает операцию сравнения =,?ь, >, >, <, < и т. д.
Ключевые слова NOT, AND и OR обозначают логические операции соответственно: И, НЕ и ИЛИ. Ключевые слова IF и THEN переводятся соответственно «если» и «то». И, наконец, ключевые слова EXISTS и FORALL называются кванторами. Первый из них — квантор существования, а второй,— квантор всеобщности. Рассмотрим эти кванторы несколько подробнее.
Формула wff вида: EXISTS x (f) означает: " Существует по крайней мере одно такое значение переменной x, что вычисление формулы f дает значение истина ". Выражение вида: FORALLx(f) интерпретируется как высказывание: " Для всех значений переменной х вычисление формулы f дает значение истина ". В общем случае переменные кортежей в формулах могут быть свободными или связанными. В формулах EXISTS х (f) и FORALL х (f) переменные кортежей х всегда являются связанными.
Пример 3. Запись выражения.
Приведем запись выражения, соответствующее запросу:
" Получить имена поставщиков, которые поставляют все детали ".
SX.Город_П WHERE FORALL PX (EXISTS SPX (SPX.П# = SX.П# AND SРХ.Д# = SX.Д#))
Равносильное этому выражение выглядит так:
Дата публикования: 2015-07-22; Прочитано: 538 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!