Query by Example
Query by Example (abrégé QBE, en français interrogation par l'exemple), est un type d'interface utilisateur servant à effectuer des recherches dans des bases de données relationnelles. Le principe d'une interface QBE est que l'utilisateur présente un exemple du résultat de recherche attendu - sous forme d'une matrice, puis le soumet au SGBD. Celui-ci recherchera alors toutes les données qui correspondent à cet exemple. Les tables de la base de données sont présentées à l'écran, et l'utilisateur peut les manipuler en vue de créer l'exemple[1] - [2].
QBE a été inventé par Moshe Zloof pour le compte de IBM, en 1977.
Particularités
Avec ce systĂšme le rĂ©sultat prime sur les moyens de mise en Ćuvre. Avec QBE, il ne s'agit pas, pour l'utilisateur, ni le dĂ©veloppeur, d'apprendre un langage de requĂȘtes, mais tout simplement de dĂ©finir une image de la rĂ©ponse que l'on veut obtenir, pour voir figurer les donnĂ©es rĂ©pondant Ă l'interrogation demandĂ©e.
Il a été inventé par Moshe Zloof pour le compte de la compagnie IBM, en 1977. Commercialisé à partir de 1978, il a connu un certain succÚs grùce à son introduction au sein de la premiÚre version de Paradox (1.0 pour DOS) en 1985.
QBE est dĂšs l'origine un langage relationnel complet intĂ©grant la division relationnelle, opĂ©ration dĂ©crite dans l'algĂšbre relationnelle de Codd qui n'est toujours pas prĂ©sente de maniĂšre simple dans les plus rĂ©centes normes SQL (SQL:2003). En revanche QBE ne permet pas la rĂ©cursivitĂ© dans les requĂȘtes, alors que la version normative SQL:1999 le permet.
Exemple
Voici un exemple de requĂȘte QBE et son Ă©quivalent SQL :
RequĂȘte QBE
== T_CLIENT_CLI ===== CLI_NUM ============= CLI_NOM === | Check _join1! | Check | | | | == T_COMMANDE_CDE ===== CLI_NUM =========== CDE_DATE ================= CDE_MONTANT === | _join1 | â„ 2000-01-01, â€2000-03-31 | SOMME < 10000 | | | | |
RequĂȘte SQL
SELECT CDE.CLI_NUM, CLI_NOM
FROM T_CLIENT_CLI CLI
LEFT OUTER JOIN T_COMMANDE_CDE CDE
ON CLI.CLI_NUM = CDE.CLI_NUM
WHERE CDE_DATE BETWEEN DATE'2000-01-01' AND '2000-03-31'
GROUP BY CDE.CLI_NUM, CLI_NOM
HAVING SUM(CDE_MONTANT) < 10000
Disponibilité
Les systÚmes de gestion de base de données suivant mettent à disposition une interface QBE :