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

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

ER-Datenmodell und Abfragen in SQL
Kapitel 3: Logische Datenmodelle
Zusammenfassung der Vorwoche
Bauinformatik II Softwareanwendungen 1
der Universität Oldenburg
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Java: Objektorientierte Programmierung
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/7
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Das Relationenmodell 1.
Übung Datenbanksysteme SQL-Anfragen (2)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Der letzte Schliff für Abfragen Übersicht über die Aggregatfunktionen.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Einführung Dateisystem <-> Datenbanksystem
Datenmodellierung - Aufbau einer Datenbank -
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
OQL-Anfragen (1) Alle Punkte, die auf der Null-Ebene liegen: selectstruct (ex : x, ey : y) fromallePunkte wherez = 0 Rückgabetyp: bag > Alle Kanten, die.
1 Klassen (1) Eine Klasse beschreibt eine Menge von Objekten mit gemeinsamer Struktur gemeinsamem Verhalten gemeinsamen Beziehungen gemeinsamer Semantik.
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Quilt: Eine XML Anfragesprache für heterogene Datenquellen
Datenbankentwicklung IV-LK
Die Grundterminologie
Datenbanken?.
Entwurfs- und Implementationsdiagramme
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
SQL Überblick Abfragen aus einer Tabelle
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
Befehle in SQL Erläuterungen.
Datenbanksysteme für hörer anderer Fachrichtungen
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Aggregatsfunktion SQL = Structured Query Language.
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
Mengenoperationen (1/3)
Einfache OQL-Ausdrücke (1) Literale und Objekte können direkt konstruiert werden; gültige Ausdrücke und ihre Typen sind z.B.: "Quader77": string struct(x:1.0,
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Analyseprodukte numerischer Modelle
Relationale Datenbanken IV
Semantische Integritätsbedingungen AIFB SS assert-Klausel (2/6) Beispiel 3-2: Angestellter: (Ang-Nr, Ang-Name, Gehalt, Familienstand, Abt-Bez).
SOFTWARE TECHNOLOGY 2009/2010 Faculty of Electrical Engineering and Technical Informatics Budapest University of Technology and Economics OO problems 1.
Verdichten von Daten mit Gruppenfunktionen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
Structured Query Language
Structured Query Language
Vorlesung #5 SQL (Teil 2).
Semantische Integritätsbedingungen  AIFB SS trigger-Klausel (2/5) Beispiel 3-5: Angestellter: (Ang-Nr, Ang-Name, Gehalt,Familienstand, Abt-Bez).
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Der ODMG Standard 6.2 Der ODMG Standard (1/2) Wesentliche Bestandteile des ODMG-93 Standards.
Einführung Dateisystem <-> Datenbanksystem
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
1 Syntaktische Grundform selectA 1, A 2, …, A n fromR 1, R 2, …, R m wherebedingung w ;
Sichtbarkeit einschränken
Datenbanken abfragen mit SQL
Objektorientierte Datenbanken zBeim vorigen Mal: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung FastObjects (t7)
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Vorlesung #5 SQL (Teil 2).
Nutzung und Modellierung von Datenbanken
2.3 Gruppierte Datensätze
(Structured Query Language)
 Präsentation transkript:

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(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

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (2/29) Zugriff auf Attribute Allgemeine Form (in „[ ]“ geschriebenes ist optional): SELECT e FROM e 1 [AS] x 1,...., e n [AS] x n WHERE e’ und (falls keine Duplikate erlaubt sind) SELECT DISTINCT e FROM e 1 [AS] x 1,...., e n [AS] x n WHERE e’ e, e’, e 1,..., e n, sind Ausdrücke x 1,..., x n sind Variabelennamen

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (3/29) Selektion: Alle Personen die in Bochum wohnen SELECT x FROM Personen x WHERE x.Adresse = “Bochum“ Personen ist die Extension der Klasse Person. Die Anfrage „Gib alle Personen aus, die in Bochum wohnen“ bedeutet, aus dem Extent der Klasse Person alle Objekte zu selektieren, deren Attribut „Adresse“ den Wert Bochum hat, Das Ergebnis ist eine Multimenge (Bag)

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (4/29) Projektion: Alle (Nach-)namen aller Personen SELECT DISTINCT x.Name FROM Personen x DISTINCT verhindert doppelte Namen Die Anfrage „Gib die Namen aller Personen aus“ bedeutet, daß aus der Klassenextension „Personen“ nur das Attribut „Name“ ausgegeben wird. Das Ergebnis ist eine Menge von Literalen (Typ Set )

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (5/29) Projektion: Vorname, Name und Geburtsdatum aller Personen SELECT DISTINCT struct (Name: x.Name, Vorname: x.Vorname, GebDatum: x.Geburtsdatum) FROM Personen x Für jede Person wird eine Struktur aufgebaut die Name, Vorname und Geburtsdatum enthält. Das Ergebnis ist eine Menge von strukturierten Literalen (Typ Set ) Alle Objekte einer Extension: Alle Objekte der Klasse Personen Personen es wir einfach die Extension der Klasse angegeben.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (6/29) Vererbte Attribute und „union“: Es soll allen Mitarbeitern und allen Dozenten eine Geburtstagskarte geschickt werden. Es soll hierfür eine Liste mit Anrede, Titel, Vorname, Name und Geburtsdatum ausgedruckt werden. Wenn ein Mitarbeiter auch als Dozent arbeitet, dann soll er nur einmal aufgeführt werden.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (7/29) SELECT struct (Anrede: x.Anrede, Titel: x.Titel, Vorname: x.Vorname, Name: x.Name, Geburtsdatum: x.Geburtsdatum) FROM Personen x WHERE x.Personen_Nr IN SELECT y.Personen_Nr FROM MitarbeiterE y UNION SELECT z.Personen_Nr FROM Dozenten z Personen_Nr ist für Objekte der Klasse Mitarbeiter und Dozent ein vererbtes Attribut.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (8/29) Weitere Mengenoperationen: „intersect“: SELECT x.Personen_Nr FROM Kunden x INTERSECT SELECT y.Personen_Nr FROM Dozenten y Liste aller Personennummern, die sowohl Kunde als auch Dozenten sind

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (9/29) „except“: SELECT x.Personen_Nr FROM Personen x EXCEPT SELECT y.Personen_Nr FROM Kunden y Liste aller Personen, die keine Kunden sind.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (11/29) Liste aller Kunden, die Mitarbeiter einer Firma sind SELECT DISTINCT x FROM 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

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (12/29) Welche Mitarbeiter der Firma „Hard&Soft“ sind Kunden? SELECT x.Name FROM Kunden x, x.ist_Mitarbeiter_von y WHERE y.Kurzname = “Hard&Soft“ das Attribut Kurzname von Firma ist in dem UML-Modell nicht aufgeführt. Ergebnis ist eine Multimenge von Literalen

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (13/29) Teilnehmerliste für die öffentliche Veranstaltung Nr.99 (Das Attribut Veranstaltungs_Nr ist im UML-Modell nicht aufgeführt) SELECT x.Name FROM 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. Joins Das Ganze entspricht in etwa den Joins in SQL

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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 y WHERE x.Adresse = y.Adresse

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (17/29) Quantoren: Allgemeine Form FOR ALL x IN e 1 : e 2 EXISTS x IN e 1 : e 2 x ist Variablenname e 1, e 2 Ausdrücke, wobei e 1 eine Sammlung und e 2 eine Prädikat ist OQL stellt auch die mathematischen All- und Existenzquantoren zur Verfügung.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (18/29) Sind alle Prämien kleiner als 3000 DM? FOR ALL x IN Dozenten: x.Praemien < Gab es eine Veranstaltung am ? EXISTS x IN Veranstaltungen: x.Vom = Die Ausdrücke liefern entweder true oder false und können z.B. in WHERE-Klauseln verwendet werden.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (19/29) Sortieren und Gruppieren: Allgemeine Form für sortieren SELECT_query ORDER BY e 1,..., e n [ASC| DESC] e 1,..., e n sind Ausdrücke Bsp. Kundenliste sortiert nach Umsatz: SELECT x FROM Kunden x ORDER BY x.Umsatz, x.Name x.Name ist zweites Sortierkriterium bei Gleichheit

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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 x ORDER BY x.Name

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (21/29) Allgemeine Form für Gruppierungen SELECT_query GROUP BY (p 1 : e 1,..., p n : e n ) und SELECT_query GROUP BY (p 1 : e 1,..., p n : e n ) HAVING p p 1,..., p n sind Eigenschaftsnamen e 1,...e n sind Ausdrücke mit einer freien Variablen x p Prädikat

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (22/29) Drei Kundenlisten für verschiedene Umsatzkategorien: SELECT x FROM Kunden x GROUP BY (A: x.Umsatz >= 20000, B:x.Umsatz >= and x.Umsatz < C:x.Umsatz < 10000) Ergebnistyp: Set ) >

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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 x GROUP BY Veranst: x.Referent.Titel HAVING AVG(SELECT p.x.Praemie FROM partition p)> 3000 Ergebnistyp: Bag (veranst : Veranstaltung, avgPraemie: Geldeinheit)

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (25/29) Ergebnistypen von Anfragen (Wdh.): Sammlung von Objekten mit Identität: Bsp.: SELECT x FROM Personen x WHERE x.name = “König“ Liefert eine Multimenge von Personen, deren Name König ist.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (26/29) Ein Objekt mit Identität: Bsp.: element( SELECT x FROM Personen x WHERE x.Personen_Nr = ) Liefert die Person bzw. das Objekt der Klasse Person, welche die Personen_Nr hat. Der element -Operator konvertiert eine einelementige Menge in das Element, welche sie enthält.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (27/29) Eine Sammlung von Literalen Bsp.: SELECT x.Umsatz FROM Kunden x WHERE x.Ort = “Heidelberg“ Liefert eine Multimenge von Umsatz-Zahlen von allen Kunden, die in Heidelberg wohnen.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (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.

RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen (29/29) Schachtelung von Anfragen: SELECT DISTINCT STRUCT( Name: x.Name, OO:(SELECTy FROM x.kann_fachlich_abhalte_n y WHERE y.Kurztitel = “OOA“) ) FROM Dozenten x Für jeden Dozenten wird eine Struktur mit dem Dozentennamen 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 ) >