Query by Example
Query by Example (QBE; engl., „Abfrage anhand von Beispielen“) ist eine relationale Datenbank-Abfragesprache, die von Moshé M. Zloof bei IBM parallel zu System R entwickelt wurde. Sie beruht im Wesentlichen auf dem Bereichskalkül. Dabei wird die Abfrage (Query) nicht wie in SQL durch einen Text repräsentiert, sondern durch ein Tabellengerüst, das mit Spezialeditoren bearbeitet werden kann. Diese grafische Abfragesprache richtet sich speziell an Gelegenheitsbenutzer, die mit SQL und anderen komplexen Abfragen wenig anfangen können.
Verwendung
QBE-ähnliche Schnittstellen finden sich noch heute als grafische Frontends für Datenbanksysteme.
Die QBE-Schnittstelle findet man beispielsweise als eine von mehreren Abfragefunktionen in den DOS-Datenbankprogrammen dBASE-IV und -V, welche 1988–1995 stark verbreitet waren, verwirklicht.
QBE ist relational vollständig, jedoch ist für manche Anfragen eine Folge von QBE-Anfragen nötig, daher ist es nicht streng relational vollständig.
Bei der Suche in Suchmaschinen meint man mit Query by Example die Suche nach Dokumenten, die eine Mindestübereinstimmung zu einem selektierten Beispiel-Dokument aufweisen.
Prinzipien
Das System stellt zunächst ein Tabellengerüst (auch: -skelett) zur Verfügung, das durch den Benutzer mit Beispielelementen, Vergleichsoperationen und Kommandos gefüllt werden kann. Für komplexere Bedingungen gibt es eine spezielle Tabelle, die condition box. Weiterhin können Aggregatfunktionen verwendet werden. Zeilen können insgesamt auch negiert werden.
Beispielelemente beginnen mit „_“ und dienen der Verknüpfung von Tabellen (Join) und der Angabe von Bedingungen in der condition box. Vergleichsoperationen werden in einer Zelle angegeben, zum Beispiel vergleicht der Eintrag „>7“ das Attribut entsprechend. Die Kommandos sind P., I. und D. und stehen für print, insert und delete. I. und D. werden immer in der ersten Spalte angegeben, P. kann in der ersten Spalte stehen, um die gesamte Zeile auszugeben, oder bei einem oder mehreren Attributen, um nur diese Attribute auszugeben – eine negierte Zeile darf allerdings kein P. enthalten.
Beispiele
Im System seien diese Relationen vorhanden:
| KUNDE | (kdnr, kname, adresse, ort) |
| AUFTRAG | (auftragsnr, kdnr, warennr, menge) |
| WARE | (warennr, wname, wpreis) |
In QBE stellt man dann Anfragen durch Befüllen der Tabellengerüste.
| KUNDE | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| P. |
| KUNDE | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| P. | ='Bremen' |
An diesen Beispielen sieht man, wie die Projektion (Ausblenden von Spalten) und die Selektion (Ausblenden von Zeilen) umgesetzt werden. Zwei Anfragen, die Verknüpfungen benutzen, und Beispielelemente verwenden:
|
|
Das nächste Beispiel zeigt die Verwendung negierter Zeilen:
|
|
Das Kreuzprodukt zweier Relationen würde man wie folgt bilden:
|
|
| W × A | warennr | wname | wpreis | auftragsnr | kdnr | warennr | menge |
|---|---|---|---|---|---|---|---|
| P. | _warennr | _wname | _wpreis | _auftragsnr | _kdnr | _warennr2 | _menge |
Für die Umsetzung der Mengenoperationen der relationalen Algebra sind mehrere Anweisungen notwendig. Hätte man zwei Relationen mit dem KUNDEN-Schema, KUNDE und BETRÜGER, könnte man alle möglichen AUFTRAGGEBER durch eine Vereinigung der beiden Relationen erhalten. Dies ist nur mit zwei Operationen möglich, nicht mit einer einzigen:
| KUNDE | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| _kdnr | _kname | _adresse | _ort |
| AUFTRAGGEBER | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| I. | _kdnr | _kname | _adresse | _ort |
Es werden zuerst die Werte der KUNDE-Relation in eine neue Relation eingefügt. Danach, in einer zweiten Operation, kommen die BETRÜGER dazu:
| BETRÜGER | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| _kdnr | _kname | _adresse | _ort |
| AUFTRAGGEBER | kdnr | kname | adresse | ort |
|---|---|---|---|---|
| I. | _kdnr | _kname | _adresse | _ort |
Die neue Relation enthält jetzt KUNDE ∪ BETRÜGER.
Weblinks
- {{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Ramakrishnan, Raghu; Gehrke, Johannes|Ramakrishnan, Raghu; Gehrke, Johannes: }}{{#if:|{{#if:Query by Example|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Query by Example}}]{{#if:PDF; 140 kB| (PDF; 140 kB)}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Query by Example}}}}|[{{#invoke:URLutil|getNormalized|1=https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Query by Example}}}}]}}{{#if:PDF; 140 kB| (PDF; 140 kB{{#if:Database Management Systems (3rd ed.)www.cs.wisc.edu{{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}}%7C%7C}}}}{{#if:Query by Example|{{#if:{{#invoke:WLink|isValidLinktext|1=Query by Example|lines=0}}||}}}}{{#if: Database Management Systems (3rd ed.)| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Database Management Systems (3rd ed.)}}}}{{#if: www.cs.wisc.edu| www.cs.wisc.edu{{#if: |,|{{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format||noerror=1}}
|{{#invoke:DateTime|format||T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=|class=Zitationswartung}} }}{{#if: |,|{{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:www.cs.wisc.edu|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:138073||(?)}}}}}}{{#if: 2011-10-15|;}}}}{{#if: 2011-10-15| {{#if:www.cs.wisc.edu{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2011-10-15 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2011-10-15|class=Zitationswartung}} }} {{#invoke:DateTime|format|2011-10-15|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:Database Management Systems (3rd ed.)www.cs.wisc.edu{{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if:PDF; 140 kB | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2011-10-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if:{{#invoke:URLutil|isWebURL|https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if:{{#invoke:URLutil|isWebURL|https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if:{{#invoke:URLutil|isWebURL|https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf | {{#if:{{#invoke:URLutil|isWebURL|https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://pages.cs.wisc.edu/~dbbook/openAccess/thirdEdition/qbe.pdf }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Datenbanksprache