Créer une classe de relations (Gestion des données)

Synthèse

Crée une classe de relations pour stocker une association entre des champs ou des entités de la table d’origine et de la table de destination.

Utilisation

  • Les relations existent entre objets spatiaux (entités dans les classes d'entités), entre objets non spatiaux (lignes dans une table) ou entre des objets spatiaux et non spatiaux.

  • Une fois créée, une classe de relations ne peut pas être modifiée ; vous pouvez uniquement ajouter, supprimer ou affiner ses règles.

  • Pour les classes de relations plusieurs vers plusieurs, une nouvelle table est créée dans la base de données pour stocker les clés étrangères utilisées pour lier les classes d'origine et de destination. Cette table peut également comporter d’autres champs pour stocker des attributs de la relation qui ne sont attribués ni à la classe d’origine, ni à la classe de destination. Par exemple, une base de données de parcelles peut contenir une classe de relations entre des parcelles et des propriétaires dans laquelle des propriétaires possèdent des parcelles et des parcelles appartiennent à des propriétaires. Un attribut de cette relation peut représenter des parts de copropriété. Les classes de relations un vers un et un vers plusieurs peuvent également avoir des attributs. Dans ce cas, une table est créée pour stocker les relations.

  • Les relations simples, ou point à point, impliquent deux objets ou plus dans la base de données qui existent indépendamment les uns des autres. Par exemple, un réseau ferroviaire peut comporter des intersections avec un ou plusieurs signaux lumineux. Cependant, une intersection de voie ferrée peut exister sans signal lumineux et des signaux lumineux peuvent exister sur le réseau ferroviaire là où il n’y a pas d’intersection. Les relations simples peuvent avoir des cardinalités de type un vers un, un vers plusieurs et plusieurs vers plusieurs.

  • Une relation composite décrit une relation dans laquelle l'existence d'un objet régit l'existence des objets qui lui sont liés. Par exemple, les pylônes électriques supportent les transformateurs et les transformateurs sont montés sur des pylônes. Une fois qu'un pylône est supprimé, un message de suppression est transmis aux transformateurs qui lui sont liés, lesquels sont supprimés de la classe d'entités des transformateurs. Les relations composites décrivent toujours des relations un vers plusieurs.

  • Les dénominations de parcours avant et arrière décrivent la relation née de la navigation d'un objet à un autre. La dénomination de parcours avant décrit la relation née de la navigation depuis la classe d'origine jusqu'à la classe de destination. Dans notre exemple pylône-transformateur, la dénomination origine vers destination serait : Les pylônes soutiennent les transformateurs. La dénomination destination vers origine décrit la relation née de la navigation depuis la classe de destination jusqu’à la classe d’origine. Dans notre exemple pylône-transformateur, la dénomination destination vers origine serait : Les transformateurs sont montés sur les pylônes.

Paramètres

ÉtiquetteExplicationType de données
Table d’origine

Table ou classe d’entités associée à la table de destination.

Table View
Table de destination

Table associée à la table d’origine.

Table View
Classe de relations en sortie

Classe de relations à créer.

Relationship Class
Type de relation

Spécifie le type de relation à créer entre les tables d’origine et de destination.

  • SimpleLes tables d’origine et de destination auront une relation simple. Il s’agit de l’option par défaut.
  • CompositeLes tables d’origine et de destination auront une relation composite.
String
Appellation avant

Nom permettant d'identifier de façon unique la relation lors de la navigation depuis la table d'origine vers la table de destination.

String
Appellation arrière

Nom permettant d'identifier de façon unique la relation lors de la navigation depuis la table de destination vers la table d'origine.

String
Sens des messages

Précise la direction de transmission des messages entre les tables d’origine et de destination. Par exemple, dans une relation entre des pylônes et des transformateurs, lorsqu’un pylône est supprimé, un message est transmis aux objets transformateurs associés pour indiquer que le pylône a été supprimé.

  • Avant (origine vers destination)Les messages sont transmis depuis la table d’origine vers la table de destination.
  • Arrière (destination vers origine)Les messages sont transmis depuis la table de destination vers la table d’origine.
  • Les deux directionsLes messages sont transmis depuis la table d’origine vers la table de destination et inversement.
  • Aucune (aucun message transmis)Aucun message n’est transmis. Il s’agit de l’option par défaut.
String
Cardinalité

Indique le nombre de relations existantes entre les lignes ou entités de la table d’origine et les lignes ou entités de la table de destination.

  • Un vers un (1:1)Chaque ligne ou entité de la table d'origine peut être mise en relation avec zéro ou une ligne ou entité de la table de destination. Il s’agit de l’option par défaut.
  • Un vers plusieurs (1:M)Chaque ligne ou entité de la table d'origine peut être mise en relation avec une ou plusieurs lignes ou entités de la table de destination.
  • Plusieurs vers plusieurs (M:M)Plusieurs lignes ou entités de la table d’origine peuvent être mises en relation avec une ou plusieurs lignes ou entités de la table de destination.
String
Classe de relations attribuée

Indique si la classe de relations aura des attributs.

  • Coché - La classe de relations aura des attributs.
  • Non coché - La classe de relations n’aura pas d’attributs. Il s’agit de l’option par défaut.
Boolean
Clé primaire d’origine

Pour les classes de relations plusieurs vers plusieurs ou attribuées, il s’agit du champ de la table d’origine qui est lié au champ Clé étrangère d’origine de la table de classe de relations.

Pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées, il s’agit du champ de la table d’origine qui est lié au champ Clé étrangère d’origine de la table de destination.

String
Clé étrangère d’origine

Pour les classes de relations plusieurs vers plusieurs ou attribuées, il s’agit du champ de la table de classe de relations qui est lié au champ Clé primaire d’origine de la table d’origine.

Pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées, il s’agit du champ de la table de destination qui est lié au champ Clé primaire d’origine de la table d’origine.

String
Clé primaire de destination
(Facultatif)

Champ de la table de destination lié au champ Clé étrangère de destination de la table de classe de relations. Cette valeur est requise pour les classes de relations plusieurs vers plusieurs ou attribuées, mais doit rester vide pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées.

String
Clé étrangère de destination
(Facultatif)

Champ de la table de classe de relations lié au champ Clé primaire de destination de la table de destination. Cette valeur est requise pour les classes de relations plusieurs vers plusieurs ou attribuées, mais doit rester vide pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées.

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})
NomExplicationType de données
origin_table

