Beziehungsklasse erstellen (Data Management)

Zusammenfassung

Erstellt eine Beziehungsklasse zum Speichern einer Verknüpfung zwischen Feldern oder Features in der Quelltabelle und in der Zieltabelle.

Verwendung

  • Beziehungen können zwischen räumlichen Objekten (Features in Feature-Classes), nichträumlichen Objekten (Zeilen in einer Tabelle) sowie räumlichen und nichträumlichen Objekten bestehen.

  • Beziehungsklassen können nach ihrer Erstellung nicht geändert werden. Sie können lediglich Regeln hinzufügen, löschen oder neu definieren.

  • Bei Viele-zu-viele-Beziehungsklassen wird eine neue Tabelle in der Datenbank erstellt, in der die zur Verbindung von Quell- und Zieltabellen verwendeten Fremdschlüssel gespeichert werden. Diese Tabelle kann auch andere Felder zur Speicherung von Attributen der Beziehung besitzen, die weder der Quellklasse noch der Zielklasse zugeordnet sind. Beispiel: In einer Flurstücksdatenbank gibt es eine Beziehungsklasse zwischen Flurstücken und Besitzern, in der die Besitzer Flurstücke besitzen und die Flurstücke Besitzern gehören. Ein Attribut dieser Beziehung kann der Besitzanteil der einzelnen Besitzer sein. Eins-zu-Eins- und Eins-zu-Viele-Beziehungsklassen können ebenfalls Attribute beinhalten. In diesem Fall wird eine Tabelle zum Speichern der Beziehungen erstellt.

  • Einfache oder Peer-to-Peer-Beziehungen sind Beziehungen zwischen zwei oder mehr Objekten in der Datenbank, die unabhängig voneinander existieren. Beispiel: In einem Eisenbahnnetz gibt es Bahnübergänge, an denen eine oder mehrere verbundene Signalanlagen angebracht sind. EIn Bahnübergang kann jedoch auch ohne eine Signalanlage existieren, und Signalanlagen können im Eisenbahnnetz auch dort vorkommen, wo es keine Bahnübergänge gibt. Einfache Beziehungen können die Beziehungsarten Eins-zu-eins (1:1), Eins-zu-viele (1:M), Viele-zu-eins (M:1) und Viele-zu-viele (N:M) aufweisen.

  • Eine abhängige Beziehung ist eine Beziehung, bei der die Lebensdauer eines Objekts über die Lebensdauer der verbundenen Objekte entscheidet. Beispiel: Strommasten stützen Transformatoren und Transformatoren werden an Strommasten angebracht. Wenn ein Mast gelöscht wird, wird eine Meldung darüber an die entsprechenden Transformatoren übermittelt, die dann aus der Feature-Class der Transformatoren gelöscht werden. Abhängige Beziehungen sind immer vom Typ "Eins-zu-Viele".

  • Vorwärts- und Rückwärts-Pfadbeschriftungen beschreiben die Beziehung, wenn man von einem Objekt zu einem anderen navigiert. Die Vorwärts-Pfadbeschriftung beschreibt die Beziehung beim Navigieren von der Quell- zur Zielklasse. Im Beispiel mit Strommast und Transformator kann die Vorwärts-Pfadbeschriftung "Masten stützen Transformatoren" lauten. Die Rückwärts-Pfadbeschriftung beschreibt die Beziehung beim Navigieren von der Zielklasse zur Quellklasse. Im Beispiel mit Strommast und Transformator kann die Rückwärts-Pfadbeschriftung "Transformatoren werden an Masten angebracht" lauten.

Parameter

BeschriftungErläuterungDatentyp
Quelltabelle

Die Tabelle oder Feature-Class, die der Zieltabelle zugeordnet wird.

Table View
Zieltabelle

Die Tabelle, die der Quelltabelle zugeordnet wird.

Table View
Ausgabe-Beziehungsklasse

