Открыть сервис

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).

Источники

  1. Zloof, M. M. (1977). Query-by-Example: A Data Base Language. IBM Systems Journal, 16(4), 324–343.
  2. Date, C. J. (2003). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  3. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  4. Microsoft Corporation. (2023). Создание запроса в режиме конструктора в Access. Документация Microsoft.
  5. Oracle Corporation. (2022). Using Oracle SQL Developer for Query Building. Oracle Documentation.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →