RelationentheorieObjektorientierte Datenbanken AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29)...

21
RelationentheorieObjektorientierte Datenbanken AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (1/29) (1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die auf Sammlungen (Set, List, Bag, Array) arbeiten. SQL arbeitet nur auf (Multi-)Mengen, da die Tupel einer Tabelle Mengen darstellen. Möglich ist: Zugriff auf Attribute Durchlaufen von Beziehungen Aufruf von Operationen Quantoren Sortieren und Gruppieren

Transcript of RelationentheorieObjektorientierte Datenbanken AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29)...

Page 1: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

1

6.3.1 Anfragen auf Sammlungen6.3.1 Anfragen auf Sammlungen (1/29)(1/29)

OQL besteht aus einer Menge von Anfrageausdrücken, die auf Sammlungen (Set, List, Bag, Array) arbeiten. SQL arbeitet nur auf (Multi-)Mengen, da die Tupel einer Tabelle Mengen darstellen.

Möglich ist:

• Zugriff auf Attribute

• Durchlaufen von Beziehungen

• Aufruf von Operationen

• Quantoren

• Sortieren und Gruppieren

Page 2: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

10

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (10/29)(10/29)

Durchlaufen von Beziehungen:

Liste aller Kunden mit ihren Arbeitgebern

SELECT STRUCT( Kundenname: x.Name,

Firmenname: x.ist_Mitarbeiter_von.Name)FROM Kunden x

ist_Mitarbeiter_von ist der entsprechende Rollenname (Unterschied zum UML-Modell)

Auf eine Beziehung kann also wie auf ein Attribut mit der Punkt-Notation zugegriffen werden. Im Bsp. wird die Assoziation von Kunde zu Firma durchlaufen und auf den Namen zugegriffen. Über Beziehungen kann also von einem Objekt zum anderen navigiert werden.

Page 3: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

11

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (11/29)(11/29)

Liste aller Kunden, die Mitarbeiter einer Firma sind

SELECT DISTINCT xFROM Kunden x,

x.ist_Mitarbeiter_von y

In OQL kann eine Sammlung von einer vorher ermittelten Sammlung abgeleitet werden, indem man einem Pfad folgt, der bei der ersten Sammlung beginnt. Im Bsp. werden alle Kunden ausgewählt, die Mitarbeiter einer Firma sind.Alternative über Subquery

Page 4: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

12

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (12/29)(12/29)

Welche Mitarbeiter der Firma „Hard&Soft“ sind Kunden?

SELECT x.NameFROM Kunden x,

x.ist_Mitarbeiter_von yWHERE y.Kurzname = “Hard&Soft“

das Attribut Kurzname von Firma ist in dem UML-Modell nicht aufgeführt.Ergebnis ist eine Multimenge von Literalen

Page 5: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

13

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (13/29)(13/29)

Teilnehmerliste für die öffentliche Veranstaltung Nr.99 (Das Attribut Veranstaltungs_Nr ist im UML-Modell nicht aufgeführt)

SELECT x.NameFROM y.hat_Teilnehmer x,

z.gebucht_von y, oeffentliche_VeranstE z

WHERE z.Veranstaltungs_Nr=99

Startpunkt der Abfrage ist die Klassenextension „oeffentliche_VeranstE“. Von dort wird die Beziehung (der Pfad) „gebucht_von“ in Richtung der Klassenextension „Kundenbuchung“ durchlaufen. Von Kundenbuchungen wird die Beziehung (der Pfad) „hat_Teilnehmer“ in Richtung „Kunden“ durchlaufen.

Das Ganze entspricht in etwa den JoinsJoins in SQL

Page 6: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

14

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (14/29)(14/29)

Verbund:

Das Schulungsunternehmen möchte wissen, welche Mitarbeiter und welche Dozenten die gleiche Adresse haben.

SELECT STRUCT(x, y)FROM Mitarbeiter x,

Dozenten yWHERE x.Adresse = y.Adresse

Page 7: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

15

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (15/29)(15/29)

Aufruf von Operationen:

Berechnung der Gehälter aller Dozenten

SELECT STRUCT (Name: x.Name, Honorar: x.Gehalt)

FROM Dozenten x

Mit x.Gehalt wird die Operation Gehalt aufgerufen.

Gehalt ist eine Operation, die in der Oberklasse Person definiert und in den Unterklassen Mitarbeiter und Dozent redefiniert ist.

Ergebnis: Gehaltsliste der Dozenten.

Page 8: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

16

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (16/29)(16/29)

Liste der Gehälter,aller Personer(d.h. von Dozenten, Mitarbeitern und der Kunden, obwohl letzteres keinen Sinn macht)

SELECT struct (Name: x.Name, HonorarGehalt: x.Gehalt)

FROM Personen x

Ändert man später die Klasse so, dass Gehalt keine Operation mehr ist, sondern ein Attribut, dann muss die Abfrage nicht geändert werden.

Page 9: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

17

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (17/29)(17/29)

Quantoren:Quantoren:

Allgemeine Form

FOR ALL x IN e1: e2

EXISTS x IN e1: e2

x ist Variablenname

e1, e2 Ausdrücke, wobei e1 eine Sammlung und e2 eine Prädikat ist

OQL stellt auch die mathematischen All- und Existenzquantoren zur Verfügung.

Page 10: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

18

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (18/29)(18/29)

