Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Dr. Klaus Peters. Geboren 1962, 1988 Mathematik-Studium, Humboldt-Universität 1990 Promotion 1990-1994 Lehre und Forschung in Berlin, Bonn, Wuppertal."—  Präsentation transkript:

1 Dr. Klaus Peters

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

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

4 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: http://home.htw-berlin.de/~peterskl E-Mail: peterskl@htw-berlin.de

5 MotivationModellierungBeispieleAbfragenDiskussionSummary

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

7 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?

8 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?

9 MotivationModellierungBeispieleAbfragenDiskussionSummary

10 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.

11 A A B B D D C C E E

12 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.

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

14 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.

15 A A C C D D B B

16 MotivationModellierungBeispieleAbfragenDiskussionSummary

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

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

19 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

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

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

22 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.

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

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

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

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

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

28 IdVorlesungnoetigFuer 112 213 314 423 524 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

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

30 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

31 MotivationModellierungBeispieleAbfragenDiskussionSummary

32 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?

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

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

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

36 5 5 4 4 1 1 8 8 2 2 3 3 6 6 7 7 9 9 10 12 Abfrage: Wer ist der oberste Chef in der Abteilung vom Mitarbeiter Engel?

37 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

38 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

39 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.

40 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

41 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 ----- ----- -------------------------- 1 Engel /Engel 2 Engel /Beier/Engel 3 Engel /Albrecht/Beier/Engel 4 Engel /Kurz/Albrecht/Beier/Engel Nicht jedes DBMS unterstützt solche Befehle.

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

43 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(); }

44 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; }

45 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) }

46 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;

47 MotivationModellierungBeispieleAbfragenDiskussionSummary

48 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?

49 MotivationModellierungBeispieleAbfragenDiskussionSummary

50 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

51 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

52 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

53 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

54


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

Ähnliche Präsentationen


Google-Anzeigen