Дизайнеры SQL-запросов, или Как облегчить жизнь при работе с базами данных

Мечта каждого пользователя персонального компьютера - свалить выполнение каких-либо действий на компьютер. Обычно в этом наиболее преуспевают профессиональные программисты. Они-то знают: платят за конечный результат, а не за процесс его получения..
Работа с любой базой данных состоит из двух основных этапов: создание структуры базы (определение таблиц, полей, их типов, связей между таблицами) и работа с данными (добавление новых данных, редактирование устаревших, удаление ненужных и вывод данных в удобном для пользователя виде). Работа с данными - самый длительный и кропотливый этап, поэтому понятно желание программистов автоматизировать данный процесс.

В целях стандартизации способа обработки и доступа к данным был создан язык SQL (Structured Query Language - язык структурированных запросов), который используется при создании запросов к базам данных. Этот язык выступает в качестве стандарта ANSI для команд доступа и управления данными. Все современные базы данных (Oracle, Sybase, Sybase SQL Anywhere, Informix, SQL Server, DB2, Access и др.) реализуют поддержку языка SQL. Аналогичной поддержкой снабжены более древние базы данных (Dbase, FoxPro, Paradox и др.). Одним из основных преимуществ языка SQL - возможность использования одного и того же запроса к разным типам баз данных, но с одинаковой структурой.

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

По мере роста сложности операции над данными растет объем SQL запроса. Размер большого запроса может достигать страницы текста, состоящей из команд языка SQL. Поэтому для автоматизации создания SQL запросов применяют дизайнеры (от англ.design - строить). Специализированные дизайнеры еще именуются визардами.

Безусловно, создавать запросы вручную можно в обычном редакторе, но это длительно и неэффективно. Отладка запроса может занимать намного больше времени, чем его непосредственное создание. Практически все дизайнеры позволяют осуществлять тестирование созданных запросов - отладку.

Дизайнеры текстового типа

Дизайнеры текстового типа - редакторы, позволяющие создавать текст запроса в обычном окне редактирования (консоли). К дизайнерам такие редакторы можно отнести, лишь основываясь на значении англоязычного слова design (designer), что означает строить (средство построения). Запросы можно строить и с помощью консоли - самого древнего компьютерного способа.

Отладки запроса как таковой не существует. Запуск запроса на исполнение осуществляется при выборе соответствующего пункта меню или специальной кнопкой в панели инструментов. Если в тексте запроса присутствует синтаксическая ошибка, то при запуске запроса на исполнение будет выдаваться соответствующее сообщение. Уменьшение количества синтаксических ошибок может быть достигнуто применением синтаксического анализатора, который различает служебные слова, отслеживает названия таблиц и их полей. Неизвестные редактору слова выделялись бы каким-либо цветом (лучше красным).

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

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

Пример таких редакторов вы можете встретить в оболочке любой современной СУБД.

Визарды

Визарды - это класс специализированных программ, направленных на просмотр, добавление, удаление, изменение данных в базе. Визарды в свою очередь делятся на 2 группы: а) специализированные б) универсальные.

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

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

Универсальные визарды предназначены для более широкой гаммы выполняемых функций и не привязываются к конкретной базе данных или ее структуре. Такие дизайнеры обычно считывают структуру базы (таблицы, поля, связи) и предлагают создавать запрос на основании каких-либо форм-шаблонов.

В качестве примера можно привести дизайнер запросов, поставляемый совместно с редактором географических карт WinCAD фирмы Siemens. Это самый удачный представитель универсальных дизайнеров известный мне.

Обычно все универсальные дизайнеры строятся на основании одного из следующих типовых решений:

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

б) Использование MDI-формы - формы, содержащей следующие клиентские окна: окна таблиц (название окна - название таблицы, в окне находится список с полями), окно связей, окно с таблицей условий отбора.

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

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

QBE (Query by Example - запрос по примеру)

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

Примерами могут послужить широко известные представители MS Office - MS Query и Designer MS Access. QBE представляет собой форму, состоящую из двух частей:
а) поле макетов таблиц, участвующих в запросе,
б) таблица-шаблон, на основании которой формируется этот запрос.

Шаблон может меняться в зависимости от типа запроса. Обычно шаблоны поддерживают как минимум четыре основных типа запросов: выборка, добавление, обновление, удаление. Строки - параметры запроса, а колонки - свойства параметра. В данном случае параметр - элементарная команда над данными. Связанные между собой команды объединены в таблицу запроса. Шаблоны очень похожи.

Шаблон выборки содержит следующие информационные строчки:
а) поле - название поля, над которым осуществляется соответствующая операция,
б) таблица - таблица, в которой находится данное поле (в запросе могут использоваться несколько таблиц),
в) сортировка - она может быть по возрастанию, по убыванию либо не использоваться,
г) вывод на экран - содержит чекбокс (если в квадрате горит "птичка" - поле показывается, в обратной ситуации - нет),
д) строки условий отбора (3-7 строк) - могут содержать логические операции типа =,<>,<=> =,<> или вложенные запросы.

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

Единственный и главный недостаток QBE - нет возможности проектировать вложенные запросы. Их приходится проектировать по частям, затем собирать и отлаживать.
Сергей СОКОЛОВ (БГУИР)


Компьютерная газета. Статья была опубликована в номере 02 за 2000 год в рубрике soft :: субд

©1997-2024 Компьютерная газета