Sind alle Prämien kleiner als 3000 DM?

FOR ALL x IN Dozenten: x.Praemien < 3000.0

Gab es eine Veranstaltung am 2.5.1998?

EXISTS x IN Veranstaltungen: x.Vom = 020598

Die Ausdrücke liefern entweder true oder false und können z.B. in WHERE-Klauseln verwendet werden.

Page 11: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

19

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (19/29)(19/29)

Sortieren und Gruppieren:

Allgemeine Form für sortieren

SELECT_query ORDER BY e1, ..., en [ASC| DESC]

e1, ..., en sind Ausdrücke

Bsp. Kundenliste sortiert nach Umsatz:

SELECT xFROM Kunden x ORDER BY x.Umsatz, x.Name

x.Name ist zweites Sortierkriterium bei Gleichheit

Page 12: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

20

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (20/29)(20/29)

Firmenliste (alphabetisch), bei der für jede Firma vermerkt ist, wie viele Mitarbeiter Kunden sind:

SELECT STRUCT(Name: x.Name, Mitarbeiteranzahl:

count(x.ist_Arbeitgeber _von))FROM Firmen xORDER BY x.Name

Page 13: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

21

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (21/29)(21/29)

Allgemeine Form für Gruppierungen

SELECT_query GROUP BY (p1: e1, ..., pn: en)

und

SELECT_query GROUP BY (p1: e1, ..., pn: en)

HAVING p

p1, ..., pn sind Eigenschaftsnamene1, ...en sind Ausdrücke mit einer freien Variablen xp Prädikat

Page 14: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

22

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (22/29)(22/29)

Drei Kundenlisten für verschiedene Umsatzkategorien:

SELECT x FROM Kunden xGROUP BY

(A: x.Umsatz >= 20000, B: x.Umsatz >= 10000 and x.Umsatz < 20000 C: x.Umsatz < 10000)

Ergebnistyp: Set <struct(A: boolean, B: boolean, C: boolean, partition: set<Kunde>)

>

Page 15: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

23

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (23/29)(23/29)

Liste aller Veranstaltungen, bei denen die Dozenten, die diese Veranstaltung halten, im Durchschnitt über 3000 DM Prämie bekommen:

SELECT STRUCT(Veranst: x.Referent.Titel, avgPraemie:AVG(SELECT p.x.Praemie FROM partition p) )

FROM Dozenten xGROUP BY Veranst: x.Referent.TitelHAVING AVG(SELECT p.x.Praemie

FROM partition p)> 3000

Ergebnistyp: Bag (veranst : Veranstaltung, avgPraemie: Geldeinheit)

Page 16: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

24

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (24/29)(24/29)

Anmerkung:

Statt AVG( SELECT p.x.Praemie FROM partition p)

wäre auch die Kurzfassung

AVG( SELECT x.Praemie FROM partition)

möglich gewesen.

Page 17: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

25

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (25/29)(25/29)

Ergebnistypen von Anfragen (Wdh.):

Sammlung von Objekten mit Identität:

Bsp.: SELECT x FROM Personen xWHERE x.name = “König“

Liefert eine Multimenge von Personen, deren Name König ist.

Page 18: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

26

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (26/29)(26/29)

Ein Objekt mit Identität:

Bsp.:

element( SELECT x

FROM Personen x WHERE x.Personen_Nr = 123456789

)

Liefert die Person bzw. das Objekt der Klasse Person, welche die Personen_Nr 123456789 hat.

Der element-Operator konvertiert eine einelementige Menge in das Element, welche sie enthält.

Page 19: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

27

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (27/29)(27/29)

Eine Sammlung von Literalen

Bsp.:

SELECT x.Umsatz FROM Kunden xWHERE x.Ort = “Heidelberg“

Liefert eine Multimenge von Umsatz-Zahlen von allen Kunden, die in Heidelberg wohnen.

Page 20: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

28

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (28/29)(28/29)

Ein Literal

Bsp.:

element( SELECT x.Name FROM Veranstaltungen x WHERE x.Veranstaltungs_Nr = 123 )

Liefert als Literal den Namen der Veranstaltung mit der Nummer 123

Die Attribute Name und Veranstaltungs_Nr sind nicht im UML-Modell am Anfang der Vorlesung (p.11) beschrieben.

Page 21: RelationentheorieObjektorientierte Datenbanken  AIFB SS2001 1 6.3.1 Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.

Rel

atio

nent

heor

ieO

bjek

torie

ntie

rte D

aten

bank

en

A

IFB

SS2

001

29

6.3.1 Anfragen auf Sammlungen 6.3.1 Anfragen auf Sammlungen (29/29)(29/29)Schachtelung von Anfragen:

SELECT DISTINCT STRUCT( Name: x.Name, OO:(SELECT y FROM x.kann_fachlich_abhalte_n y WHERE y.Kurztitel = “OOA“) )

FROM Dozenten x

• Für jeden Dozenten wird eine Struktur mit demDozentennamen und einer Multimenge der Seminartypen mit dem Kurztitel OOA aufgebaut, die dieser Dozent abhalten kann.

• Für jeden Dozenten x wird OO berechnet, indem von ihm ausgehend jeweils die Beziehung kann_fachlich_abhalten durchlaufen wird.

Ergebnistyp: SET<STRUCT( Name: string, OO: bag <Seminartyp>)

>