4.2 Query-by-Example Bildschirmdialog

Werbung
4.2 Query-by-Example
Bildschirmdialog
Query-by-Example (QBE) wurde Anfang der 70er Jahre bei IBM entwickelt
QBE wurde als Anfragesprache in dem IBM-Produkt QMF (Query Management Facility)
benutzt.
Eine zu QBE sehr ähnliches Schnittstelle ist im Datenbanksystem InterBase (Borland)
realisiert worden.
Anfrage: “Finde Name und Anschrift der Kunden mit negativem Kontostand”
Anforderung eines Tabellengerüstes:
Attribute (weitere verfügbar)
Relationen-Name
Kommandos
auf den Tupeln Beschreibung der Anfrage
wesentliche Punkte in QBE
Benutzung eines beispielhaften Tabellengerüstes zur Spezifikation einer Anfrage
beruht auf dem Bereichkalkül
Es wird folgendes Datenbankschema benutzt:
Name der erforderlichen Relation wird eingetragen, gefolgt von ‘P.’.
Kunde P.
Attributsnamen werden eingetragen:
Kunde KName
Kunde (KName, KAdr, Kto)
Auftrag (KName, Ware, Menge)
Lieferant (LName, LAdr, Ware, Preis)
KAdr
Kto
Anfrage wird durch Eintrag in der Tabelle spezifiziert
Kunde KName
P.
KAdr
P.
Kto
<0
Seite 117 von 127
Tabelle wird gefüllt mit Werten
Kunde KName
Huber
Jensen
Michl
Seite 118 von 127
Freie Tupelvariablen, die nur einmal benutzt werden, brauchen nicht aufgeführt zu
werden. Dadurch ergibt sich eine einfachere Schreibweise der Anfrage:
Lieferant LName
LAdr Ware Preis
P.
P.
Milch
KAdr
8000 München 40
4300 Essen 12
8000 München 1
Beispiele für Anfragen
Sprachelemente:
Welche Lieferanten liefern Milch oder Mehl?
Lieferant LName
LAdr
P.
P.
P.
P.
Entspricht im Tupelkalkül:
Kommandos, z. B. P., I., D., …
Bereichsvariablen: _X, _Huber
Konstanten: Huber, Milch
boolesche, arithmetische und relationale Operatoren
{x1, x2 |
∃
x4 : Lieferant(x1, x2, Milch, x4)
Ware Preis
Mehl
Milch
∨
Lieferant(x1, x2, Mehl, x4) }
Beispiel:
Welche Lieferanten liefern Milch?
Lieferant LName
_x P.
entspricht im Tupelkalkül:
{x1, x2 |
∃
LAdr
_y P.
Wer liefert Milch zu einem Preis zwischen 1 DM und 1,20 DM?
Lieferant LName
LAdr Ware Preis
_X P.
Milch >= 1.00
_X
Milch <= 1.20
Entspricht im Tupelkalkül:
Ware Preis
Milch
x4 : Lieferant(x1, x2, Milch, x4)}
{x1, x2 |
Seite 119 von 127
∃
x4 : Lieferant(x1, x2, Milch, x4)
∧
x4 ≥ 1.00
∧
x4 ≤ 1.20}
Seite 120 von 127
Condition-Box
Join-Anfragen
Welche Lieferanten liefern Milch oder Mehl?
Lieferant
LName
P.
LAdr
P.
Ware
_M
Welcher Lieferant liefert an Huber?
Preis
Lieferant
CONDITIONS
_M = (Milch or Mehl)
Auftrag
Welche Lieferanten liefern Brie und Perrier, wobei der Gesamtpreis nicht 7 DM
übersteigt?
Lieferant
LName
P. _Huber
_Huber
LAdr
Ware
Preis
Brie
_X
Perrier _Y
CONDITIONS
_X + _Y <= 7.00
Wer liefert Milch zu einem Preis zwischen 1 DM und 1,20 DM?
Lieferant
LName
_X P.
LAdr
Ware Preis
Milch _DM
LName
P.
LAdr
KName
Huber
Ware
_Brot
Ware
_Brot
Preis
Menge
Entspricht im Tupelkalkül:
{x1| ∃ x2, x3, x4 : Lieferant(x1, x2, x3, x4)
∧
∃
y3 : Auftrag(Huber, x3,y3)}
Beachte:
CONDITIONS
_DM = (≥1.00 and ≤1.20)
QBE entfernt automatisch Duplikate
Seite 121 von 127
Seite 122 von 127
Ergebnisrelation
Negation
Ermittle die Kunden, ihren Kontostand, was sie bestellen, wieviel sie bestellen.
Kunde KName
_Huber
KAdr
Auftrag KName Ware
_Huber _Bier
Bestellung Name
P.
_Huber
Was
_Bier
Kto
_100
¬
Ware Preis
_Brot _50
_Brot < _50
Erläuterungen:
Menge
_10
–
–
Wieviel Kontostand
_10
_100
Erläuterungen
–
–
Finde für jede Ware den billigsten Lieferanten!
Lieferant LName LAdr
P.
neues Tabellengerüst muß vor der Anfrage erzeugt werden
P. unter dem Relationennamen bedeutet, daß alle Attribute der Relation ausgegeben
werden.
Seite 123 von 127
Negation ¬ bedeutet, daß kein solches Tupel existiert.
Beachte aber:
Wenn ¬ vor einem Attribut benutzt wird, ist dies eine Abkürzung für
Finde alle Lieferanten, die zwei Artikel liefern können.
Lieferant LName LAdr Ware
P. _x
_Brot
¬ _Brot
_x
≠
.
Preis
Seite 124 von 127
Aggregatfunktionen
Einfügen, Ändern und Entfernen
Alle Aggregatfunktionen fordern, daß Duplikate zunächst nicht beseitigt sind
(implementiert durch ‘ALL.’).
Durch das Schlüsselwort ‘UN.’ ist es möglich Duplikate zu beseitigen und trotzdem noch
die Aggregatsfunktionen zu verwenden.
Aggregatsfunktionen: SUM., AVG., MAX., MIN., CNT.
Anfragen:
Befehl U. wird zum Abändern der Werte in Nicht-Schlüsselattributen benutzt.
– leere Felder werden nicht geändert
– Werte der Schlüsselattribute müssen angegeben sein
– Milchmann setzt den Preis der Milch auf 1,30 DM.
Lieferant LName
LAdr Ware Preis
U.
Milchmann
Milch 1.30
– Kuhlmann erhöht alle Preise seiner Artikel um 10%.
Lieferant LName
LAdr Ware Preis
U.
Kuhlmann
_Brot 1.1*_Wert
Kuhlmann
_Brot _Wert
Wieviel Lieferanten gibt es, die momentan etwas liefern.
Lieferant LName
LAdr Ware Preis
P.CNT.UN.ALL._X
Wieviel Liter Milch sind bestellt?
Auftrag KName Ware Menge
Milch P.SUM.ALL._X
Seite 125 von 127
Relationen und Sichten anlegen
Relation wird wie folgt angelegt:
I. Kunde I.
KEY I.
TYPE I.
DOMAIN I
INVERSION I
Erläuterungen:
–
–
–
–
KName
Y
CHAR
Namen
Y
KAdr
N
CHAR
Adressen
N
Kto
N
FIXED
Beträge
N
KEY: Definition der Schlüsselattribute
TYPE: Datentyp des Attributs
DOMAIN: Name für den Wertebereich des Attributs
INVERSION: Indexstruktur für dieses Attribut angelegt?
eine Sicht wird wie folgt angelegt:
I.VIEW Gute_Kunden I.
I.
Name
Adr
_Huber _Augsburg
Befehl I. und D. werden zum Einfügen und Löschen von Tupeln benutzt.
– Huber bestellt 20 Stück der Artikel, von denen Michl mehr als 100 Stück bestellt
hat.
Auftrag KName Ware Menge
I.
Huber _Brot 20
Michl
_Brot > 100
Kto
>0
Seite 127 von 127
Seite 126 von 127
Herunterladen