Query by Example (běžně zkracováno na QBE) je databázový dotazovacíjazyk pro relační databáze. Byl vyvinut ve společnosti IBM v 70. letech 20. století. Vývoj jazyka SQL probíhal souběžně. QBE byl navržen pro uživatele, kteří pracují s databázemi příležitostně a nechtějí se učit textovou syntaxi dotazovacích jazyků jako SQL — místo psaní dotazu uživatel „ukáže“ příklad výsledku nebo vyplní vizuální formulář reprezentující schéma databáze.

Princip fungování

Při použití příkladových dotazů se uživatelům zobrazí vizuální schéma databáze (např. seznam tabulek a jejich sloupců), které mohou upravovat pomocí speciálního editoru. Když jsou hotovi, parser převede jejich akce na dotaz v běžném dotazovacím jazyce (často SQL). Za tímto mezivrstvou se pak příkaz skutečně provede na databázi. Díky vhodnému front-endu si uživatel nemusí pamatovat syntaktické detaily dotazovacího jazyka; místo psaní jmen tabulek a sloupců často stačí na ně kliknout nebo do polí vložit příklady hodnot.

Typické prvky rozhraní QBE

  • mřížka nebo formulář s vypsanými tabulkami a jejich atributy (sloupci),
  • možnost vložit do polí konkrétní hodnoty, rozsahy nebo zástupné symboly (wildcards),
  • označení polí pro výběr (SELECT), řazení (ORDER BY), seskupování (GROUP BY) či agregace (SUM, COUNT apod.),
  • použití stejného jména proměnné ve více tabulkách pro vyjádření spojení (JOIN),
  • vizuální filtry a logické podmínky (AND/OR/NOT) bez nutnosti psát SQL.

Příklad (slovně)

Chcete-li například v QBE vybrat zaměstnance z oddělení „Prodej“ s platem větším než 50 000, v mřížce u sloupce oddělení zadáte hodnotu Prodej a u sloupce plat výraz >50000. Editor pak vygeneruje odpovídající SQL dotaz a provede ho. Pro spojení dvou tabulek (např. Zaměstnanci a Oddělení) stačí do příslušných polí vložit stejnou proměnnou nebo vytvořit vizuální linku mezi sloupci.

Výhody a omezení

  • Výhody: snižuje vstupní bariéru pro neprogramátory; zrychluje běžné dotazy; eliminuje překlepy v názvech tabulek/sloupců; učí koncepty relačního dotazování vizuálně.
  • Omezení: u složitých dotazů (pokročilé poddotazy, některé druhy agregací nebo optimalizace) může být QBE méně přehledné nebo méně flexibilní než ručně psané SQL; kvalita generovaného SQL závisí na implementaci front-endu a optimalizátoru;
  • implicitní převod do SQL může někdy vést k neoptimálním dotazům, pokud rozhraní nerozumí dobře relačním vlastnostem dat nebo indexům.

QBE v kontextu vyhledávání informací

V kontextu vyhledávání informací může zkratka QBE znamenat něco jiného: uživatel zadá jako „dotaz“ celý dokument nebo příklad textu a systém vrátí „podobné“ dokumenty z kolekce. Toto dotazování je založeno na porovnávání vektorových reprezentací dokumentů (viz Model vektorového prostoru) — metoda často používaná v informačním vyhledávání a doporučovacích systémech.

Historie a vliv

QBE vznikl jako uživatelsky orientovaná alternativa k textovým dotazovacím jazykům. Jeho koncepty (vizuální návrhář dotazů, mřížkový editor dotazů) ovlivnily řadu komerčních nástrojů a desktopových aplikací. Mnohé dnes dostupné nástroje pro práci s databázemi (grafické návrháře dotazů, „query builders“) využívají myšlenky QBE, aby zpřístupnily složité dotazy širšímu okruhu uživatelů.

Implementace a moderní nástroje

Mnoho databázových systémů má dnes front-endy, které se podobají QBE. Typické příklady v praxi jsou grafické návrháře dotazů v nástrojích jako Microsoft Access, různých databázových IDE a některých webových rozhraních pro správu databází. Moderní BI nástroje a vizualizační platformy často nabízejí „drag-and-drop“ rozhraní, které kombinuje principy QBE s pokročilou vizualizací a transformacemi dat.

Závěr

QBE zjednodušuje tvorbu dotazů tím, že uživateli umožní vyjádřit požadovaný výsledek pomocí příkladů a vizuálních úprav, zatímco v pozadí probíhá převod na formální dotazovací jazyk (obvykle SQL). Díky tomu je užitečný zejména pro příležitostné uživatele, analytiky a v nástrojích zaměřených na rychlou tvorbu dotazů a reportů. Pro velmi složité nebo vysoce optimalizované dotazy zůstává důležité umět pracovat přímo se SQL nebo s jinými pokročilými dotazovacími jazyky.