Query by Example
Query by Example (QBE) — это метод поиска информации в базах данных, при котором пользователь формулирует запрос не на формальном языке (например, SQL), а путём заполнения полей в шаблоне (форме), соответствующем структуре таблицы. Система интерпретирует введённые в поля значения или шаблоны как критерии отбора записей. QBE относится к классу языков запросов, ориентированных на неподготовленных пользователей, и является альтернативой текстовым языкам запросов.
История
Концепция QBE была разработана в начале 1970-х годов в исследовательской лаборатории IBM в Сан-Хосе (Калифорния). Автором идеи считается Мосес Злооф (Moshé Zloof). Первая реализация QBE была выполнена в рамках экспериментальной системы IBM QBE/370, которая работала на мэйнфреймах IBM System/370. В 1978 году компания IBM выпустила коммерческую версию QBE для своей СУБД SQL/DS, а затем и для DB2.
В 1980-е годы QBE получил широкое распространение в микрокомпьютерных СУБД, таких как dBase, Paradox и Microsoft Access. В последнем QBE был реализован в виде графического конструктора запросов (Query Design Grid), который позволял пользователям перетаскивать поля и задавать условия отбора. В 1990-е годы, с развитием графических интерфейсов, QBE стал стандартным методом построения запросов во многих офисных приложениях и СУБД, включая Microsoft SQL Server (через Query Designer) и Oracle (через Oracle Query Builder).
Принцип работы
Основная идея QBE заключается в предоставлении пользователю пустого шаблона, который повторяет структуру таблицы или представления. Пользователь вводит в соответствующие столбцы:
- Конкретные значения — система ищет записи, в которых поле точно совпадает с указанным значением.
- Шаблоны и маски — например, символы подстановки (
*,?) для поиска по частичному совпадению. - Условия сравнения — операторы
>,<,>=,<=,<>(не равно), а также логические операторыAND,OR,NOT. - Пустые поля — если поле оставлено пустым, оно не участвует в фильтрации (выбираются все записи, независимо от значения в этом поле).
- Специальные операторы —
BETWEEN(диапазон),IN(список значений),LIKE(поиск по шаблону),IS NULL(проверка на пустое значение).
Система автоматически преобразует заполненную форму в эквивалентный SQL-запрос (или другой внутренний язык) и выполняет его. Результат обычно отображается в виде таблицы.
Типы QBE
Различают несколько реализаций QBE, различающихся по способу представления и функциональности:
Табличный QBE (Grid-based)
Классическая реализация, где пользователь работает с сеткой, строки которой соответствуют полям таблицы, а столбцы — операциям (например, «Поле», «Имя таблицы», «Условие отбора», «Сортировка»). Пример — режим «Конструктор запросов» в Microsoft Access.
Формовый QBE (Form-based)
Пользователю предлагается готовая форма, повторяющая структуру записи. Поля формы можно заполнять значениями для поиска. Такой подход часто используется в веб-приложениях (например, форма поиска товаров в интернет-магазине).
Графический QBE (Visual QBE)
Пользователь строит запрос, соединяя блоки (таблицы) линиями, которые обозначают связи, и задавая условия в специальных окнах. Пример — Query Designer в Microsoft SQL Server Management Studio или Oracle SQL Developer.
Преимущества и недостатки
Преимущества
- Простота освоения. QBE не требует знания синтаксиса SQL или других языков запросов. Пользователь работает с привычными формами и таблицами.
- Наглядность. Структура запроса видна сразу — все условия отбора представлены в виде заполненных полей.
- Снижение количества ошибок. Исключаются синтаксические ошибки, типичные для текстовых запросов.
- Быстрое создание простых запросов. Для типовых задач (поиск по одному-двум критериям) QBE эффективнее написания SQL-кода.
- Поддержка сложных условий. QBE позволяет задавать сложные логические выражения (AND, OR, NOT) и использовать подстановочные символы.
Недостатки
- Ограниченная гибкость. QBE сложно (или невозможно) использовать для создания запросов с вложенными подзапросами, объединениями (JOIN) нескольких таблиц со сложными условиями, агрегатными функциями (SUM, AVG) с группировкой по нескольким уровням.
- Медленная работа со сложными запросами. При большом количестве таблиц и условий QBE-интерфейс становится громоздким и неудобным.
- Зависимость от реализации. Разные СУБД имеют разные диалекты QBE, что затрудняет перенос запросов между системами.
- Отсутствие возможности тонкой настройки. В QBE сложно задать, например, порядок выполнения операций или использовать специфические функции базы данных.
Применение
QBE широко применяется в:
- Настольных СУБД (Microsoft Access, Paradox, dBase).
- Инструментах бизнес-аналитики (BI) (Tableau, Power BI, Qlik Sense) — для построения фильтров и срезов данных.
- Веб-приложениях — в формах поиска на сайтах электронной коммерции, каталогах, базах знаний.
- Образовательных целях — для обучения основам работы с базами данных без углубления в SQL.
- Системах управления контентом (CMS) — для создания пользовательских запросов к базе данных (например, в WordPress через плагины).
QBE и SQL
QBE не является заменой SQL, а скорее его надстройкой или альтернативным интерфейсом. В большинстве современных СУБД QBE-конструктор автоматически генерирует SQL-код, который затем можно просмотреть, отредактировать или сохранить. Таким образом, QBE служит мостом между пользователем, не знакомым с SQL, и реляционной базой данных.
Пример
Допустим, есть таблица «Сотрудники» с полями: Имя, Фамилия, Отдел, Дата_рождения, Зарплата.
Пользователь хочет найти всех сотрудников из отдела «Продажи» с зарплатой выше 50 000 рублей, родившихся после 1 января 1990 года.
В QBE-форме он заполнит:
| Поле | Условие отбора |
|---|---|
| Отдел | «Продажи» |
| Зарплата | >50000 |
| Дата_рождения | >01.01.1990 |
Система сгенерирует SQL-запрос:
``sql SELECT * FROM Сотрудники WHERE Отдел = 'Продажи' AND Зарплата > 50000 AND Дата_рождения > '1990-01-01'; ``
Интересные факты
- Первая реализация QBE была выполнена на языке APL, который известен своей лаконичностью и использованием специальных символов.
- Мосес Злооф, создатель QBE, в 1977 году получил патент США на «Систему запросов к базе данных на основе примеров» (US Patent 4,052,715).
- QBE оказал влияние на развитие других парадигм взаимодействия с базами данных, в частности на концепцию «программирования на примерах» (Programming by Example), которая применяется в некоторых современных инструментах ETL (Extract, Transform, Load).
Источники
- Zloof, M. M. (1977). Query-by-Example: A Data Base Language. IBM Systems Journal, 16(4), 324–343.
- Date, C. J. (2003). An Introduction to Database Systems (8th ed.). Addison-Wesley.
- Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
- Microsoft Corporation. (2023). Создание запроса в режиме конструктора в Access. Документация Microsoft.
- Oracle Corporation. (2022). Using Oracle SQL Developer for Query Building. Oracle Documentation.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →