A propos de la mise à jour des relations dans ArcMap

Cette rubrique s'applique uniquement à ArcEditor et ArcInfo.

A propos des relations

Les classes de relations vous permettent de gérer les associations entre les objets d'une géodatabase. Ces relations peuvent être simples et passives ou composites. Les relations composites impliquent des relations parent/enfant, soit une composition de relations, par conséquent, lorsque des modifications sont apportées à des objets d'un côté de la relation, elles sont répercutées aux objets de l'autre côté. Une annotation liée à des entités dans la géodatabase utilise des relations composites.

Les relations d'une classe de relations peuvent être stockées à l'aide de clés primaires et étrangères dans les classes d'objets de l'un des côtés de la classe de relations. Dans le cas de classes de relations de plusieurs à plusieurs (M-N) et de classes de relations attribuées, les relations sont des lignes stockées dans une table séparée.

Vous pouvez utiliser la fenêtre Attributs ou la table pour trouver tous les objets reliés à un objet sélectionné. Une fois que vous avez navigué vers l'objet associé, vous pouvez en modifier les attributs. Vous pouvez également utiliser l'outil d'édition d'ArcMap pour rompre la relation entre deux objets ou créer de nouvelles relations entre les objets. Lorsque vous modifiez des objets et des relations de cette manière, l'intégrité référentielle est conservée.

Ajout et suppression de relations

Vous pouvez utiliser la fenêtre Attributs pour créer et supprimer des relations entre deux objets. Si la relation est gérée par des clés étrangères et primaires (relations 1-1 ou 1-M non attribuées), la valeur de clé primaire de l'objet d'origine est affectée à la clé étrangère de l'objet de destination. Si vous supprimez la relation entre deux objets, la valeur de la clé étrangère de l'objet de destination est remplacée par une valeur nulle. Les champs de la clé étrangère de l'objet de destination doivent accepter les valeurs nulles.

Création et suppression des relations (clés)

Si la classe de relations est M-N (plusieurs vers plusieurs) ou attribuée, les relations sont stockées dans une table séparée de la base de données. Lorsque vous créez une relation entre deux objets dans ce type de classe de relations, une nouvelle ligne est ajoutée à cette table, qui est renseignée avec les valeurs provenant des clés primaires des objets d'origine et de destination. Si vous supprimez une relation entre deux objets, la ligne correspondant à cette relation est supprimée de la table de relations.

Création ou suppression de relations (M-N ou attribuées)

Mise à jour des objets dans une classe de relations simples

Lorsqu'un objet faisant partie d'une relation avec d'autres objets est supprimé d'une géodatabase, toutes ses relations sont également supprimées. Si l'objet supprimé est l'objet d'origine, la clé étrangère dans tous les objets de destination qui lui sont associés est définie sur une valeur nulle. Si l'objet supprimé est un objet de destination, l'objet d'origine n'est pas supprimé.

Si les relations sont gérées sous forme de lignes dans une table de relations (relations M–N ou attribuées), lorsqu'un objet d'origine ou de destination est supprimé ainsi que ses relations, les lignes correspondant à ces relations sont supprimées de la table de relations.

RemarqueRemarque :

Etant donné que les classes de relations simples définissent la clé étrangère sur Null lorsqu'une entité d'origine est supprimée, des objets orphelins peuvent exister dans la classe de destination de la relation. Cela est permis, car les classes de relations simples sont destinées aux objets reliés qui peuvent exister indépendamment l'un de l'autre. Pour identifier les objets de destination orphelins dans une classe de relations simples, les règles de relation doivent être configurées pour empêcher l'existence d'objets de destination orphelins. Une fois que les règles sont configurées, l'outil Valider la sélection identifiera tous les objets de destination orphelins.

Pour en savoir plus sur les règles de relations, voir : Création de règles de relations

Suppression d'objets reliés

Création de nouveaux objets reliés

Dans ArcMap, vous pouvez sélectionner un objet, puis utiliser la boîte de dialogue Attributs pour créer un objet non spatial dans une classe reliée. Lorsque cet objet est créé, tous ses attributs sont renseignés avec leurs propres valeurs par défaut et une relation est établie avec l'objet à partir duquel il a été créé. Vous ne pouvez créer que des objets non spatiaux de cette façon ; vous ne pouvez pas créer d'entités.

Si les relations sont mises à jour à l'aide de clés primaires et étrangères, la clé étrangère de l'objet de destination est renseignée avec la clé primaire de l'objet d'origine, que l'un ou l'autre de ces objets soit créé à l'aide de la boîte de dialogue Attributs ou non. Si les relations sont gérées en tant que lignes dans une table de relations (relations M–N ou relations attribuées), une nouvelle ligne est ajoutée à la table de la classe de relations.

Les tables suivantes montrent que lorsque vous utilisez la fenêtre Attributs pour créer des objets reliés, une relation est créée avec les objets à partir desquels les objets reliés ont été créés. Si les relations sont mises à jour à l'aide de clés primaires et étrangères, la clé étrangère de l'objet de destination est renseignée avec la clé primaire de l'objet d'origine.

Créer de nouveaux objets reliés

Mise à jour des objets dans une classe de relations composites

Les relations composites ont un comportement particulier. Lors de la modification des objets faisant partie d'une relation composite, ce comportement s'étend au processus de modification. En effet, les modifications apportées à l'objet d'origine d'une relation composite affectent souvent directement les objets de destination associés. Ce comportement dépend en partie de la messagerie de la classe de relations.

