Query by example (QBE) é uma linguagem de consulta de banco de dados para bancos de dados relacionais. É a primeira linguagem de consulta gráfica, utilizando tabelas visuais onde o usuário insere comandos, elementos de exemplo e condições. A motivação por trás do QBE é que um analisador sintático pode converter as ações do usuário em declarações expressas em uma linguagem de manipulação de banco de dados, como SQL. Nos bastidores, é essa declaração que é realmente executada. Um front-end suficientemente abrangente pode minimizar o ônus para o usuário de lembrar os detalhes mais finos do SQL, e é mais fácil e produtivo para usuários finais (e até mesmo programadores) selecionar tabelas e colunas escolhendo-as em vez de digitar seus nomes.
QBE representa um trabalho seminal no desenvolvimento de usuários finais, frequentemente citado em artigos de pesquisa como um exemplo inicial desse tópico. O termo também se refere a uma técnica geral influenciada pelo trabalho de Zloof, pela qual apenas itens com valores de pesquisa são usados para "filtrar" os resultados. Ele fornece uma maneira para um usuário de software realizar consultas sem ter que conhecer uma linguagem de consulta (como SQL). O software pode gerar automaticamente as consultas para o usuário (geralmente nos bastidores).
História
Query by Example foi concebido por Moshé M. Zloof na IBM Research durante meados da década de 1970, em paralelo ao desenvolvimento do SQL, e influenciado pelo trabalho sobre bancos de dados relacionais de Edgar Codd. Originalmente limitado apenas ao propósito de recuperar dados, o QBE foi posteriormente estendido para permitir outras operações, como inserções, exclusões e atualizações, bem como a criação de tabelas temporárias.
Atualmente, o QBE é suportado em vários front-ends de bancos de dados relacionais, notavelmente o Microsoft Access, que implementa "Visual Query by Example", bem como o Microsoft SQL Server Enterprise Manager. Também é implementado em vários bancos de dados orientados a objetos (por exemplo, no db4o). O QBE é baseado no formalismo lógico chamado consulta tableau, embora o QBE adicione algumas extensões a isso, muito parecido com o SQL, que é baseado na álgebra relacional.
Exemplo
Um exemplo usando o banco de dados Fornecedores e Peças é apresentado aqui para ilustrar como o QBE funciona. Um usuário preencheria uma tabela visual com valores de exemplo e condições para recuperar linhas correspondentes.
Como uma técnica geral
Versões mais avançadas do QBE têm outras opções de operadores de comparação, frequentemente por meio de um menu suspenso, como "Contém", "Não Contém", "Começa Com", "Maior Que" e assim por diante. Outra abordagem para comparações de texto é permitir um ou mais caracteres curinga. Por exemplo, se um asterisco for designado como um caractere curinga em um sistema específico, então pesquisar sobrenomes usando "Rob*" retornaria (corresponderia) sobrenomes como "Rob", "Robert", "Robertson", "Roberto", etc.
No SQL padrão, o sinal de porcentagem funciona como um curinga em uma cláusula LIKE. Nesse caso, o software de processamento de formulários query-by-example traduziria o asterisco para um sinal de porcentagem. (Um asterisco é uma convenção de curinga mais comum fora do SQL, então aqui o formulário está tentando ser mais amigável ao usuário.)
O software query-by-example deve ter cuidado para evitar injeção de SQL. Caso contrário, usuários mal-intencionados podem penetrar mais profundamente no banco de dados do que o pretendido pelos construtores dos formulários de consulta.
Na recuperação de informações
No contexto da recuperação de informações, o QBE tem um significado um pouco diferente. O usuário pode enviar um documento, ou vários documentos, e pedir que documentos "semelhantes" sejam recuperados de um banco de dados de documentos (veja busca por múltiplos exemplos). A busca por similaridade é baseada na comparação de vetores de documentos (veja Modelo de Espaço Vetorial). Essa abordagem influenciou sistemas modernos de inteligência artificial, particularmente em aprendizado de máquina e aprendizado profundo, onde a recuperação baseada em similaridade é comum.
Legado e influência
A abordagem gráfica do QBE influenciou muitos front-ends de bancos de dados e ferramentas de desenvolvimento de usuários finais. Seus princípios são vistos em construtores visuais de consultas modernos e no design de interfaces amigáveis para sistemas complexos. O conceito de usar um exemplo como consulta tem paralelos em IA generativa e grandes modelos de linguagem, onde prompts ou exemplos orientam a geração de saída. O trabalho em Xerox PARC e MIT CSAIL sobre interação humano-computador baseou-se em ideias semelhantes de tornar a tecnologia acessível a não especialistas.
Ver também
- CRUD
- Microsoft Query by Example
- GraphQL, um QBE para front-ends JSON
- QBIC