Verbindungen
1. Einstieg
Verbindungen beschreiben Zusammenhänge zwischen einzelnen Objekten, z.B. dass ein Haus an einer Straße liegt (die Verbindung könnte z.B. "Haus liegt an Straße" heißen), oder zu welcher Gemeinde ein Ortsteil gehört.
Häufig wird eine Verbindung zwischen zwei Klassen angelegt, wie in der folgenden Abbildung:
Die Verbindung "Gemeinde -> Landkreis" verbindet Gemeinden und Landkreise miteinander.
Dabei gilt: Verbindungen sind an und für sich reine Verbindungsinformationen, die einem inzidenten Graphen entsprechen. Sie enthalten keine Sachattribute. Jeder einzelne Eintrag in der Verbindung "Gemeinde -> Landkreis" spezifiziert zwei Objekte, die miteinander verbunden sind, nicht mehr und nicht weniger.
Woher diese Informationen kommen, wird durch die Konvertierungen festgelegt.
2. Richtung in Verbindungen
Verbindungen haben eine "rechte" und eine "linke" Seite, im Simplex4Data auch als "From" und "To" bezeichnet. Im Beispiel führt die Verbindung von Gemeinden (linke Seite) zu Landkreisen (rechte Seite). Damit kann semantisch unterschieden werden, von welchem Objekt die Verbindung ausgeht und wo sie hinführt.
Je nach dem Inhalt der Daten ist diese Information mehr oder weniger bedeutend. Auf jeden Fall muss beim Konvertieren darauf geachtet werden.
Für das Visualisierungstool des Simplex4Data, den SimplexVisual, spielt die Richtung beispielsweise keine Rolle.
3. Schleifen
Es ist möglich, Schleifen zu bilden, indem dieselbe Klasse als linke und rechte Seite einer Verbindung gesetzt werden:
Manche Gemeinden haben keinen eigenen Verwaltungssitz, sondern werden durch in anderen Gemeinden gelegene Sitze verwaltet. Die Verbindung "Sitz der Verwaltung" stellt diese Beziehung dar.
Hier ist also dieselbe Klasse links und rechts der Verbindung, aber nicht dieselben Objekte. Rechte Objekte sind die Verwaltungssitze der linksseitigen Objekte. Diese Schleife hat nur eine einfache Tiefe.
Durch Schleifen kann wie im Beispiel eine Hierarchie abgebildet werden, aber auch ein Netzwerk (z.B. Straße A kreuzt Straße B).
Im Interface ist dann sowohl rechts als auch links dieselbe Klasse angegeben:
4. Mehrere Verbindungen zwischen denselben Klassen
Verbindungen können unterschiedliche Bedeutungen tragen, deswegen ist es manchmal durchaus sinnvoll, mehrere Verbindungen zwischen denselben Klassen anzulegen.
Im Beispiel liegen eine Menge an Adressen vor, die Gebäuden zugeordnet werden können. Zu den meisten Gebäuden gibt es mehrere Adressen, welche die postalisch korrekte Anschrift wiedergeben ( "Hauptstraße 1A", "Hauptstraße 1B", "Hauptstraße 1C" etc.) und eine Hauptadresse ( "Hauptstraße 1").
Die Verbindung "Adressen -> Gebäude" speichert die granulare Zuordnung.
Gleichzeitig ist für andere Zwecke eine eindeutige Hauptadresse wichtiger als diese genaue Zuordnung.
Die Verbindung "Hauptadresse des Gebäudes" verbindet nur diese Hauptadressen mit den Gebäuden.
Manche Adressen sind in beiden Verbindungen enthalten (alle Hauptadressen), andere (alle nicht-Hauptadressen) nur in der ersten Verbindung.
Bei diesem Beispiel klingt das Thema der Multiplizitäten der jeweiligen Verbindungen bereits an, was weiter unten behandelt wird.
5. Verbindungen zwischen Quellen
Verbindungen können Klassen flexibel über Quellengrenzen hinweg verbinden.
6. Verbindungen mit mehreren linken und/oder rechten Klassen
Es ist erlaubt, Verbindungen zwischen mehr als zwei Klassen anzulegen. Die Abbildung zeigt eine Verbindung mit drei linksseitigen Klassen.
Im vorliegenden Beispiel fasst die Verbindung "Schutzgebiete -> Gemeinden" drei Klassen: Wasserschutzgebiete, Naturschutzgebiete und Biosphärenreservate zusammen und verbindet sie mit der Klasse Gemeinde (rechte Seite).
Verbindungen zwischen mehreren Klassen können genutzt werden, um abstrakte oder zusammenfassende Informationen zu markieren, so werden im Beispiel die drei Klassen zu "Schutzgebieten" zusammengefasst.
Zu beachten ist: Jede einzelne Verbindungsinformation ist auch hier immer nur die Information einer Verbindung zwischen zwei Objekten, d.h. in diesem Fall zwischen einem Wasserschutzgebiet und einer Gemeinde ODER einem Naturschutzgebiet und einer Gemeinde ODER einem Biosphärenreservat und einer Gemeinde.
Dazu beispielhaft ein paar mögliche Verbindungsinformationen (= einzelne Einträge in der Tabelle):
From-Objekte (Klasse Naturschutzgebiete, Wasserschutzgebiete, Vogelschutzgebiete) | To-Objekte (Klasse Gemeinden) |
---|---|
Naturschutzgebiet A | Gemeinde Buchholz |
Wasserschutzgebiet D | Gemeinde Buchholz |
Vogelschutzgebiet E | Gemeinde Averlak |
Genauso möglich sind mehrere rechtsseitige Klassen sowie mehrere Klassen auf beiden Seiten der Verbindung.
7. Kurzschlüsse / shortcuts
Kurzschlüsse erleichtern die Arbeit, indem sie direkt auf bereits vorhandene Verbindungen aufsetzen.
Der neue Kurzschluss "Gemeinde -> Bundesland" baut auf den bestehenden Verbindungen "Gemeinde -> Landkreis" sowie "Landkreis -> Bundesland" auf und verbindet auf diese Weise die einzelnen Gemeinden direkt mit ihren Bundesländern.
Im Interface wird der Typ der Verbindung als "Kurzschluss" bzw. als "shortcut" angegeben:
Weiter unten im Interface werden dann statt Klassen Verbindungen als linke und rechte Seite angegeben:
Für solche Kurzschlüsse ist es sehr wichtig, die Randbedingungen der Verbindungen zu berücksichtigen, auf denen sie aufbauen. Ist eine Gemeinde nicht mit einem Landkreis verbunden, wird sie auch nicht mit einem Bundesland verbunden sein.
8. Multiplizität in Verbindungen
Für Verbindungen werden Multiplizitäten (auch Kardinalitäten genannt) vergeben. Damit lässt sich festlegen, wie die Verteilung der Objekte in der Verbindung auszusehen hat.
- Simplex verwaltet Verbindungen grundsätzlich getrennt von den Objekten in eigenen Tabellen. Die n:m Verbindung ist der Normalfall.
- Aufgrund dieser Struktur müssen Multiplizitäten immer für beide Seiten der Verbindung definiert werden, wobei jeweils eine Obergrenze (max) und eine Untergrenze (min) definiert werden. Aus dem Zusammenspiel der beiden ergibt sich die Multiplizität.
- Multiplizitäten sind v.a. dazu gedacht, unbedingt notwendige Beziehungen abzubilden "Jeder Raum muss in einem Haus liegen" und nicht detaillierte Mengenaussagen zu treffen (z.B.: "ein Landkreis ist mit 2-7 Gemeinden verbunden").
Wichtig: Ist keine sinnvolle Aussage möglich oder relevant, kann einfach die Standardeinstellung für Verbindungen beibehalten werden, d.h. die Felder werden gar nicht angefasst.
Der Teil des Interfaces für die Definition von Verbindungen, der Angaben zu Multiplizitäten annimmt, sieht folgendermaßen aus:
Beispiel: Die Verbindung "Kreis -> Gemeinde" verbindet die Klasse "Landkreis" (Klasse 1, FROM) mit der Klasse "Gemeinde" (Klasse 2, TO).
Es werden keine Mengen größer 1 angegeben, (z.B.: "ein Landkreis ist mit 2-7 Gemeinden verbunden").
Stattdessen kann nur festgelegt werden:
Ein Landkreis ist mit mindestens min1 Gemeinden und höchstens max1 Gemeinden verbunden.
Eine Gemeinde ist mit mindestens min2 Landkreisen und höchstens max2 Landkreisen verbunden.
Die Optionen für "min1" und "min2" sind:
- default -> 0-N, kein Zuordnungszwang
- mapping constraint -> genau zu 1, Zuordnungszwang
Die Optionen für "max1" und "max2" sind:
- n-times -> 0-N, kein Zuordnungszwang
- once -> genau zu 1, Zuordnungszwang
Bezogen auf das obige Beispiel ...
Ein Landkreis ist mit mindestens min1 Gemeinden und höchstens max1 Gemeinden verbunden.
Eine Gemeinde ist mit mindestens min2 Landkreisen und höchstens max2 Landkreisen verbunden.
... zeigt folgende Tabelle alle möglichen Werte und ihre Bedeutungen. Zu beachten ist, dass sich die Aussage über die Multiplizität immer aus dem Zusammenspiel von min und max ergibt.
Multiplizität | Bedeutung |
---|---|
min1=default | Es gibt keine Untergrenze: Nicht jeder Landkreis muss mit einer Gemeinde verbunden sein. |
min1=once | Jeder Landkreis muss mit genau einer Gemeinde verbunden sein. |
min2=default | Es gibt keine Untergrenze: Nicht jede Gemeinde muss mit einem Landkreis verbunden sein. |
min2=once | Jede Gemeinde ist mit genau einem Landkreis verbunden. |
max1=n-times | Es gibt keine Obergrenze: Jeder Landkreis kann mit 0-N Gemeinden verbunden sein. |
max1=once | Jeder Landkreis ist mit genau einer Gemeinde verbunden. |
max2=n-times | Es gibt keine Obergrenze: Jede Gemeinde kann mit 0-N Landkreisen verbunden sein. |
max2=once | Jede Gemeinde ist mit genau einem Landkreis verbunden. |