1 / 51

Reflexive Datenbanken

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

Download Presentation

Reflexive Datenbanken

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Reflexive Datenbanken 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 Biographie (1/3)

  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 Biographie (2/3)

  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 Biographie (3/3)

  5. Agenda

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

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

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

  9. Modellierung

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

  11. A B D C E Beispiel für Graphen

  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. Bäume

  13. A E F C D B G H Beispiel für Bäume

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

  15. C A B D Beispiel für Listen

  16. Beispiele

  17. Die Beziehung „Vorgesetzter“ • Die Ausgangsdaten (Tabelle „Mitarbeiter“):

  18. 5. Andreas Schröder 2. Clara Meier 1. Peter Müller 3. Thomas Lehmann 6. Beate Heinrich 4. Hans Schulze Die Beziehung „Vorgesetzter“ als Baum

  19. … als Datenbanktabelle Die zusätzliche Spalte „Vorgesetzter“ stellt einen Schlüssel auf die Tabelle selbst dar: mc:c-Beziehung

  20. Die Beziehung „Vertreter Für“ • Die Ausgangsdaten (Tabelle „Bearbeiter“):

  21. 2. Clara Meier 5. Andreas Schröder 3. Thomas Lehmann 6. Beate Heinrich 4. Hans Schulze 1. Peter Müller Die Beziehung „Vertreter Für“ als Graph

  22. Die zusätzliche Spalte „VertreterFuer“ realisiert die c:c Beziehung als Schlüssel auf sich selbst. …als Datenbanktabelle

  23. DIE BEZIEHUNG „NÄCHSTE HALTESTELLE“ • Die Ausgangsdaten (Tabelle „Stationen“):

  24. 2. Badstraße 3. Schlossstraße 4. Seeallee 1. Nordbahnhof DIE BEZIEHUNG „NÄCHSTE HALTESTELLE“ als Liste

  25. Die zusätzliche Spalte „naechsteStation“ realisiert als Schlüssel auf sich selbst die c:c-Beziehung. Als Datenbanktabelle

  26. Die Beziehung „benötigte Vorlesung“ • Die Ausgangsdaten (Tabelle „Vorlesungen“):

  27. 4. Differential-rechnung 1. Zahlen 2. Folgen 3. Reihen Die Beziehung „benötigte Vorlesung“als Graph

  28. Die Abhängigkeit zwischen den Vorlesungen wird als mc:mc-Beziehung durch eine zusätzliche Tabelle mit zwei Schlüsseln auf die Vorlesungstabelle realisiert. Beziehung „Vorlesung“

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

  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 Problem der reflexiven Datenbanken

  31. Datenbankabfragen

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

  33. Kartesisches Produkt WITH-Klausel IN-Klausel START WITH … CONNECT BY-Klausel Nützliche SQL-Statements

  34. Ausgangsdaten (Beziehung „Vorgesetzter“)

  35. …als Graph 11 1 12 2 3 7 4 5 6 8 9 10 • Abfrage: Wer ist der oberste Chef in der Abteilung vom Mitarbeiter Engel?

  36. SELECT ma1.name, ma2.name chef FROM Ma ma1, Ma ma2 WHERE ma1.vorgesetzter = ma2.id; NAME Chef ----------------- Albrecht Kurz BeierAlbrecht Conrad Lorenz DietzBeier Engel Beier Fischer Beier Gericke Conrad Holz Conrad Ingold Engel Junge Engel LorenzKurz Kartesisches Produkt

  37. 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 WITH-Klausel

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

  39. 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 START WITH …CONNECT by-Klausel (1/2)

  40. 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 START WITH …CONNECT by-Klausel (2/2) • Nicht jedes DBMS unterstützt solche Befehle.

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

  42. public Knoten getWurzelInAbt(Mitarbeiter m, longid) { Knoten k = m.getKnoten(id); Abteilung a = k.getAbteilung(); if(k.getVorgesetzter() == null || b.getKnoten(k.getVorgesetzer).getAbteilung() != a) { return k; } else { returngetWurzelInAbt(m, m.getKnoten(k.getVorgesetzter).getId(); } } Wer ist der Chef einer Abteilung?

  43. public Knoten[] getAlleVertretene(Bearbeiter b, longid) { Knoten k0 = b.getKnoten(id); k=k0; Knoten[] vertretene = null; while (k.getVertreterFuer()!=null && k.getVertreterFuer() != k0) { k=k.getVertreterFuer(); vetretene.add(k); } returnvetretene; } Welche Mitarbeiter muss ich maximal vertreten?

  44. 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) } Wird eine bestimmte Haltstelle nach einer anderen angefahren?

  45. public Knoten[] getAlleBenoetigteV(Vorlesungen v, longid) { 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))); } returnalleBenoetigteV; Welche Vorlesungen sind insgesamt Voraussetzungen für eine bestimmte Vorlesung?

  46. Diskussion

  47. 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? Fragen

  48. Zusammenfassung

  49. 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 SummaRy 1/2

  50. 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 Summary 2/2

More Related