Помощь в написании студенческих работ
Антистрессовый сервис

Язык запросов по образцу QBE

РефератПомощь в написанииУзнать стоимостьмоей работы

Для удобства восприятия результатов язык QBE позволяет задать упорядоченность данных в таблице ответов. Возможности задания упорядочения различаются в разных СУБД: некоторые системы разрешают проводить упорядочение по произвольным полям, другие требуют, чтобы поле упорядочения стояло в таблице ответов обязательно первым, а если упорядочение ведется по нескольким полям, то чтобы эти поля следовали… Читать ещё >

Язык запросов по образцу QBE (реферат, курсовая, диплом, контрольная)

Запросы на выборку данных являются самым распространенным типом запросов. Они предназначены для извлечения данных из одной или нескольких таблиц и отображения полученных результатов в виде сетки с выбранными данными. В сетке с выбранными данными извлеченная из таблицы информация отображается в виде набора столбцов и строк, подобно обычной электронной таблице. Запросы на выборку допускают группирование записей, а также вычисление сумм, счетчиков, средних значений и применение агрегатных функций других типов.

В современных СУБД широко используются табличные языки запросов. Наиболее распространенным среди них является язык QBE (Query-By-Example — запрос по образцу (примеру)). Язык QBE предназначен для работы в интерактивном режиме и ориентирован на конечного пользователя. Он реализован во многих современных СУБД, например в dBase IV и более старших версиях этой системы, Paradox, Access. Конкретные реализации этого языка несколько отличаются друг от друга, но все они построены, но единому принципу.

Подход, воплощенный в языке QBE, заключается в следующем [6]. В окне формирования запроса, называемом окном Query, выделяются две зоны. В первой из них высвечивается структура таблицы, данные из которой будут участвовать в запросе. В качестве исходных для запроса могут указываться не только таблицы из БД, но и другие запросы.

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

В общем случае формирование запроса начинается с выбора таблиц, для которых предназначен запрос. Далее во второй зоне окна Query задаются отметки (в виде галочек) для указания полей, включаемых в таблицу ответов ANSWER. Для сужения области действия запроса в нем указываются условия, которым должны соответствовать выбираемые данные. Когда запрос сформирован, можно выполнить его нажатием соответствующей клавиши (например, Run Query). СУБД обрабатывает запрос, преобразуя его в SQL-оператор, после выполнения которого результаты отображаются в таблице ANSWER (рис. 3.21).

Чтобы включить конкретное поле в таблицу ответов, нужно в окне Query поставить отметку в этом поле. Если установить курсор мыши на маленьком окошке в интересующем поле и нажать левую кнопку мыши, то при использовании СУБД Paradox появится список возможных отметок:

Процесс выполнения QBE-запроса.

Рис. 3.21. Процесс выполнения QBE-запроса

Гу1 — выбор неповторяющихся строк и сортировка в порядке возрастания;

? — отмена выбора;

