Relaciones entre datasets en una geodatabase en DB2
Las relaciones administran las asociaciones entre objetos de una tabla y objetos de otra. Crear clases de relación entre tablas en su geodatabase ayuda a mantener la integridad referencial, le permite editar tablas relacionadas de manera más eficiente y le proporciona la capacidad de consultar tablas relacionadas. En una geodatabase se admiten los siguientes tipos de relaciones entre tablas:
- Relación espacial: relaciona entidad con entidad
- Relación no espacial: relaciona fila con fila
- Relación espacial a no espacial: relaciona entidad con fila
Así como las entidades se almacenan en una clase de entidad y las filas no espaciales se almacenan en tablas, las relaciones se almacenan y se administran en una clase de relación.
Para obtener detalles sobre las relaciones y la cardinalidad de la clase de relación, consultePropiedades de clase de relación.
Relaciones en ArcGIS Desktop
En el árbol de catálogo, las clases de relación aparecen como parte de un dataset de entidades. Las clases de relación están representadas con el siguiente icono:
Puede visualizar información sobre las clases de relación haciendo clic con el botón derecho del ratón en la clase de relación y, a continuación haciendo clic en Propiedades para abrir el cuadro de diálogo Propiedades de clase de relación.
La anotación vinculada a entidad es un tipo de clase de relación. En el cuadro de diálogo Propiedades de clase de relación, puede ver que la clase de entidad Distribmains participa en una relación de uno a muchos con la clase de entidad de anotación DistDiam. La unión de los registros en las tablas está basada en el OBJECTID en la clase de entidad Distribmains y el FeatureID en la clase de entidad DistDiam. Esta es una clase de relación compuesta; lo que significa que los cambios en una tabla afectan o alteran las entidades en la tabla relacionada. En este caso, los cambios que se realizan a la clase de origen (Distribmains) activan un cambio en la clase de entidad de destino (ud_reldestfc). Esto se denomina notificación enviada.
Clases de relación en una base de datos IBM DB2
Las clases de relación se almacenan en las tablas GDB_ITEMS y GDB_ITEMRELATIONSHIPS.
Clases de relación en un documento XML
Las clases de relación aparecen en los documentos XML como un tipo de elemento de datos. La siguiente es una parte de un documento XML de un dataset que contiene una clase de relación.
<DataElement xsi:type="esri:DERelationshipClass"> <CatalogPath>/V=sde.DEFAULT/FD=SDEDB2.GDB.Water/RC=SDEDB2.GDB.Anno_19_72</CatalogPath> <Name>SDEDB2.GDB.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>R249_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>SDEDB2.GDB.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>SDEDB2.GDB.Distribmains</Name> </OriginClassNames> <DestinationClassNames xsi:type="esri:Names"> <Name>SDEDB2.GDB.DistDiam</Name> </DestinationClassNames> <KeyType>esriRelKeyTypeSingle</KeyType> <ClassKey>esriRelClassKeyUndefined</ClassKey> <ForwardPathLabel>SDEDB2.GDB.DistDiam</ForwardPathLabel> <BackwardPathLabel>SDEDB2.GDB.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>