Dr. Klaus Peters. Geboren 1962, 1988 Mathematik-Studium, Humboldt-Universität 1990 Promotion 1990-1994 Lehre und Forschung in Berlin, Bonn, Wuppertal.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
ER-Datenmodell und Abfragen in SQL
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Entity Relationship Model (ERM)
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Baumstrukturen Richard Göbel.
Inner Joins.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
SQL als Abfragesprache
SQL als Abfragesprache
Mathematische Grundlagen
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Klausur „Diskrete Mathematik II“
Geometrische Objekte in Datenbanken Martin Pfeifle Institut für Informatik, Universität München Lehr- und Forschungseinheit für Datenbanksysteme Prof.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
Datenmodellierung - Aufbau einer Datenbank -
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
objekt-relationale Datenbanken
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Wir bauen uns eine Webapplikation!
Datenbanken?.
Effiziente Algorithmen
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
SQL Überblick Abfragen aus einer Tabelle
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Einführung in Datenbankmodellierung und SQL
Von Isabelle Spörl und Simon Schausberger
Algorithmen und Datenstrukturen Übungsmodul 8
se_4_graphen_und_baeume_I.ppt1 Softwareengineering Graphen und Bäume 1 Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
Erste Einführung in SQL
Structured Query Language
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Eine kurze Geschichte der Graphentheorie
Termin Festlegung Einführung MySQL Runterladen MySQL, Pentaho Design Studio Betrachtung Pentaho
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Datenbank für Skriptenverkauf
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
SQL Basics Schulung –
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Vorlesung #7 SQL (Teil 4).
 Präsentation transkript:

Dr. Klaus Peters

Geboren 1962, 1988 Mathematik-Studium, Humboldt-Universität 1990 Promotion Lehre und Forschung in Berlin, Bonn, Wuppertal Institut für Biochemie der HU; Design, Implementierung und Test diskreter geometrischer Algorithmen zur Untersuchung der räumlichen Struktur von Proteinen

Chefredakteur des Lexikons der Mathematik; Konzeption zur Erstellung des Lexikons, Auswahl der Stichwörter; Koordination der Themen, Autoren und Zuarbeiten DResearch GmbH; Beratung, Management und Software–Entwicklung; verantwortlicher Entwickler des Teilprojektes Installation und Update Plattform Komponenten auf SUN Clustersystemen und verteilten Systemen; Softwareverwaltungs- und Softwareausliefungssysteme

Seit 2009 DResearch GmbH; Entwicklung von Webapplikationen im eGovernment-Bereich; Installation, Konfiguration, Dokumentation, Entwicklung von automatischen Testumgebungen, Anwender-Schulungen für eGovernment-Projekte, Weiterentwicklung einer Bezahlplatform für sächsische Behörden und Gemeinden Seit 2009: Vorlesung zu Mathematik 1, 2 und 3 an der HTW für den Bachelor-Studiengang Computer Engineering Homepage:

MotivationModellierungBeispieleAbfragenDiskussionSummary

Modellierung und Beschreibung von Beziehungen zwischen Entitäten gleichen Typs Modellierung und Beschreibung von rückbezüglichen Beziehungen Entität s r

Wo treten solche Reflexionen in der Praxis auf? Welche Arten von Reflexionen gibt es? Welche Probleme gibt es bei reflexiven Beziehungen? Wie werden sie in einem DBMS abgebildet? Wie werden Abfragen programmiert, die mit dem vorhandenen SQL nicht abgebildet werden können?

Wer ist der Vorgesetzte eines Mitarbeiters? Welcher Bearbeiter vertritt wen? Welches ist die nächste Haltestelle eines Busses? Welche Vorlesungen sind für eine Vorlesungen Voraussetzung? Wie können solche Beziehungen modelliert werden?

MotivationModellierungBeispieleAbfragenDiskussionSummary

Definition: Ein (gerichteter) Graph ist ein Paar (E,K) (E – Ecken/Knoten), K- Kanten/Verbindungen), wobei K eine Menge Paaren von Ecken ist: K E E. Für eine Ecke heißen diejenigen Kanten, die diese Ecke als erstes Element haben, ausgehende Kanten, die anderen heißen eingehende Kanten.

A A B B D D C C E E

Definition: Ein Baum ist ein zusammenhängender Graph ohne Kreise, beim dem genau eine Ecke (die Wurzel) nur ausgehende Kanten hat und alle anderen Ecken genau eine eingehende haben.

A A E E C C F F D D B B G G H H

Definition: Eine Liste ist ein Baum, beim dem jeder Knoten nur maximal eine ausgehende Kante hat. Jeder Knoten hat maximal einem Vorgänger und maximal einen Nachfolger.

A A C C D D B B