Die erstellte Beziehungsklasse.

Relationship Class
Beziehungstyp

Gibt den Typ der Beziehung an, die zwischen Quell- und Zieltabelle erstellt werden soll.

  • EinfachDie Quell- und Zieltabellen stehen in einer einfachen Beziehung zueinander. Dies ist die Standardeinstellung.
  • AbhängigDie Quell- und Zieltabellen stehen in einer abhängigen Beziehung zueinander.
String
Vorwärts-Pfadbeschriftung

Ein Name, der die Beziehung beim Navigieren von der Quelltabelle zur Zieltabelle eindeutig kennzeichnet.

String
Rückwärts-Pfadbeschriftung

Ein Name, der die Beziehung beim Navigieren von der Zieltabelle zur Quelltabelle eindeutig kennzeichnet.

String
Meldungsrichtung

Gibt die Richtung an, in die Meldungen zwischen Quell- und Zieltabelle weitergeleitet werden. Beispiel: In einer Beziehung zwischen Masten und Transformatoren wird, sobald der Mast gelöscht wird, eine Nachricht an die mit ihm in Beziehung stehenden Transformatorobjekte gesendet, um sie darüber zu informieren.

  • Vorwärts (Quelle zu Ziel)Meldungen werden von der Quelltabelle zur Zieltabelle weitergeleitet.
  • Rückwärts (Ziel zu Quelle)Meldungen werden von der Zieltabelle zur Quelltabelle weitergeleitet.
  • Beide RichtungenMeldungen werden von der Quelltabelle zur Zieltabelle und von der Zieltabelle an die Quelltabelle weitergeleitet.
  • Keine (es werden keine Meldungen übermittelt)Es werden keine Meldungen weitergeleitet. Dies ist die Standardeinstellung.
String
Beziehungsart

Gibt an, wie viele Beziehungen zwischen Zeilen oder Features in der Quelltabelle und Zeilen oder Features in der Zieltabelle bestehen.

  • Eins zu eins (1 : 1)Jede Zeile bzw. jedes Feature in der Quelltabelle kann mit 0 oder einer Zeile bzw. einem Feature in der Zieltabelle in Beziehung gesetzt werden. Dies ist die Standardeinstellung.
  • Eins-zu-viele (1:M)Jede Zeile bzw. jedes Feature in der Quelltabelle kann mit einer oder mehreren Zeilen bzw. einem oder mehreren Features in der Zieltabelle in Beziehung gesetzt werden.
  • Viele-zu-viele (M:N)Mehrere Zeilen bzw. Features in der Quelltabelle können mit einer oder mehreren Zeilen bzw. einem oder mehreren Features in der Zieltabelle in Beziehung gesetzt werden.
String
Beziehungsklasse ist attributiert

Gibt an, ob die Beziehungsklasse über Attribute verfügt.

  • Aktiviert: Die Beziehungsklasse verfügt über Attribute.
  • Deaktiviert: Die Beziehungsklasse besitzt keine Attribute. Dies ist die Standardeinstellung.
Boolean
Quell-Primärschlüssel

Bei Viele-zu-Viele- oder attributierten Beziehungsklassen ist dies das Feld in der Quelltabelle, das die Verknüpfung zum Feld Quell-Fremdschlüssel der Beziehungsklassentabelle enthält.

Bei Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen, die nicht attribuiert sind, ist dies das Feld in der Quelltabelle, das die Verknüpfung zum Feld Quell-Fremdschlüssel der Zieltabelle enthält.

String
Quell-Fremdschlüssel

Bei Viele-zu-Viele- oder attributierten Beziehungsklassen ist dies das Feld in der Beziehungsklassentabelle, das die Verknüpfung zum Feld Quell-Primärschlüssel der Quelltabelle enthält.

Bei Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen, die nicht attribuiert sind, ist dies das Feld in der Zieltabelle, das die Verknüpfung zum Feld Quell-Primärschlüssel der Quelltabelle enthält.