[у+1 — выбор всех строк без сортировки;

0 — выбор неповторяющихся строк и сортировка в порядке убывания.

Например, чтобы определить, какие различные категории квартир имеются, нужно поставить отметку в поле KCategory, а чтобы вывести всю таблицу FLAT, нужно отметить все поля таблицы с помощью универсальной кнопки, расположенной в первой колонке запроса иод именем таблицы.

Структура таблицы FLAT и форма QBE-запроса.

Рис. 3.22. Структура таблицы FLAT и форма QBE-запроса

Чтобы выбрать из таблицы данные, удовлетворяющие некоторым условиям, нужно в запросе для отдельных полей справа от окошка записать условия, относящиеся к этим полям. Например, на рис. 3.22 показан запрос на языке QBE для СУБД Paradox, выбирающий из таблицы FLAT сведения о приватизированных (П) или (OR) коммунальных (К) квартирах с площадью в диапазоне от 20 до 40 м2, расположенных в 8-м микрорайоне г. Зеленограда. Запятая в условии для поля Skv обозначает логическую операцию И.

Кроме задания условия отбора данных, при описании запроса язык QBE дает возможность указать, какие атрибуты и в какой последовательности входят в таблицу ответов. В нее могут помещаться не только реальные поля, которые хранятся в одной из исходных таблиц, но и вычисляемые поля.

Есть два вида вычислений, которые могут выполняться в запросах, формах и отчетах: это агрегирующие операторы, которые выполняют операции над группой строк, и обычные вычисления, затрагивающие отдельные поля одной или нескольких связанных строк.

Набор агрегатных функций может быть различным в разных системах. Обычно имеются следующие функции: Sum (сумма), Min (минимум), Мах (максимум), Avg (среднее), Count (подсчет). Некоторые системы включают такие дополнительные статистические функции, как отклонение, стандартное отклонение, дисперсия и т. д.

Использование агрегатных функций предполагает, что таблица упорядочена по тому полю (полям), по которому ведется агрегирование. Некоторые СУБД сами автоматически выполняют упорядочение данных по необходимым нолям, другие — нет. В последнем случае, если пользователь не задаст правильно требуемое упорядочение, результат будет искаженным.

При использовании СУБД Paradox значение поля в таблице ответов вычисляется с помощью оператора CALC, записываемого в поле справа от окошка. Вычисляемое выражение может содержать элемент образца — переменную, принимающую текущее значение поля данных. Элемент образца обозначается именем, перед которым набирается символ подчеркивания (символ подчеркивания в запросе не отображается, а элемент образца выделяется особым цветом). Элемент образца и оператор CALC разделяются занятой, например: _а, CALC _а+2.

Результаты вычислений, выводящиеся в поле, не запоминаются в исходной таблице. Вместо этого вычисления снова проводятся всякий раз, когда выполняется запрос, поэтому результаты всегда представляют текущее содержимое базы данных. Обновить вычисленные результаты вручную невозможно (таблица, содержащая вычисляемое поле, имеет статус «только для чтения»).

Структуры всех таблиц, которые нужны для реализации запроса должны быть вызваны на экран.

Дальнейшие действия, которые необходимо выполнить, чтобы осуществить соединение таблиц, зависят от используемой СУБД. Так, в некоторых системах для соединения таблиц используются упомянутые выше элементы образца. Их имена могут быть любыми, но они должны быть одинаковыми в обеих соединяемых таблицах (рис. 3.23).

Использование элементов образца с именем joinl при соединении таблиц в QBE-запросе для СУБД Paradox.

Рис. 3.23. Использование элементов образца с именем joinl при соединении таблиц в QBE-запросе для СУБД Paradox

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

Теоретически возможны разные типы соединений таблиц. Наиболее распространенным является соединение, при котором в таблицу ответов помещаются те соединенные строки, для которых значение поля связи главной таблицы совпадает с соответствующим полем в подчинеииой таблице. В описанных выше случаях устанавливается именно такое соединение. Различают «левое» и «правое» соединения, когда в таблицу ответов помещаются все строки из главной или подчиненной таблицы соответственно, даже если для них нет связанных строк в другой таблице. Но не все системы позволяют с помощью языка QBE реализовывать такие соединения. В случаях, когда возможно задание разных типов соединений, конкретный способ реализации отличается в разных СУБД. Так, в Access «левое» и «правое» соединения можно определить, задав для связи таблиц «параметры объединения» или использовав средства языка SQL.

Работа с несколькими таблицами в конкретных СУБД различается не только тем, каким способом можно определить связь между таблицами. Так, например, одни системы обязывают пользователя связать те таблицы, которые указываются как исходные для запроса; другие — автоматически связывают открытые таблицы, но тем нолям, которые система воспринимает как поля связи (чаще всего это поля, имеющие одинаковые имена, тип и длину); третьи — оставляют эти таблицы изолированными, если пользователь не указал, как они должны быть связаны, четвертые — выполняют декартово произведение открытых таблиц. Например в Access, если таблицы не связаны, то при выполнении запроса это приводит к связыванию каждой строки одной таблицы с каждой строкой другой.

Кроме собственно поисковых запросов язык QBE позволяет выполнять и другие операции, например корректировку данных. Набор допустимых операций, а также способы их задания несколько различаются в разных системах.

В языке QBE, реализованном СУБД Paradox, для изменения значения поля предназначен оператор CHANGETO, причем при использовании этого оператора все поля должны быть неотмеченными. Например, на рис. 3.24 показан запрос, переводящий все однокомнатные квартиры (NRooms = 1) в категорию приватизированных.

QBE-запрос, вносящий изменения в таблицу базы данных.

Рис. 3.24. QBE-запрос, вносящий изменения в таблицу базы данных Для вставки или удаления строк (в таблицу или из таблицы) нужно нажать кнопку мыши, когда курсор установлен в первой колонке запроса иод именем таблицы. Из появившегося меню выбирается команда INSERT или DELETE. Для INSERT в окне Query набираются значения полей вставляемой строки и нажимается кнопка Run Query. Для DELETE в окне Query набираются условия, которым должны удовлетворять значения полей удаляемых строк, и нажимается кнопка Run Query. При использовании команд INSERT и DELETE все поля должны быть неотмеченными.

Для удобства восприятия результатов язык QBE позволяет задать упорядоченность данных в таблице ответов. Возможности задания упорядочения различаются в разных СУБД: некоторые системы разрешают проводить упорядочение по произвольным полям, другие требуют, чтобы поле упорядочения стояло в таблице ответов обязательно первым, а если упорядочение ведется по нескольким полям, то чтобы эти поля следовали в таблице ответов друг за другом в порядке их расположения в таблице базы данных; некоторые СУБД различают обычное и словарное упорядочение (когда учитывается и не учитывается регистр соответственно), другие — нет; в некоторых системах, даже если не задано никакое упорядочение, таблица ответов всегда выдается упорядоченной по первому полю таблицы ответов и т. п. Запросы на языке QBE могут быть сохранены для последующего многократного использования.

Показать весь текст
Заполнить форму текущей работой