Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 17
Текст из файла (страница 17)
Основы82построениябазданныхОбщий смысл записи выражения состоит в перечислении атрибутов результирующего (целевого) отношения, атрибуты которого должны удовлетворять условию истинности формулы wff (well formulated formula — правильнопостроенная формула).
Список атрибутов целевого отношения, или целевойсписок, в терминах реляционной алгебры по существу определяет операциюпроекции, а формула wff — селекцию кортежей.В паре <переменная>.<атрибут> первая составляющая служит для указания переменной кортежа (определенной конструкцией RANGE), а вторая —для определения атрибута отношения, на котором изменяется переменнаякортежа. Необязательная часть «AS <атрибут>» используется для переименования целевого отношения. Если она отсутствует, то имя атрибута целевого отношения наследуется от соответствующего имени атрибута исходногоотношения.Употребление в качестве элемента целевого отношения просто имени переменной Т равносильно перечислению в списке всех соответствующих атрибутов, т.
е. Т.А ( , Т.А2, ... , Т.А п , где AJf А2, ... , Ап — атрибуты отношения,сопоставляемого с переменной Т.Пример 2. Варианты записи пары <переменная>.<атрибут>.sx.n#S X . n # AS Город_ПоставщикаSXSXXI#, 5Х.Город_П AS Город_Г1оставщика, РХ.Д#, РХ.Город_Д# ASГород_ЛеталиВ приведенном определении wff <условие> представляет собой либо формулу wff, заключенную в скобки, либо простое сравнение вида:<операнд1> О <операнд2>,где в качестве любого операнда выступает переменная или скалярная константа, а символ © обозначает операцию сравнения =, Ф, >, >, <, < и т.
д.Ключевые слова NOT, AND и OR обозначают логические операции соответственно: И, НЕ и ИЛИ. Ключевые слова 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 предусмотрен запрос на выборку имен таблиц.