Table ou classe d’entités associée à la table de destination.

Table View
destination_table

Table associée à la table d’origine.

Table View
out_relationship_class

Classe de relations à créer.

Relationship Class
relationship_type

Spécifie le type de relation à créer entre les tables d’origine et de destination.

  • SIMPLELes tables d’origine et de destination auront une relation simple. Il s’agit de l’option par défaut.
  • COMPOSITELes tables d’origine et de destination auront une relation composite.
String
forward_label

Nom permettant d'identifier de façon unique la relation lors de la navigation depuis la table d'origine vers la table de destination.

String
backward_label

Nom permettant d'identifier de façon unique la relation lors de la navigation depuis la table de destination vers la table d'origine.

String
message_direction

Précise la direction de transmission des messages entre les tables d’origine et de destination. Par exemple, dans une relation entre des pylônes et des transformateurs, lorsqu’un pylône est supprimé, un message est transmis aux objets transformateurs associés pour indiquer que le pylône a été supprimé.

  • FORWARDLes messages sont transmis depuis la table d’origine vers la table de destination.
  • BACKWARDLes messages sont transmis depuis la table de destination vers la table d’origine.
  • BOTHLes messages sont transmis depuis la table d’origine vers la table de destination et inversement.
  • NONEAucun message n’est transmis. Il s’agit de l’option par défaut.
String
cardinality

Indique le nombre de relations existantes entre les lignes ou entités de la table d’origine et les lignes ou entités de la table de destination.

  • ONE_TO_ONEChaque ligne ou entité de la table d'origine peut être mise en relation avec zéro ou une ligne ou entité de la table de destination. Il s’agit de l’option par défaut.
  • ONE_TO_MANYChaque ligne ou entité de la table d'origine peut être mise en relation avec une ou plusieurs lignes ou entités de la table de destination.
  • MANY_TO_MANYPlusieurs lignes ou entités de la table d’origine peuvent être mises en relation avec une ou plusieurs lignes ou entités de la table de destination.
String
attributed

Indique si la classe de relations aura des attributs.

  • NONELa classe de relations n’aura pas d’attributs. Il s’agit de l’option par défaut.
  • ATTRIBUTEDLa classe de relations aura des attributs.
Boolean
origin_primary_key

Pour les classes de relations plusieurs vers plusieurs ou attribuées, il s’agit du champ de la table d’origine qui est lié au champ origin_foreign_key de la table de classe de relations.

Pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées, il s’agit du champ de la table d’origine qui est lié au champ origin_foreign_key de la table de destination.

String
origin_foreign_key

Pour les classes de relations plusieurs vers plusieurs ou attribuées, il s’agit du champ de la table de classe de relations qui est lié au champ origin_primary_key de la table d’origine.

Pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées, il s’agit du champ de la table de destination qui est lié au champ origin_primary_key de la table d’origine.

String
destination_primary_key
(Facultatif)

Champ de la table de destination lié au champ destination_foreign_key de la table de classe de relations. Cette valeur est requise pour les classes de relations plusieurs vers plusieurs ou attribuées, mais doit rester vide pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées.

String
destination_foreign_key
(Facultatif)

Champ de la table de classe de relations lié au champ destination_primary_key de la table de destination. Cette valeur est requise pour les classes de relations plusieurs vers plusieurs ou attribuées, mais doit rester vide pour les classes de relations un vers un ou un vers plusieurs qui ne sont pas attribuées.

String

Exemple de code

Exemple d’utilisation de l’outil CreateRelationshipClass (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction CreateRelationshipClass.

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")
Exemple 1 d'utilisation de l'outil CreateRelationshipClass (script autonome)

Créez une classe de relations entre une classe d’entités de végétation et une table avec des informations de végétation supplémentaires.

# 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)
Exemple 2 d’utilisation de l’outil CreateRelationshipClass (script autonome)

Créez une classe de relations entre une classe d’entités de parcelle et une table avec des informations sur les propriétaires.

# 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)

Rubriques connexes