Par défaut, les classes de relations composites ont une fonctionnalité d'envoi de messages, ainsi lorsque l'objet d'origine dans une relation composite est modifié, il envoie des messages aux objets de destination qui lui sont associés. Les objets reliés répondront à ce message de façon standard : si les objets de destination sont des objets non spatiaux, ils ne changeront pas. Cependant, s'il s'agit d'entités, lorsque l'objet d'origine est déplacé, les objets de destination se déplacent également de la même façon. Ainsi, si l'objet d'origine est tourné, les objets de destination seront tournés selon le même angle. Toute modification des sommets individuels de la géométrie d'une entité s'apparente à une mise à jour et non à un déplacement de la géométrie de l'entité. Dans ce cas, l'objet relié n'est pas déplacé.

A l'instar des relations simples, les relations composites conservent leur intégrité référentielle lorsque les objets sont supprimés, mais elles le font différemment. Lorsque l'objet d'origine d'une relation composite est supprimé, tous les objets qui lui sont associés par le biais de la relation sont également supprimés. Cette suppression en cascade se produit que la messagerie soit définie en avant, en arrière, dans les deux sens ou dans aucun.

Dans l'exemple ci-dessous, le pôle sélectionné est l'objet d'origine et le transformateur l'objet de destination.

Relation composite entre un poteau électrique et un transformateur

Les tables ci-dessous montrent que lorsqu'un objet d'origine d'une relation composite est supprimé, tous les objets de destination qui lui sont associés par le biais d'une relation composite sont également supprimés.

Suppression d'objets d'origine dans une relation composite

En revanche, lorsqu'un objet de destination est supprimé, la relation le liant à son objet d'origine est supprimée ; l'objet d'origine quant à lui n'est ni supprimé ni modifié.

RemarqueRemarque :

Bien que les objets de destination soient supprimés lorsque l'objet d'origine auquel ils sont reliés est supprimé dans une relation composite, des objets de destination orphelins peuvent toujours exister dans la classe de destination. Cela est dû au fait que le modèle de Géodatabase ne vous empêche pas d'insérer de nouvelles entités dans une classe d'objets s'il s'agit de la destination dans une relation composite. Si vous avez créé un objet de destination sans l'avoir associé à un objet d'origine, l'outil Valider la sélection vous le signalera en tant qu'erreur.

Dans le cas d'une annotation liée à des entités, le lien entre chaque élément d'annotation et l'entité qu'elle annote est modélisé comme une relation composite. Le parent (ou l'origine) de la relation est l'entité normale, et l'enfant (ou la destination) est l'annotation associée.

Si vous avez plusieurs relations plusieurs à plusieurs modélisées à l'aide d'une table de jointure, vous pouvez utiliser l'outil de géotraitement Table vers classe de relations pour convertir la table qui relie des valeurs entre deux autres tables en classe de relations attribuées.

Vous pouvez ajouter votre classe de relations attribuées à ArcMap comme une table. Une fois qu'elle se trouve dans ArcMap, vous pouvez ouvrir la table et la modifier comme les autres tables. Toutefois, vous ne pouvez pas modifier les champs Clé étrangère ni ajouter de nouveaux enregistrements, sauf si vous utilisez l'éditeur d'attributs.

Fractionnement d'entités faisant partie d'une relation

Le fractionnement d'une entité de géodatabase en deux entités séparées conserve l'entité d'origine (tout en mettant à jour la géométrie) et crée une entité. Lorsque vous fractionnez une entité, la partie la plus grande conserve l'ObjectID de l'entité d'origine et la plus petite partie devient la nouvelle entité. Si l'entité est fractionnée en moitiés égales, le côté comportant le point de départ de la ligne est conservé en tant qu'entité d'origine (ObjectID d'origine) et la seconde moitié devient la nouvelle entité. Cela a certaines implications lorsque l'entité divisée possède des relations avec d'autres objets dans la base de données.

Dans les relations simples, lorsqu'une entité d'origine est divisée, les relations la liant à ses objets de destination sont supprimées. Lorsque des entités sont créées à la suite d'une opération de fractionnement, les deux entités possèdent la même valeur de clé primaire et, par conséquent, sont toutes deux liées aux objets ou entités de destination associés.

Dans le cas d'une relation composite, le comportement est différent. Lorsque l'entité d'origine d'une relation composite est fractionnée, l'opération ne supprime pas les objets qui sont associés à l'entité d'origine par le biais de la classe de relations composites car l'entité d'origine reste présente. Seule la géométrie de l'entité d'origine est modifiée lors de l'opération de fractionnement.

Fractionnement d'objets d'origine

Lors du fractionnement d'une entité cible d'une relation simple ou composite, la relation entre l'entité d'origine et les objets d'origine associés n'est pas supprimée. De nouvelles relations sont créées entre les objets d'origine et la nouvelle entité résultant du fractionnement.

Fractionnement d'objets d'origine

Le comportement des objets impliqués dans une division avec des relations décrit ici est le comportement par défaut. Vous pouvez le contourner au niveau de la classe en créant une extension de classe qui mettra en œuvre l'interface IfeatureClassEdit. Cette interface possède une propriété appelée CustomSplitPolicyForRelationship, qui permet de préciser la manière dont les relations sont gérées lors de la division des entités.

Rubriques connexes


7/10/2012