String
Ziel-Primärschlüssel
(optional)

Das Feld in der Zieltabelle, das die Verknüpfung zum Feld Ziel-Fremdschlüssel der Beziehungsklassentabelle enthält. Dieser Wert ist für Viele-zu-Viele- oder attribuierte Beziehungsklassen erforderlich, sollte aber bei nicht attribuierten Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen leer gelassen werden.

String
Ziel-Fremdschlüssel
(optional)

Das Feld in der Beziehungsklassentabelle, das die Verknüpfung zum Feld Ziel-Primärschlüssel der Zieltabelle enthält. Dieser Wert ist für Viele-zu-Viele- oder attribuierte Beziehungsklassen erforderlich, sollte aber bei nicht attribuierten Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen leer gelassen werden.

String

arcpy.management.CreateRelationshipClass(origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, attributed, origin_primary_key, origin_foreign_key, {destination_primary_key}, {destination_foreign_key})
NameErläuterungDatentyp
origin_table

Die Tabelle oder Feature-Class, die der Zieltabelle zugeordnet wird.

Table View
destination_table

Die Tabelle, die der Quelltabelle zugeordnet wird.

Table View
out_relationship_class

Die erstellte Beziehungsklasse.

Relationship Class
relationship_type

Gibt den Typ der Beziehung an, die zwischen Quell- und Zieltabelle erstellt werden soll.

  • SIMPLEDie Quell- und Zieltabellen stehen in einer einfachen Beziehung zueinander. Dies ist die Standardeinstellung.
  • COMPOSITEDie Quell- und Zieltabellen stehen in einer abhängigen Beziehung zueinander.
String
forward_label

Ein Name, der die Beziehung beim Navigieren von der Quelltabelle zur Zieltabelle eindeutig kennzeichnet.

String
backward_label

Ein Name, der die Beziehung beim Navigieren von der Zieltabelle zur Quelltabelle eindeutig kennzeichnet.

String
message_direction

Gibt die Richtung an, in die Meldungen zwischen Quell- und Zieltabelle weitergeleitet werden. Beispiel: In einer Beziehung zwischen Masten und Transformatoren wird, sobald der Mast gelöscht wird, eine Nachricht an die mit ihm in Beziehung stehenden Transformatorobjekte gesendet, um sie darüber zu informieren.

  • FORWARDMeldungen werden von der Quelltabelle zur Zieltabelle weitergeleitet.
  • BACKWARDMeldungen werden von der Zieltabelle zur Quelltabelle weitergeleitet.
  • BOTHMeldungen werden von der Quelltabelle zur Zieltabelle und von der Zieltabelle an die Quelltabelle weitergeleitet.
  • NONEEs werden keine Meldungen weitergeleitet. Dies ist die Standardeinstellung.
String
cardinality

Gibt an, wie viele Beziehungen zwischen Zeilen oder Features in der Quelltabelle und Zeilen oder Features in der Zieltabelle bestehen.

  • ONE_TO_ONEJede Zeile bzw. jedes Feature in der Quelltabelle kann mit 0 oder einer Zeile bzw. einem Feature in der Zieltabelle in Beziehung gesetzt werden. Dies ist die Standardeinstellung.
  • ONE_TO_MANYJede Zeile bzw. jedes Feature in der Quelltabelle kann mit einer oder mehreren Zeilen bzw. einem oder mehreren Features in der Zieltabelle in Beziehung gesetzt werden.
  • MANY_TO_MANYMehrere Zeilen bzw. Features in der Quelltabelle können mit einer oder mehreren Zeilen bzw. einem oder mehreren Features in der Zieltabelle in Beziehung gesetzt werden.
String
attributed

Gibt an, ob die Beziehungsklasse über Attribute verfügt.

  • NONEDie Beziehungsklasse besitzt keine Attribute. Dies ist die Standardeinstellung.
  • ATTRIBUTEDDie Beziehungsklasse verfügt über Attribute.