MotivationModellierungBeispieleAbfragenDiskussionSummary

PersonalNrNachnameVorname 1MüllerPeter 2MeierClara 3LehmannThomas 4SchulzeHans 5SchröderAndreas 6HeinrichBeate Die Ausgangsdaten (Tabelle Mitarbeiter):

5. Andreas Schröder 3. Thomas Lehmann 1. Peter Müller 6. Beate Heinrich 2. Clara Meier 4. Hans Schulze

Die zusätzliche Spalte Vorgesetzter stellt einen Schlüssel auf die Tabelle selbst dar: mc:c-Beziehung PersonalNrNachnameVornameVorgesetzter 1MüllerPeter5 2MeierClara5 3LehmannThomas4 4SchulzeHans1 5SchröderAndreas 6HeinrichBeate2

PersonalNrNachnameAbteilung 1MüllerNordeuropa 2MeierNordeuropa 3LehmannSüdosteuropa 4SchulzeSüdosteuropa 5SchröderMitteleuropa 6HeinrichSüdosteuropa Die Ausgangsdaten (Tabelle Bearbeiter):

5. Andreas Schröder 3. Thomas Lehmann 1. Peter Müller 6. Beate Heinrich 2. Clara Meier 4. Hans Schulze

PersonalNrNachnameAbteilungVertreterFuer 1MüllerNordeuropa2 2MeierNordeuropa1 3LehmannSüdosteuropa4 4SchulzeSüdosteuropa6 5SchröderMitteleuropa 6HeinrichSüdosteuropa3 Die zusätzliche Spalte VertreterFuer realisiert die c:c Beziehung als Schlüssel auf sich selbst.

DIE BEZIEHUNG NÄCHSTE HALTESTELLE StationsNrStation 1Nordbahnhof 2Badstraße 3Schlossstraße 4Seeallee Die Ausgangsdaten (Tabelle Stationen):

3. Schlossstraße 4. Seeallee 2. Badstraße 1. Nordbahnhof

StationsNrStationnaechsteStation 1Nordbahnhof4 2Badstraße1 3Schloßstraße 4Seeallee3 Die zusätzliche Spalte naechsteStation realisiert als Schlüssel auf sich selbst die c:c-Beziehung.

Die Ausgangsdaten (Tabelle Vorlesungen): VNrVorlesung 1Zahlen 2Folgen 3Reihen 4Differentialrechnung

1. Zahlen 4. Differential- rechnung 2. Folgen 3. Reihen

IdVorlesungnoetigFuer Die Abhängigkeit zwischen den Vorlesungen wird als mc:mc-Beziehung durch eine zusätzliche Tabelle mit zwei Schlüsseln auf die Vorlesungstabelle realisiert. VNrVorlesung 1Zahlen 2Folgen 3Reihen 4Differentialrechnung

Eine reflexive Datenbank ist eine Datenbank, bei der wenigstens eine Tabelle (reflexive Tabelle) eine Beziehung auf sich selber hat.

Relation zwischen gleichartigen Entitäten Abfragen werden schnell zu Ketten von Abfragen Zyklen sind möglich Modellierender Graph kann unzusammenhängend sein Ketten von Abfragen könnten schwierig zu beantworten sein

MotivationModellierungBeispieleAbfragenDiskussionSummary

Wer ist der Chef einer Abteilung? Welche Mitarbeiter muss ich maximal vertreten? Wird eine bestimmte Haltstelle vor einer anderen angefahren? Welche Vorlesungen sind insgesamt Voraussetzungen für eine bestimmte Vorlesung?

Kartesisches Produkt WITH-Klausel IN-Klausel START WITH … CONNECT BY-Klausel

CREATE TABLE Ma( id NUMBER(10), name VARCHAR2(20), abteilung VARCHAR2(20), vorgesetzter NUMBER(10), PRIMARY KEY (Id), FOREIGN KEY (vorgesetzter) REFERENCES MA);

IDNameAbteilungVorgesetzter 1Albrechta111 2Beiera11 3Conrada112 4Dietza12 5Engela12 6Fischera12 7Gerickea13 8Holza13 9Ingolda15 10Jungea15 11Kurza20 12Lorenza111

Abfrage: Wer ist der oberste Chef in der Abteilung vom Mitarbeiter Engel?

SELECT ma1.name, ma2.name chef FROM Ma ma1, Ma ma2 WHERE ma1.vorgesetzter = ma2.id; NAME Chef Albrecht Kurz Beier Albrecht Conrad Lorenz Dietz Beier Engel Beier Fischer Beier Gericke Conrad Holz Conrad Ingold Engel Junge Engel Lorenz Kurz

