Zu Beginn eine kurze Wiederholung und Vertiefung der Themen der letzten Stunde: Assoziation Aggregation, Komposition, Generalisierung 1 Neue Themen: Objekte und Datenbanken Abbildung von Objekten auf Tabellen Praxis: ArcView 2 Assoziation von Klassen Multiplizität Name Kante Grundstück 3..* begrenzt 2 -Besitzer : Person +getFläche() : Zahl +getBesitzer() : Person 3 Aggregation und Komposition Ganzes Ganzes 1..1 n Teil Teil 4 Generalisierung und Spezialisierung GeomFigur Dreieck Kreis Rechteck 5 Anwendungsregeln: Assoziation versus Aggregation • Eine Aggregation ist ein Spezialfall der Assoziation. Er liegt dann vor, wenn mindestens eine der folgenden Bedingungen erfüllt ist: • die umgangssprachliche Verwendung der Bezeichnungen „Bestandteil“, „Teil“ - „Ganzes“ ist angemessen • Operationen werden sinnvollerweise automatisch auf alle Teile eines Ganzen angewendet (anzeigen) • es liegt eine systematische Asymmetrie vor, die eine Klasse der anderen unterordnet Übung: 1.) Wende diese Regeln auf das Beispiel der vorigen Stunde an. 2.) Lassen sich Grundstücke als Aggregationen von Kanten und Knoten modellieren? 6 Anwendungsregeln (II): Aggregation und Komposition • Eine Komposition ist eine spezielle Aggregation, bei der die Existenz des Teils von der Existenz des Ganzen abhängig ist. • Die Anwendung ist insbesondere dann angebracht, wenn die Löschung des Ganzen die automatische Löschung aller Teile hervorrufen soll • Wenn ein Teil zu mehreren Ganzen gehören kann, liegt keine Komposition vor. Übung: Diskutiere den Unterschied zwischen Komposition und Aggregation an den vorausgegangenen Beispielen. 7 Aggregation und Generalisierung Beachte: • Aggregation und Generalisierung bilden Hierarchien aber: • Aggregation bezieht Objekte aufeinander • Generalisierung bezieht Klassen aufeinander • beachte den systematischen Unterschied zwischen folgenden Beziehungen: Gemeinde - Kreis Rechteck - Figur (Aggregation zwischen 2 Objekten) (Generalisierung desselben Objekts) 8 Ober- und Unterklassen GeomFigur -Mittelpunkt : Punkt -sichtbar : Boolean +anzeigen() +entfernen() +verschieben() Dreieck -a : Zahl -b : Zahl -c : Zahl +anzeigen() +entfernen() Kreis -radius : Zahl anzeigen() entfernen() Rechteck -a : Zahl -b : Zahl anzeigen() entfernen() Eine Oberklasse repräsentiert ein Konzept. Eine Unterklasse spezialisiert dieses Konzept, indem sie • neue Attribute definiert • neue Methoden definiert • und dabei Attribute oder Methoden der Oberklasse explizit verwendet oder überschreibt. • Unterklassen unterscheiden sich systematisch voneinander. • Attribute und Methoden einer Klasse bilden jeweils ein in sich geschlossenes Konzept. Übung: Diskutieren Sie a) obiges Beispiel b) eine mögliche Zerlegung der Klasse Punkt in Ober- und Unterklasse 9 Von Objekten zu Tabellen Grundstück -Besitzer : Person -Fläche : Zahl +getFläche() : Zahl +getBesitzer() : Person n Land -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl Kreis 1..1 n -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl 1..1 Gemeinde 1..1 n -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl 10 Datenbanken typisierte Attribute • Eine relationale Datenbank besteht aus einer oder mehreren Tabellen • Die Spalten einer Tabelle heißen AttributeTupel und sind typisiert • Die Zeilen einer Tabelle heißen Tupel • Anfragen: SELECT Attribut(e) FROM Tabelle(n) WHERE Bedingung Beispiel: SELECT Einwohner, Fläche FROM Gemeinde WHERE Bezeichnung = Alfter 11 Abbildungsvorschriften: Objekte • Jeder Klasse entspricht (mindestens) eine Tabelle • Der Name der Tabelle entspricht dem Namen der Klasse • Jedem Objektattribut entspricht ein Tabellenattribut • Hinzukommt in der Regel eine zusätzliches Tabellenattribut „Identifier“, welches die Identität des Objekts repräsentiert • Methoden werden nicht berücksichtigt Gemeinde -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl GEMEINDE( Bezeichnung: Text, Einwohner: Zahl, Fläche: Zahl) 12 Abbildungsvorschriften für Assoziationen - allgemeiner Fall Allgemeiner Fall • Jede Beziehung wird durch eine eigene Relation repräsentiert • Der Name der Beziehung wird zum Namen der Relation. • Die Attribute der Beziehung werden aus den Identifiern der beteiligten Klassen gebildet • Auf diese Weise können Beziehungen zwischen zwei oder mehr Klassen gebildet und zusätzlich mit Attributen versehen werden. • Beispiel folgt unten 13 Spezialfälle: 1:n-Beziehungen, insb. Aggregationen) statt: KREIS( KreisId, KreisBezeichnung, KreisEinwohner, KreisFläche) GEMEINDE( GemeindeId, GemeindeBezeichnung, GemeindeEinwohner, GemeindeFläche) AGGKREISGEMEINDE( GemeindeId, KreisId) geht es auch so: KREIS( KreisId, KreisBezeichnung, KreisEinwohner, KreisFläche) GEMEINDE( GemeindeId, GemeindeBezeichnung, GemeindeEinwohner, GemeindeFläche KreisId) 14 Land -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl Kreis -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl Gemeinde -Bezeichnung : Text -Einwohner : Zahl -Fläche : Zahl +getBezeichnung() : Name +getEinwohner() : Zahl +getFläche() : Zahl Anfragen KREIS( KreisId, KreisBezeichnung, KreisEinwohner, KreisFläche) GEMEINDE( GemeindeId, GemeindeBezeichnung, GemeindeEinwohner, GemeindeFläche KreisId) Die Namen der Gemeinden in Rhein-Sieg mit mehr als 50 000 Einwohnern SELECT GemeindeBezeichung FROM GEMEINDE WHERE GemeindeEinwohner > 50 000 AND GEMEINDE.KreisId = KREIS.Kreisid AND KreisBezeichnung = „Rhein-Sieg“ 15 Regel zur Abbildung von 1:nBeziehung auf Tabellen • Die Beziehung wird der Relation, die die Teilklasse (n-Klasse) repräsentiert, als weiteres Attribut hinzugefügt. • Beispiel: Der Name des (übergeordneten) Kreises erscheint als Attribut der (untergeordneten) Gemeinde • Vorteil: Einsparung einer zusätzlichen Tabelle • Integritätsannahme: Existenz des zugeordneten Tupels • Fehlerfall: Ein „Zeiger“ auf ein Objekt, der ins Leere führt („Dangling Pointer“) ID3 ID17 ID3 16 Regel zur Abbildung der Generalisierung auf Tabellen • Beachte: eine Generalisierung ist ein 1:1-Beziehung • Option 1: • Ergänze die Oberklasse und alle Unterklassen durch ein zusätzliches Attribut ObjektID, welches die Verknüpfung zwischen Ober- und Unterklasse realisiert • Option 2: • Fasse Ober- und Unterklasse in einer Tabelle zusammen 17 Option 1: GEOMFIGUR( Mittelpunkt,Sichtbar, ObjektId) DREIECK( a,b,c, ObjektId) GeomFigur -Mittelpunkt : Punkt -sichtbar : Boolean +anzeigen() +entfernen() +verschieben() Dreieck -a : Zahl -b : Zahl -c : Zahl +anzeigen() +entfernen() Kreis -radius : Zahl anzeigen() entfernen() Option 2: DREIECK( Mittelpunkt,Sichtbar, a,b,c) Rechteck -a : Zahl -b : Zahl anzeigen() entfernen() 18 Zusätzliche Überlegungen führen gelegentlich zu noch einfacheren Tabellenstrukturen Beispiel Landkarte 19 Knoten 2..* 2 1 Kante begrenzt Grundstück 3..* begrenzt 2 -Besitzer : Person +getFläche() : Zahl +getBesitzer() : Person Grundstücke: Geometrie 1 Punkt -X : Zahl -Y : Zahl kleine Änderung GRUNDSTUECK(Id, Besitzer) KANTE(Id,Grundstueck1, Grundstueck2, Knoten1, Knoten2) KNOTEN(Id, X, Y) Übung: Diskutieren Sie, inwiefern dieses Schema das UMLDiagramm korrekt wiedergibt, obwohl es nicht gemäß der o.g. Regeln hergeleitet wurde. Anfrage: Welches sind die Nachbargrundstücke von X? SELECT Grundstueck1 FROM Kante WHERE Grundstueck2 = X SELECT Grundstueck2 FROM Kante WHERE Grundstueck1 = X 20 Projekt View Thema Strukturen von ArcView • Ein Thema ist in ArcView eine Menge von Objekten des gleichen Geometrietyps (Punkt, Polygon oder Polyline) • Die Thematik dieser Geoobjekte wird durch eine zugeordnete Tabelle dargestellt • jedem Geoobjekt entspricht eine Zeile der zugeordneten Tabelle • Aggregation ist implizit (über den Bezeichner) • Anfragen an die Tabelle in SQL Tabelle 21