Boolean
origin_primary_key

Bei Viele-zu-Viele- oder attributierten Beziehungsklassen ist dies das Feld in der Quelltabelle, das die Verknüpfung zum Feld origin_foreign_key der Beziehungsklassentabelle enthält.

Bei Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen, die nicht attribuiert sind, ist dies das Feld in der Quelltabelle, das die Verknüpfung zum Feld origin_foreign_key der Zieltabelle enthält.

String
origin_foreign_key

Bei Viele-zu-Viele- oder attributierten Beziehungsklassen ist dies das Feld in der Beziehungsklassentabelle, das die Verknüpfung zum Feld origin_primary_key der Quelltabelle enthält.

Bei Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen, die nicht attribuiert sind, ist dies das Feld in der Zieltabelle, das die Verknüpfung zum Feld origin_primary_key der Quelltabelle enthält.

String
destination_primary_key
(optional)

Das Feld in der Zieltabelle, das die Verknüpfung zum Feld destination_foreign_key der Beziehungsklassentabelle enthält. Dieser Wert ist für Viele-zu-Viele- oder attribuierte Beziehungsklassen erforderlich, sollte aber bei nicht attribuierten Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen leer gelassen werden.

String
destination_foreign_key
(optional)

Das Feld in der Beziehungsklassentabelle, das die Verknüpfung zum Feld destination_primary_key der Zieltabelle enthält. Dieser Wert ist für Viele-zu-Viele- oder attribuierte Beziehungsklassen erforderlich, sollte aber bei nicht attribuierten Eins-zu-Eins- oder Eins-zu-Viele-Beziehungsklassen leer gelassen werden.

String

Codebeispiel

CreateRelationshipClass – Beispiel (Python-Fenster)

Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion CreateRelationshipClass verwenden.

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.CreateRelationshipClass_management("vegtype", "vegtable", "veg_RelClass", "SIMPLE",
                                         "Attributes from vegtable", "Attributes and Features from vegtype",
                                         "NONE", "ONE_TO_ONE", "NONE", "HOLLAND95", "HOLLAND95")
CreateRelationshipClass – Beispiel 1 (eigenständiges Skript)

Es wird eine Beziehungsklasse zwischen einer Vegetation-Feature-Class und einer Tabelle mit zusätzlichen Vegetationsinformationen erstellt.

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between vegetation feature
#              class and table with additional vegetation information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy vegtable.dbf to file gdb table, since both tables to be related
# must be in the same database
vegDbf = "vegtable.dbf"
vegTbl = "Habitat_Analysis.gdb/vegtable"
arcpy.CopyRows_management(vegDbf, vegTbl)

# Create simple relationship class between 'vegtype' vegetation layer
# and 'vegtable' table with additional vegetation information
veg = "Habitat_Analysis.gdb/vegtype"
relClass = "Habitat_Analysis.gdb/veg_RelClass"
forLabel = "Attributes from vegtable"
backLabel = "Attributes and Features from vegtype"
primaryKey = "HOLLAND95"
foreignKey = "HOLLAND95"
arcpy.CreateRelationshipClass_management(veg,
                                         vegTbl,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "NONE",
                                         "ONE_TO_ONE",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)
CreateRelationshipClass – Beispiel 2 (eigenständiges Skript)

Es wird eine Beziehungsklasse zwischen einer Parcel-Feature-Class und einer Tabelle mit Besitzerinformationen erstellt.

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between parcels feature
#              class and table with owner information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)

# Create simple relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
primaryKey = "PROPERTY_ID"
foreignKey = "PROPERTY_ID"
arcpy.CreateRelationshipClass_management(ownerTbl,
                                         parcel,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "BACKWARD",
                                         "ONE_TO_MANY",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)

Verwandte Themen