Relations entre jeux de données d'une géodatabase dans SQL Server
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.
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 ud_reloriginfc participe à une relation de type un vers plusieurs avec la classe d'entités annotations ud_reldestfc. Les enregistrements des tables sont joints en fonction de l'identifiant ObjectID de la classe d'entités ud_reloriginfc et de l'identifiant col_featureid de la classe d'entités ud_reldestfc. 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 (ud_reloriginfc) déclenchent un changement dans la classe d'entités cible (ud_reldestfc). Ce processus est désigné sous le terme de notification vers l'avant.
Classes de relations dans une base de données Microsoft SQL Server
Les classes de relations sont stockées dans les tables GDB_ITEMRELATIONSHIPS et GDB_ITEMS.
Classes de relations dans un document 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=sde.RJP.Landbase_rel/RC=sde.RJP.prcl2bld</CatalogPath>
<Name>spdb.RJP.prcl2bld</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>APN</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>R249_SPDB_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_APN</Name>
<IsUnique>false</IsUnique>
<IsAscending>true</IsAscending>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>APN</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_bldg_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>spdb.RJP.prcl2bld</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>spdb.RJP.Parcels_1</Name>
</OriginClassNames>
<DestinationClassNames xsi:type="esri:Names">
<Name>spdb.RJP.bldgs</Name>
</DestinationClassNames>
<KeyType>esriRelKeyTypeSingle</KeyType>
<ClassKey>esriRelClassKeyUndefined</ClassKey>
<ForwardPathLabel>spdb.RJP.bldgs</ForwardPathLabel>
<BackwardPathLabel>spdb.RJP.Parcels_1</BackwardPathLabel>
<IsReflexive>false</IsReflexive>
<OriginClassKeys xsi:type="esri:ArrayOfRelationshipClassKey">
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>APN</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleOriginPrimary</KeyRole>
</RelationshipClassKey>
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>APN</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleOriginForeign</KeyRole>
</RelationshipClassKey>
</OriginClassKeys>
<DestinationClassKeys xsi:type="esri:ArrayOfRelationshipClassKey">
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>BLDG_ID</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleDestinationPrimary</KeyRole>
</RelationshipClassKey>
<RelationshipClassKey xsi:type="esri:RelationshipClassKey">
<ObjectKeyName>bldg_id</ObjectKeyName>
<ClassKeyName />
<KeyRole>esriRelKeyRoleDestinationForeign</KeyRole>
</RelationshipClassKey>
</DestinationClassKeys>
<RelationshipRules xsi:type="esri:ArrayOfRelationshipRule" />
</DataElement>