Mit der Standard- oder Advanced-Lizenz verfügbar.
Beziehungen
Beziehungsklassen ermöglichen das Verwalten von Verknüpfungen zwischen Objekten in der Geodatabase. Diese Beziehungen können einfach und passiv oder abhängig sein. Abhängige Beziehungen sind Beziehungen zwischen Parent- und Child-Klassen oder Zusammensetzungen von Objekten, wobei das Verhalten von Objekten auf der einen Seite durch Änderungen an Objekten auf der anderen Seite ausgelöst wird. Feature-bezogene Annotations in der Geodatabase verwenden abhängige Beziehungen.
Beziehungen in einer Beziehungsklasse können mittels der Primär- und Fremdschlüssel in der Objektklasse auf der jeweiligen Seite der Beziehungsklasse gespeichert werden. Alternativ dazu, im Fall der Viele-zu-viele-Beziehungsklassen (M:N) und der attributierten Beziehungsklassen werden Beziehungen als Zeilen in einer separaten Tabelle gespeichert werden.
Im Fenster "Attribute" oder in der Tabelle können Sie alle Objekte suchen, die mit einem markierten Objekt in Beziehung stehen. Wenn Sie zu einem solchen Objekt navigieren, können Sie seine Attribute bearbeiten. Sie können auch die Editierwerkzeuge in ArcMap verwenden, um die Beziehung zwischen zwei beliebigen Objekten zu lösen oder neue Beziehungen zwischen Objekten zu erstellen. Wenn Sie Objekte und Beziehungen auf diese Weise bearbeiten, bleibt die gesamte referenzielle Integrität erhalten.
Hinzufügen und Löschen von Beziehungen
Im Fenster "Attribute" können Sie Beziehungen zwischen zwei Objekten erstellen und löschen. Wenn die Beziehung mit Primärschlüsseln und Fremdschlüsseln verwaltet wird (keine Attribute, 1:1- oder 1:n-Beziehungen), wird der Fremdschlüssel im Zielobjekt mit dem Wert des Primärschlüssels aus dem Ursprungsobjekt belegt. Wenn eine Beziehung zwischen zwei Objekten gelöscht wird, dann wird der Wert für den Fremdschlüssel im Zielobjekt durch eine Null ersetzt. Der Fremdschlüssel des Zielobjekts muss aus Feldern bestehen, die auf Null gesetzt werden können.
Wenn die Beziehungsklasse M:N oder attributiert ist, dann werden die Beziehungen in einer separaten Tabelle der Datenbank gespeichert. Wird eine neue Beziehung zwischen zwei Objekten in dieser Art von Beziehungsklasse erstellt, wird der Tabelle eine neue Zeile hinzugefügt. Diese neue Zeile wird mit den Werten aus den Primärschlüsseln der Ursprungs- und Zielobjekte belegt. Wenn eine Beziehung zwischen zwei Objekten gelöscht wird, dann wird die Zeile, die dieser Beziehung entspricht, aus der Beziehungstabelle gelöscht.
Bearbeiten von Objekten in einer einfachen Beziehungsklasse
Wenn ein Objekt, das in Beziehung zu anderen Objekten steht, aus der Geodatabase gelöscht wird, werden auch alle seine Beziehungen gelöscht. Beim Löschen des Ursprungsobjekts wird der Fremdschlüssel in allen zu diesem in Beziehung stehenden Zielobjekten auf null festgelegt. Das Löschen eines Zielobjekts hat keine Auswirkung auf das Ursprungsobjekt.
Wenn die Beziehungen als Zeilen in einer Beziehungstabelle beibehalten werden (M:N-Beziehungen oder attributierte Beziehungen), dann werden beim Löschen eines Ursprungs- oder Zielobjekts und somit auch seiner Beziehungen die Zeilen, die diesen Beziehungen entsprechen, aus der Beziehungstabelle gelöscht.
Erstellen neuer in Beziehung stehender Objekte
In ArcMap können Sie ein Objekt auswählen und das Dialogfeld "Attribute" verwenden, um ein neues nicht räumliches Objekt in einer in Beziehung stehenden Klasse zu erstellen. Nachdem dieses neue Objekt erstellt wurde, werden alle seine Attribute mit den entsprechenden Standardwerten aufgefüllt, und es wird eine Beziehung zu dem Objekt eingerichtet, aus dem es erstellt wurde. Sie können auf diese Weise nur nicht räumliche Objekte erstellen, jedoch keine neuen Features.
Wenn die Beziehungen mittels Primär- und Fremdschlüsseln beibehalten werden, wird der Fremdschlüssel im Zielobjekt mit dem Primärschlüssel des Ursprungsobjekts aufgefüllt, unabhängig davon, ob das Ursprungs- oder das Zielobjekt über das Dialogfeld "Attribute" erstellt wurde. Wenn die Beziehungen als Zeilen in einer Beziehungstabelle beibehalten werden (M:N-Beziehungen, attributierte Beziehungen), dann wird der Tabelle der Beziehungsklasse eine neue Zeile hinzugefügt.
Die folgenden Tabellen zeigen, dass beim Erstellen neuer in Beziehung stehender Objekte mit dem Fenster "Attribute" eine Rückbeziehung zum ursprünglichen Objekt erstellt wird. Wenn die Beziehungen mit Primär- und Fremdschlüsseln verwaltet werden, wird der Fremdschlüssel im Zielobjekt mit dem Wert des Primärschlüssels aus dem Ursprungsobjekt aufgefüllt.
Bearbeiten von Objekten in einer abhängigen Beziehungsklasse
Abhängige Beziehungen weisen spezielle Verhaltensmerkmale auf. Bei der Bearbeitung von Objekten, die Teil einer abhängigen Beziehung sind, wird dieses Verhalten auch in den Bearbeitungsvorgang übernommen. Die Änderungen, die am Ursprungsobjekt in einer abhängigen Beziehung gemacht werden, betreffen häufig auch seine entsprechenden Zielobjekte. Dieses Verhalten hängt teilweise von der Nachrichtenübermittlung der Beziehungsklassen ab.
Standardmäßig besitzen abhängige Beziehungsklassen eine Vorwärts-Nachrichtenübermittlung. Das bedeutet: Wenn das Ursprungsobjekt einer abhängigen Beziehung bearbeitet wird, werden Meldungen an die entsprechenden Zielobjekte gesendet. Die Zielobjekte reagieren in einer standardisierten Weise auf diese Meldung: Wenn es sich nicht um räumliche Objekte handelt, ändern sie sich nicht. Wenn es jedoch Features sind, werden die Zielobjekte beim Verschieben des Ursprungsobjekts ebenfalls um dieselbe Entfernung verschoben. Wenn das Ursprungsobjekt gedreht wird, werden die Zielobjekte um denselben Winkel gedreht. Die Bearbeitung einzelner Stützpunkte einer Feature-Geometrie wird als Aktualisierung betrachtet, nicht als eine Verschiebung der Feature-Geometrie. In dem Falle wird das in Beziehung stehende Objekt nicht verschoben.
Im Beispiel ist der markierte blaue Mast das Ursprungsobjekt und der grüne Transformator das Zielobjekt.
Ebenso wie einfache Beziehungen behalten auch abhängige Beziehungen ihre referenzielle Integrität, wenn Objekte gelöscht werden, aber auf eine andere Weise. Wenn das Ursprungsobjekt einer abhängigen Beziehung gelöscht wird, werden alle Objekte, die durch die abhängige Beziehung mit ihm verknüpft sind, auch gelöscht. Dieses kaskadenartige Löschen geschieht unabhängig davon, ob die Nachrichtenübermittlung auf "Vorwärts, Rückwärts, Beide" oder "Kein" eingestellt ist.
Die folgenden Tabellen zeigen, dass beim Löschen des Ursprungsobjekts in einer abhängigen Beziehung alle in Beziehung stehenden Zielobjekte automatisch ebenfalls gelöscht werden.
Wird ein Zielobjekt gelöscht, wird auch die Beziehung zwischen ihm und dem Ursprungsobjekt gelöscht. Das Ursprungsobjekt selbst wird nicht gelöscht oder verändert.
Bei Feature-bezogenen Annotations ist die Verbindung zwischen der Annotation und dem dazugehörigen Feature eine abhängige Beziehung. Das Parent- bzw. Ursprungsobjekt der Beziehung ist das normale Feature, das Child- bzw. Zielobjekt ist die dazugehörige Annotation.
Bei Viele-zu-viele-Beziehungen, die mithilfe einer Join-Tabelle modelliert wurden, können Sie das Geoverarbeitungswerkzeug Tabelle zu Beziehungsklasse verwenden, um die Tabelle, in der Werte zwischen zwei anderen Tabellen verknüpft sind, in eine attributierte Beziehungsklasse zu konvertieren.
Sie können die attributierte Beziehungsklasse in ArcMap als Tabelle einfügen. Anschließend können Sie die Tabelle in ArcMap öffnen und wie andere Tabellen bearbeiten. Sie können jedoch nur dann die Fremdschlüsselfelder bearbeiten oder neue Zeilen hinzufügen, wenn Sie den Attribut-Editor verwenden.
Teilen von in Beziehung stehenden Features
Beim Teilen eines einzelnen Geodatabase-Features in zwei separate Features wird das ursprüngliche Feature beibehalten (die Geometrie wird aktualisiert) und ein neues Feature erstellt. Beim Teilen eines Features wird für den größeren Teil die ObjectID des ursprünglichen Features übernommen, und bei dem kleineren Teil handelt es sich um das neue Feature. Wenn das Feature in zwei gleich große Teile geteilt wird, wird die Seite des Features mit dem Startpunkt der Linie als ursprüngliches Feature beibehalten (ursprüngliche ObjectID), und die andere Hälfte wird zum neuen Feature. Dies hat Folgen, wenn das zu teilende Feature Beziehungen zu anderen Objekten in der Datenbank hat.
Bei einfachen Beziehungen werden bei der Teilung eines Ursprungs-Features die Beziehungen zwischen dem Ursprungs-Feature und seinen Zielobjekten gelöscht. Wenn die neuen Features aus dem Teilungsvorgang erstellt werden, verfügen beide Features über den gleichen Primärschlüsselwert und beziehen sich daher beide auf die zugeordneten Zielobjekte oder -Features.
Im Fall einer abhängigen Beziehung ist das Verhalten anders. Wenn das Ursprungs-Feature einer abhängigen Beziehung geteilt wird, werden die Objekte, die mit ihm durch diese abhängige Beziehung verknüpft sind, nicht gelöscht, da das ursprüngliche Feature weiterhin vorhanden ist. Nur die Geometrie des ursprünglichen Features wird bei dem Teilungsvorgang geändert.
Bei der Teilung eines Ziel-Features in einer einfachen oder abhängigen Beziehung wird die Beziehung zwischen dem ursprünglichen Ziel-Feature und den entsprechenden Ursprungsobjekten nicht gelöscht. Es werden neue Beziehungen zwischen den Ursprungsobjekten und dem neuen Feature erstellt, das aus der Teilung entstanden ist.
Das hier beschriebene Verhalten bei der Teilung von in Beziehung stehenden Objekten mit Beziehungen ist das Standardverhalten. Sie können dieses Verhalten auf Klassenebene außer Kraft setzten, indem Sie eine Class-Extension schreiben, die das IFeatureClassEdit-Interface implementiert. Dieses Interface besitzt eine Eigenschaft "CustomSplitPolicyForRelationship", die Ihnen ermöglicht, zu definieren, wie Beziehungen bei der Teilung von Features behandelt werden.