Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 17
Текст из файла (страница 17)
Ключевые слова IF и THEN переводятся соответственно «если» и «то». И наконец, ключевые слова EXISTS й FORALL называются кванторами. Первый из них — квантор существования, а второй —квантор всеобщности. Рассмотрим эти кванторы несколько подробнее.Формула wff вида: EXISTS х (f) означает: «Существует по крайней мереодно такое значение переменной х, что вычисление формулы f дает значение истина».
Выражение вида: FORALL х ( 0 интерпретируется как высказывание: «Для всех значений переменной х вычисление формулы f дастзначение истина». В общем случае переменные кортежей в формулах могут быть свободными или связанными. В формулах EXISTS х (f) и FORALLх (f) переменные кортежей х всегда являются связанными.3. Реляционнаямодельданных83Пример 3. Запись выражения.Приведем запись выражения, соответствующее запросу: «Получить имена поставщиков, которые поставляют все детали».5Х.Город_П W H E R E FORALL РХ (EXISTS SPX( S P X .
n # = S X . n # ANDSPХ.Д# = 5Х.Д# ))Равносильное этому выражение выглядит так:5Х.Город_П W H E R E NOT EXISTS РХ (NOT EXISTS SPX(SPX.n# = SX.n# AND5РХ.Д# = 5 Х . Д # ) )Описанное исчисление не обладает вычислительной полнотой, так как непозволяет выполнять вычисления, связанные с обработкой данных в базах.Добавление вычислительных функций в это исчисление можно реализоватьпутем расширения определения операндов сравнения и элементов целевогосписка таким образом, чтобы они допускали использование скалярных выражений с литералами, ссылками на атрибуты и итоговыми функциями. В качестве итоговых могут выступать следующие функции: COUNT (количество),SUM (сумма), AVG (среднее), МАХ (максимальное), MIN (минимальное).Для целевых элементов целесообразно использовать спецификацию вида «AS<имя атрибута>», позволяющую явно задать имя результирующему атрибуту, если нет очевидного наследуемого имени.Пример 4.
Запись запроса.Пусть требуется получить информацию о каждой поставке с полными данными о деталях и общем весе поставки. Запрос на дополненном функциямиязыке реляционного исчисления кортежей может выглядеть следующим образом:(SPX.n#, SPX.Количество, РХ, РХ.Вес * 5РХ.Количество AS Общий_Вес)W H E R E РХ.Д# = SPX.JX#Вариант реляционного исчисления, основанного на доменах {исчисление доменов), предложен Лакроиксом и Пиротте (Lacroix and Pirotte), которые также разработали на его основе соответствующий язык ILL.
Другими языками,основанными на исчислении доменов, являются: FQL, DEDUCE, а также QBEс некоторыми оговорками.По утверждению Дейта, язык QBE включает элементы исчисления кортежей и исчисления доменов, но более близок ко второму. Он не является реляционно полным, так как не поддерживает операцию отрицания квантора существования ( N O T EXISTS).
Несмотря на этот недостаток, язык QBEполучил широкое распространение в современных СУБД. Тем более, что реализации этого языка, как правило, шире исходного языка.Часть 1. Основы построения84базданныхИсчисление доменов имеет много сходства с исчислением кортежей.
В отличиеот исчисления кортежей, в исчислении доменов основой любого выражения запроса выступают переменные доменов. Переменная домена — это скалярная переменная, значения которой охватывают элементы некоторого домена.Большая часть различий рассматриваемых исчислений заключается в том,что исчисление доменов поддерживает дополнительную форму условия, называемую условием принадлежности.
В общем виде условие принадлежности записывается в виде:R ( A , : ^ , A 2 : ^ , . . . ),где А. — атрибут отношения R, а й — переменная домена или литерал. Проверяемое условие истинно, если и только если существует кортеж в отношении R,имеющий атрибуты А, равные заданным в выражении соответствующим значениямНапример, выражение SP ( П # : 'S1', Д # : 'Р1') истинно, если в отношенииSP существует хотя бы один кортеж со значением *S 1' атрибута П# и значением Ф Г атрибута Д#. Аналогично, выражение SP ( П # : SX, Д # : РХ) истинно, если в отношении SP существует кортеж, в котором значение атрибутаП# эквивалентно текущему значению переменной домена SX, а значение атрибута Д # эквивалентно текущему значению переменной домена РХ.В следующих примерах будем подразумевать существование (объявленное каким-либо образом, подобно оператору RANGE исчисления кортежей)следующих переменных доменов: SX (домен П#), РХ (домен Д#), NAMEX(домен Имя).Пример 5.
Выражения исчисления доменов.(SX) W H E R E S ( n # :SX)(SX) W H E R E S ( П # : SX, Город_П : 'Москва')NAMEX W H E R E EXISTS SX ( S ( П # : SX, Имя : NAMEX)AND FORALL PX ( IF P (Д# : РХ )THEN SP (П# : SX, Д # : PX ) ) )Первое выражение означает множество всех номеров поставщиков отношения S, второе — множество номеров поставщиков из Лондона. Третье выражение соответствует запросу на получение имен поставщиков, производящих все детали.3 . 8 . Язык запросов по образцу QBEХранимые в базе данные можно обрабатывать вручную, последовательнопросматривая и редактируя данные в таблицах с помощью имеющихся вСУБД соответствующих средств.
Для повышения эффективности применя-3. Реляционнаямодельданных85ют запросы, позволяющие производить множественную обработку данных,то есть одновременно вводить, редактировать и удалять множество записей,а также выбирать данные из таблиц.Запрос представляет собой специальным образом описанное требование,определяющее состав производимых над Б Д операций по выборке, удалениюили модификации хранимых данных.Для подготовки запросов с помощью различных С У Б Д чаще всего используются два основных языка описания запросов:• язык Q B E (Query By Example) — язык запросов по образцу;• SQL (Structured Query Language) — структурированный язык запросов.По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны.
Главное отличие между ними, повидимому, заключается в способе формирования запросов: язык Q B E предполагает ручное или визуальное ф о р м и р о в а н и е запроса, в то время какиспользование S Q L означает программирование запроса.Характеристикаязыка QBEТеоретической основой языка Q B E является реляционное исчислениес переменными-доменами. Язык Q B E позволяет задавать сложные запросы кБД путем заполнения предлагаемой С У Б Д запросной формы. Такой способзадания запросов обеспечивает высокую наглядность и не требует указанияалгоритма выполнения операции — достаточно описать образец ожидаемогорезультата. В каждой из современных реляционных С У Б Д имеется свой вариант языка QBE.На языке Q B E можно задавать запросы однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанныхтаблиц).С помощью запросов на языке Q B E можно выполнять следующие основные операции:• выборку данных;• вычисление над данными;• вставку новых записей;• удаление записей;• модификацию (изменение) данных.Результатом выполнения запроса является новая таблица, называемая ответной (первые две операции), или обновленная исходная таблица (остальные операции).Выборка, вставка, удаление и модификация могут производиться безусловно или в соответствии с условиями, задаваемыми с помощью логических выражений.
Вычисления надданными задаются с помощью арифметических выраж е н и й и п о р о ж д а ю т в о т в е т н ы х т а б л и ц а х н о в ы е поля, н а з ы в а е м ы евычисляемыми.86Часть 1. ОсновыпостроениябазданныхЗапросная форма имеет вид таблицы, имя и названия полей которойсовпадают с именем и названиями полей соответствующей исходной таблицы. Чтобы узнать имена доступных таблиц БД, в я з ы к е Q B E предусмотрен запрос на выборку имен таблиц. Н а з в а н и я полей исходной табл и ц ы могут вводиться в шаблон вручную или автоматически. Во второмслучае используется запрос на выборку заголовков столбцов.В современных С У Б Д , например в Access и Visual FoxPro, многие действия по подготовке запросов с помощью языка Q B E выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц приподготовке запроса выполняется не элементами примеров, а просто «протаскиванием» мышыо поля одной таблицы к полю другой.Первоначальный вариант QBEВ большинстве современных С У Б Д имеется свой вариант QBE, незначительно отличающийся от первого описания QBE, предложенного З л у ф фом М.М.
в 1 9 7 5 - 1 9 7 7 гг. Рассмотрим основные возможности QBE, опираясь на первоначальный его вариант.Д л я иллюстрации средств и возможностей языка Q B E используем табл и ц ы БД, которая относится к торговой сфере и используется в фирме,продающей товары нескольких видов. База данных включает четыре следующие таблицы с полями:• Е М Р (служащие): Ф И О — фамилия и инициалы служащего, ЗАРПЛАТА — размер должностного оклада, Р У К О В О Д И Т Е Л Ь — фамилия иинициалы руководителя, О Т Д Е Л — название отдела, в котором работает служащий;• SALES (продажи): ОТДЕЛ — название отдела, Т О В А Р — название товара;• S U P P L Y (поставщики): Т О В А Р — название поставляемого товара, ПОС Т А В Щ И К — название организации, поставляющей товар;• T Y P E (типы товаров): Т О В А Р — название товара, Ц В Е Т — его цвет,С Т О И М О С Т Ь — стоимость товара.В таблицах приведены неполные и упрощенные сведения.
Так, в таблицеT Y P E указаны не все виды товаров, приведенные в таблице SALES.Для описания переменных в условиях отбора записей, а также для связывания шаблонов в запросах используются элементы примера.Элемент примера играет роль идентификатора переменной (как в языкепрограммирования) и задается с помощью символьно-цифровой последовательности. Элементы примера в шаблонах выделим подчеркиванием.