WITH n AS(SELECT ma1.name, ma2.name chef FROM Ma ma1, Ma ma2 WHERE ma1.vorgesetzter=ma2.id) SELECT name, chef FROM n ORDER BY chef; NAME CHEF Beier Albrecht Fischer Beier Dietz Beier Engel Beier Holz Conrad Gierke Conrad Ingold Engel Lorenz Kurz Albrecht Kurz Conrad Lorenz

SELECT name,id,vorgesetzter FROM Ma WHERE id IN (SELECT vorgesetzter FROM Ma WHERE id='5'); NAME ID VORGESETZTER Beier 2 1 SELECT name,id,vorgesetzter FROM Ma WHERE id IN (SELECT vorgesetzter FROM Ma WHERE id IN (SELECT vorgesetzter FROM Ma WHERE id='5')); NAME ID VORGESETZTER Albrecht 1 11 Mit der IN-Klausel können wir nur eine endliche Tiefe des Baumes erfassen.

SQL> select lpad(' ',level+1)||name name, id from ma start with id='5' connect by prior vorgesetzter=id; NAME ID Engel 5 Beier 2 Albrecht 1 Kurz 11

SELECT level, name, sys_connect_by_path(name,'/') name_path FROM ma WHERE id = '5' CONNECT BY NOCYCLE PRIOR id=vorgesetzter order by level; LEVEL NAME NAME_PATH Engel /Engel 2 Engel /Beier/Engel 3 Engel /Albrecht/Beier/Engel 4 Engel /Kurz/Albrecht/Beier/Engel Nicht jedes DBMS unterstützt solche Befehle.

Abfragen über Programmiersprachen realisieren (Java, C#, VBA, PLSQL) Rekursivität wird benötigt. Abbruchkriterien einfügen

public Knoten getWurzelInAbt(Mitarbeiter m, long id) { Knoten k = m.getKnoten(id); Abteilung a = k.getAbteilung(); if(k.getVorgesetzter() == null || b.getKnoten(k.getVorgesetzer).getAbteilung() != a) { return k; } else { return getWurzelInAbt(m, m.getKnoten(k.getVorgesetzter).getId(); }

public Knoten[] getAlleVertretene(Bearbeiter b, long id) { Knoten k0 = b.getKnoten(id); k=k0; Knoten[] vertretene = null; while (k.getVertreterFuer()!=null && k.getVertreterFuer() != k0) { k=k.getVertreterFuer(); vetretene.add(k); } return vetretene; }

public Boolean isNachfolgendeHS(Stationen s, long id1, long id2) { Knoten k1 = s.getKnoten(id1); Knoten k2 = s.getKnoten(id2); Knoten k = k1; while (k.getNaechsteHS()!= null && k.getNaechsteHS()!= k2) { k=k.getNaechsteHS(); }; return (k == k2) }

public Knoten[] getAlleBenoetigteV(Vorlesungen v, long id) { Knoten[] alleBenoetigteV = null; Knoten[] benoetigteV = v.getBenoetigtFuer(id); if ( benoetigteV !=null ) { alleBenoetigteV.addListUnique(benoetigteV); for (i=0; i<benoetigteV.size(); i++) { alleBenoetigteV.addListUnique( getAlleBenoetigteV(v, benoetigteV[i].getId))); } return alleBenoetigteV;

MotivationModellierungBeispieleAbfragenDiskussionSummary

Kann man in den Beispielen auf die Reflexivität verzichten? Was sind die Vorteile? Was sind die Nachteile? Wie würde man ein komplexes Liniennetz mit mehreren Stationen und mehreren Buslinien realisieren?

MotivationModellierungBeispieleAbfragenDiskussionSummary

reflexive relations can be modelled by graphs (trees or lists or nets) reflexive relations lead to chains of request chains of request are mapped to find paths from one node of the graph to another node modelling graph may contain cycles or may be not connected

reflexive relations can be represented in the database via additional key columns (one-to- many or one-to-one many-to many relations) SQL statements support reflexive relations for chains of requests recursivity and abort conditions are necessary For more complicate request we have to use program interfaces

Wo treten solche Reflexionen in der Praxis auf? Bei der Abbildung von Graphen, Bäumen, Listen Welche Arten von Reflexionen gibt es? Es gibt mc:nc-, c:nc- und c:c-Beziehungen Was ist das Problem mit diesen Reflexionen? Rekursion nötig Zyklen erkennen Graph könnte nicht zusammenhängend sein

Wie werden sie in DBMS abgebildet? Durch Schlüssel auf die eigene Tabelle Durch intermediäre Tabellen mit zwei Schlüsseln auf die Tabelle Wie werden Abfragen programmiert, die mit dem vorhandenen SQL nicht abgebildet werden können? Programme müssen rekursiv arbeiten Abbruchkriterien wichtig