Verbinden von Tabellen und Erstellen von Beziehungen zwischen Tabellen
Die meisten Richtlinien zum Entwerfen von Datenbanken schlagen die Unterteilung der Datenbank in mehrere Tabellen vor (jede zu einem bestimmten Thema) und sprechen sich gegen eine große Tabelle aus, die alle notwendigen Felder enthält. Dank der verschiedenen Tabellen werden doppelte Informationen in der Datenbank vermieden, weil jede Information nur einmal in einer Tabelle gespeichert wird. Wenn Sie Informationen benötigen, die nicht in der aktuellen Tabelle enthalten sind, können Sie die beiden Tabellen miteinander verknüpfen.
Sie können z. B. Daten aus anderen Abteilungen Ihrer Organisation erhalten, kommerziell verfügbare Daten erwerben oder Daten aus dem Internet herunterladen. Wenn diese Informationen in einer Tabelle gespeichert sind, z. B. einer dBASE-, INFO- oder Geodatabase-Tabelle, können Sie sie mit den geographischen Features verbinden und die Daten auf einer Karte anzeigen.
In ArcGIS können Sie Datensätze in einer Tabelle über ein gemeinsames Feld (einen Schlüssel) mit Datensätzen in einer anderen Tabelle verknüpfen. Sie haben verschiedene Möglichkeiten, diese Zuordnungen herzustellen. Sie können Tabellen vorübergehend verbinden oder in der Karte in Beziehung setzen, oder Sie können Beziehungsklassen in der Geodatabase erstellen, bei denen die Zuordnungen permanenter sind. So können Sie beispielsweise eine Tabelle mit Informationen zu Flurstückbesitzern dem Flurstück-Layer zuordnen, da beide ein Flurstück-ID-Feld aufweisen.
Wenn Sie zwei Tabellen verbinden, fügen Sie die Attribute einer Tabelle basierend auf einem gemeinsamen Feld beider Tabellen an die andere Tabelle an. Zwei Tabellen in Beziehung zueinander zu setzen heißt, eine Beziehung zwischen ihnen herzustellen – ebenfalls basierend auf einem gemeinsamen Feld. Die Attribute der einen Tabelle werden jedoch nicht an die andere Tabelle angefügt, sondern Sie können bei Bedarf auf die in Beziehung gesetzten Daten zugreifen.
Verbinden der Attribute aus einer Tabelle
In der Regel verbinden Sie eine Datentabelle basierend auf dem Wert eines Feldes, das in beiden Tabellen enthalten ist, mit einem Layer. Der Name dieses Feldes muss nicht in beiden Tabellen gleich sein, aber der Datentyp muss derselbe sein; Sie verbinden Zahlen mit Zahlen, Zeichenfolgen mit Zeichenfolgen etc. Sie können eine Verbindung entweder im Dialogfeld "Daten verbinden", das Sie durch einen Rechtsklick auf einen Layer in ArcMap aufrufen, oder mit dem Werkzeug "Verbindung hinzufügen" herstellen.
Angenommen Sie haben Daten erhalten, die das prozentuale Bevölkerungswachstum in jedem Landkreis beinhalten, und Sie möchten nun auf Grundlage dieser Informationen Karten zum Bevölkerungswachstums generieren. Solange die Bevölkerungsdaten in einer Tabelle der Datenbank gespeichert sind und diese ein gemeinsames Feld mit dem Layer aufweist, können Sie sie mit den geographischen Features verbinden und ein beliebiges verbundenes Feld verwenden, um die Features des Layers mit einem Symbol zu kennzeichnen, zu beschriften, abzufragen oder zu analysieren.
Eins-zu-eins- und Viele-zu-eins-Beziehungen
Wenn Sie in ArcMap Tabellen verbinden, erstellen Sie eine Eins-zu-eins- oder eine Viele-zu-eins-Beziehung zwischen der Attributtabelle des Layers und der Tabelle mit den Informationen, die Sie verbinden möchten. Das folgende Beispiel zeigt eine Eins-zu-Eins-Beziehung zwischen den einzelnen Landkreisen und den Bevölkerungswachstumsdaten des Landkreises, d. h. es ist eine Bevölkerungsänderung für jeden Landkreis angegeben.
Hier ein Beispiel für eine Viele-zu-eins-Beziehung: Nehmen wir an, Sie haben einen Layer, in dem jedes Polygon nach seiner Landnutzungsart klassifiziert ist. In der Attributtabelle des Layers ist nur ein Landnutzungscode gespeichert, während die ausführliche Beschreibung jeder Landnutzungsart in einer separaten Tabelle enthalten ist. Durch das Verbinden dieser beiden Tabellen wird eine Viele-zu-eins-Beziehung hergestellt, da viele Datensätze in der Attributtabelle des Layers mit demselben Datensatz in der Tabelle mit Landnutzungsbeschreibungen verbunden werden. Sie können dann einen aussagekräftigeren Text verwenden, wenn Sie die Legende für die Karte erstellen.
Wenn Sie versuchen, eine Verbindung für eine 1:M-Beziehung herzustellen, wird nur die erste Übereinstimmung im resultierenden Layer verbunden.
Verbinden von Daten nach Position (räumlich)
Wenn die Layer der Karte kein gemeinsames Attributfeld aufweisen, können Sie diese mithilfe einer räumlichen Verbindung verbinden, die Attribute der beiden Layer basierend auf den Feature-Positionen der Layer verknüpft.
Sie können eine räumliche Verbindung entweder im Dialogfeld "Daten verbinden", das Sie durch einen Rechtsklick auf einen Layer in ArcMap aufrufen, oder mit dem Werkzeug "Räumliche Verbindung" herstellen.
Mit Hilfe einer räumlichen Verbindung können Sie folgende Elemente suchen:
- die am dichtesten zusammenliegenden Features suchen
- Ermitteln, was innerhalb eines Features liegt
- ermitteln, was sich mit einem Feature überschneidet
- ermitteln, wie viele Punkte in jedem Polygon liegen
Bei lagebezogenen oder räumlichen Verbindungen werden räumliche Zuordnungen zwischen den entsprechenden Layern verwendet, um die Felder eines Layers an die Felder eines anderen Layers anzuhängen. Räumliche Verbindungen unterscheiden sich von Verbindungen in Attributen und Beziehungsklassen dadurch, dass sie nicht dynamisch sind und die Ergebnisse in einem neuen Ausgabe-Layer gespeichert werden müssen.
Für räumliche Verbindungen sind drei verschiedene Zuordnungstypen verfügbar (siehe unten):
- Zuordnung der einzelnen Features zu den nächstgelegenen Features: Bei dieser Zuordnung können Sie die Attribute des nächstgelegenen Features bzw. eine Zusammenfassung der numerischen Attribute der nächstgelegenen Features (Minimalwert, Maximalwert usw.) anhängen.
- Zuordnung der einzelnen Features zu dem Feature, in dem diese sich befinden: D.h. Features innerhalb eines Polygons erhalten die Attribute des Polygonfeatures. Beispiele für eine solche Zuordnung sind ein Punkt innerhalb eines Polygons oder ein Liniensegment, das sich vollständig innerhalb eines anderen Liniensegments befindet (also von diesem überlappt wird).
- Zuordnung der einzelnen Features zu den Features, die von den einzelnen Features überschnitten werden: Wie bei der Zuordnung der oben erwähnten nächstgelegenen Features können Sie die Attribute eines einzelnen überschneidenden Features bzw. eine Zusammenfassung der numerischen Attribute der überschneidenden Features anhängen.
Im Dialogfeld "Verbinden" sind für die einzelnen Punkte, Polygone und Linienkombinationen nur die am häufigsten verwendeten Zuordnungen verfügbar. Mit VBA können Verbindungen jedoch anhand beliebiger Zuordnungen und mit jeder beliebigen Kombination aus Punkt-, Linien- oder Polygon-Feature-Layern hergestellt werden.
Zuordnen von Tabellen
Wenn Sie Tabellen in Beziehung setzen, wird im Gegensatz zum Verbinden eine Beziehung zwischen zwei Tabellen erstellt. Die dazugehörigen Daten werden der Attributtabelle des Layers nicht angefügt wie bei einer Verbindung. Stattdessen können Sie auf die verbundenen Daten zugreifen, wenn Sie mit den Attributen des Layers arbeiten.
Beispiel: Wenn Sie ein Gebäude auswählen, finden Sie alle Mieter dieses Gebäudes. Genauso finden Sie bei Auswahl eines Mieters heraus, in welchem Gebäude dieser Mieter wohnt (in welchen Gebäuden, wenn es sich um eine Ladenkette in mehreren Einkaufszentren handelt – eine Viele-zu-viele-Beziehung). Wenn Sie jedoch eine Verbindung anhand dieser Daten erstellen, findet ArcMap nur den ersten Ladenmieter jedes Gebäudes; weitere Ladenmieter werden außer Acht gelassen.
In ArcMap definierte Verbindungen sind im Grunde nichts anderes als einfache Beziehungsklassen in einer Geodatabase, außer dass sie mit der Karte und nicht in einer Geodatabase gespeichert werden.
Wenn die Daten in einer Geodatabase gespeichert sind und einer Beziehungsklasse angehören, können Sie diese direkt verwenden, ohne eine Beziehung in ArcMap erstellen zu müssen. Die Beziehungsklassen sind automatisch verfügbar, wenn Sie einen Layer einfügen, der sich in einer Beziehungsklasse mit der Karte befindet. Beachten Sie, dass die Viele-zu-viele-Beziehung anders definiert ist, wenn die Daten in einer Geodatabase gespeichert sind. Im Allgemeinen sollten Sie, wenn Sie in der Geodatabase definierte Beziehungsklassen haben, diese Beziehungsklassen verwenden, statt in ArcMap neue zu erstellen.
Beziehungsklassen in der Geodatabase
In einer Beziehungsklasse werden Informationen zu Zuordnungen von Features und Datensätzen in einer Geodatabase gespeichert. Beziehungsklassen tragen zur Datenintegrität bei.
Verbindungen und Beziehungen
Befolgen Sie beim Auswählen von Verbindungen oder Beziehungen für Daten die folgenden allgemeinen Richtlinien:
- Sie sollten zwei Tabellen verbinden, wenn die Daten der Tabellen eine Eins-zu-eins- oder Viele-zu-Eins-Beziehung bilden.
- Sie sollten zwei Tabellen in Beziehung setzen, wenn die Daten der Tabellen eine Eins-zu-vielen- oder Viele-zu-Viele-Beziehung bilden.
Informationen zur Wahl zwischen Beziehungsklassen, Verbindungen und Beziehungen
Speichern von Verbindungen und Beziehungen
Bei der Speicherung einer Karte, die Verbindungen und Beziehungen enthält, speichert ArcMap die Definition der Verknüpfung der beiden Attributtabellen, nicht die verknüpften Daten selbst. Wenn Sie die Karte das nächste Mal öffnen, stellt ArcMap die Beziehung (Verbindung oder Beziehung) zwischen den Tabellen wieder her, indem es die Tabellen aus der Datenbank liest. Dadurch werden sämtliche Änderungen an den Quelltabellen, die seit dem letzten Aufruf der Karte durchgeführt wurden, automatisch einbezogen und auf der Karte angezeigt.
Verbindungen können in ArcMap-Dokumenten oder Layer-Dateien gespeichert werden. Wenn das Verschieben von Daten geplant ist, empfiehlt es sich, die ArcMap-Dokumente mit relativen Pfaden zu speichern. Wenn die Daten verschoben werden, können Sie die Tabellen und Layer nach dem Öffnen des Dokuments reparieren. Die Verbindungen werden jedoch nur repariert, wenn sich die Zieltabelle und die Join-Tabellen in demselben Verzeichnis oder Workspace befinden. Wenn Sie Dokumente mit relativen Pfaden speichern, werden Tabellen und Layer automatisch mit den entsprechenden Verbindungen wiederhergestellt, sofern die Verschiebung der Dokumente relativ zum neuen Speicherort der Daten erfolgt ist.
Sie können eine bleibende Kopie eines Layers mit verbundenen Daten machen. Dazu müssen Sie den Layer lediglich exportieren. Klicken Sie zum Exportieren des Layers im Inhaltsverzeichnis mit der rechten Maustaste auf den Layer, zeigen Sie auf "Daten", und klicken Sie auf "Daten exportieren". Hierdurch wird eine neue Feature-Class mit allen Attributen erstellt, einschließlich der verbundenen Felder.
Gemeinsame Verwendung von Verbindungen, Beziehungen und Beziehungsklassen
Wenn die Daten in Verbindungen und Beziehungen eingebunden sind, ist die Reihenfolge von deren Erstellung signifikant. Wenn ein Layer oder eine Tabelle eine Beziehung aufweist, wird diese entfernt, wenn Daten verbunden werden. Wenn Sie eine Beziehung zu einem verbundenen Layer oder einer verbundenen Tabelle erstellen, wird die Beziehung entfernt, wenn die Verbindung entfernt wird. Als allgemeine Faustregel gilt, dass zuerst Verbindungen erstellt und dann Beziehungen hinzugefügt werden sollten.
Angenommen, Tabelle A soll mit Tabelle C verbunden werden und zwischen Tabelle B und Tabelle C soll eine Beziehung erstellt werden. Dann können zwei der drei möglichen Verfahren verwendet werden, die nachfolgend einzeln beschrieben werden:
- Verbinden von Tabelle A mit Layer C, anschließend Erstellen einer Beziehung zwischen Tabelle B und Layer C: Dieses Szenario funktioniert. Es ergibt sich ein verbundener Layer mit einer Beziehung zu Tabelle B.
- Erstellen einer Beziehung zwischen Layer C und Tabelle B, anschließend Verbinden von Tabelle A und Layer C: Dieses Szenario funktioniert ebenfalls. Da eine Beziehung bidirektional ist, kann sie von beiden Tabellen verwendet werden, egal welche Tabelle als Besitzer der Beziehung fungiert. Hier fungiert Tabelle B als Besitzer der Beziehung, so dass beim Verbinden von Tabelle A mit Layer C die Beziehung nicht entfernt wird.
- Erstellen einer Beziehung zwischen Tabelle B und Layer C, anschließend Verbinden von Tabelle A und Layer C: Dieses Szenario funktioniert nicht. Es besteht ein Unterschied zum vorherigen Szenario, denn Layer C fungiert als Besitzer der Beziehung. Daher wird die Beziehung entfernt, wenn Tabelle A mit Layer C verbunden wird.
Auf Beziehungen, bei denen die Join-Tabelle als Besitzer fungiert, wirkt sich die Verbindung nicht aus. Auf diese Beziehungen können die Zieltabelle oder der Layer nicht zugreifen.
Beziehungsklassen werden beim Verbinden oder beim Aufheben einer Verbindung nie entfernt. Sie können unabhängig davon verwendet werden, ob die Daten in Verbindungen oder Beziehungen eingebunden sind.