Relations entre jeux de données d'une géodatabase dans PostgreSQL
Les relations gèrent les associations entre les objets de deux tables différentes. La création de classes de relations entre les tables de votre géodatabase peut aider à maintenir l'intégrité référentielle, à modifier les tables reliées plus efficacement et permet d'effectuer des requêtes sur les tables reliées. Les types suivants de relations entre les tables d'une géodatabase sont pris en charge :
- Relation spatiale - Relation d'entité à entité
- Relation non spatiale - Relation de ligne à ligne
- Relation spatiale à non spatiale - Relation d'entité à ligne
Tout comme les entités sont stockées dans une classe d'entités et les lignes non spatiales sont stockées dans des tables, les relations sont stockées et gérées dans une classe de relations.
Pour plus d'informations sur les relations et la cardinalité des classes de relations, reportez-vous à la rubrique Propriétés de la classe de relations.
Classes de relations dans ArcGIS for Desktop
Dans l'arborescence du Catalogue, les classes de relations apparaissent comme partie d'un jeu de données d'entité. Les classes de relations sont représentées avec l'icône suivante :
Pour afficher les informations sur les classes de relations, cliquez avec le bouton droit sur la classe de relations et sélectionnez Propriétés pour ouvrir la boîte de dialogue Propriétés de la classe de relations.
L'annotation liée à une entité est un type de classe de relations. Dans la boîte de dialogue Propriétés de la classe de relations, vous pouvez voir que la classe d'entités Distribmains participe à une relation de type un vers plusieurs avec la classe d'entités annotations DistDiam. Les enregistrements des tables sont joints sur l'identifiant objectid de la classe d'entités Distribmains et sur l'identifiant featureid de la classe d'entités DistDiam. Il s'agit d'une classe de relations composite, par conséquent les changements dans une table affectent ou modifient les entités dans la table reliée. Dans ce cas, les modifications apportés à la classe d'origine (Distribmains) déclenchent un changement dans la classe d'entités cible (DistDiam). Ce processus est désigné sous le terme de notification vers l'avant.
Classes de relations dans une base de données PostgreSQL
Les classes de relations sont stockées dans les tables gdb_items et gdb_itemrelationships.
Classes de relations dans un document d'espace de travail XML
Les classes de relations apparaissent dans les documents XML comme un type d'élément de données. Voici un extrait d'un document XML issu d'un jeu de données contenant une classe de relations.
<DataElement xsi:type="esri:DERelationshipClass">
<CatalogPath>/V=sde.DEFAULT/FD=m8db.hbear.Water/RC=m8db.hbear.Anno_19_72</CatalogPath>
<Name>m8db.hbear.Anno_19_72</Name>
<DatasetType>esriDTRelationshipClass</DatasetType>
<DSID>-1</DSID>
<Versioned>true</Versioned>
<CanVersion>true</CanVersion>
<HasOID>true</HasOID>
<OIDFieldName>RID</OIDFieldName>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>RID</Name>
<Type>esriFieldTypeOID</Type>
<IsNullable>false</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
</Field>
<Field xsi:type="esri:Field">
<Name>Diameter</Name>
<Type>esriFieldTypeInteger</Type>
<IsNullable>true</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
</Field>
<Field xsi:type="esri:Field">
<Name>bldg_id</Name>
<Type>esriFieldTypeInteger</Type>
<IsNullable>true</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
</Field>
</FieldArray>
</Fields>
<Indexes xsi:type="esri:Indexes">
<IndexArray xsi:type="esri:ArrayOfIndex">
<Index xsi:type="esri:Index">
<Name>r206_sde_rowid_uk</Name>
<IsUnique>true</IsUnique>
<IsAscending>true</IsAscending>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>RID</Name>
<Type>esriFieldTypeOID</Type>
<IsNullable>false</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
</Field>
</FieldArray>
</Fields>
</Index>
<Index xsi:type="esri:Index">
<Name>GDB_9_Diam</Name>
<IsUnique>false</IsUnique>
<IsAscending>true</IsAscending>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>Diameter</Name>
<Type>esriFieldTypeInteger</Type>
<IsNullable>true</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
</Field>
</FieldArray>
</Fields>
</Index>
<Index xsi:type="esri:Index">
<Name>GDB_9_feature_id</Name>
<IsUnique>false</IsUnique>
<IsAscending>true</IsAscending>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>bldg_id</Name>
<Type>esriFieldTypeInteger</Type>
<IsNullable>true</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
</Field>
</FieldArray>
</Fields>
</Index>
</IndexArray>
</Indexes>
<CLSID>{A07E9CB1-9A95-11D2-891A-0000F877762D}</CLSID>
<EXTCLSID />
<RelationshipClassNames xsi:type="esri:Names" />
<AliasName>m8db.hbear.Anno_19_72</AliasName>
<ModelName />
<HasGlobalID>false</HasGlobalID>
<GlobalIDFieldName />
<RasterFieldName />
<ExtensionProperties xsi:type="esri:PropertySet">
<PropertyArray xsi:type="esri:ArrayOfPropertySetProperty" />
</ExtensionProperties>
<ControllerMemberships xsi:type="esri:ArrayOfControllerMembership" />
<Cardinality>esriRelCardinalityManyToMany</Cardinality>
<Notification>esriRelNotificationBoth</Notification>
<IsAttributed>true</IsAttributed>
<IsComposite>true</IsComposite>
<OriginClassNames xsi:type="esri:Names">
<Name>m8db.hbear.Distribmains</Name>
</OriginClassNames>
<DestinationClassNames xsi:type="esri:Names">
<Name>m8db.hbear.DistDiam</Name>
</DestinationClassNames>
<KeyType>esriRelKeyTypeSingle</KeyType>
<ClassKey>esriRelClassKeyUndefined</ClassKey>
<ForwardPathLabel>m8db.hbear.DistDiam</ForwardPathLabel>
<BackwardPathLabel>m8db.hbear.Distribmains</BackwardPathLabel>
<IsReflexive>false</IsReflexive>
<OriginClassKeys xsi:type="esri:ArrayOfRelationshipClassKey">
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>OBJECTID</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleOriginPrimary</KeyRole>
</RelationshipClassKey>
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>FeatureID</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleOriginForeign</KeyRole>
</RelationshipClassKey>
</OriginClassKeys>
<DestinationClassKeys xsi:type="esri:ArrayOfRelationshipClassKey">
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>OBJECT_ID</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleDestinationPrimary</KeyRole>
</RelationshipClassKey>
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>Feature_ID</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleDestinationForeign</KeyRole>
</RelationshipClassKey>
</DestinationClassKeys>
<RelationshipRules xsi:type="esri:ArrayOfRelationshipRule" />
</DataElement>