Отношения между наборами данных в базе геоданных под управлением PostgreSQL
Отношения управляют связями между объектами в одной таблице и объектами в другой. Создание классов отношений между таблицами в базе геоданных может помочь в обслуживании ссылочной целостности, позволяет более эффективно редактировать связанные таблицы, а также дает возможность совершать запросы к связанным таблицам. Поддерживаются следующие типы отношений между таблицами в базе геоданных:
- Пространственное отношение – связи "объект к объекту"
- Непространственное отношение – связи "строка к строке"
- Отношение "пространственные к непространственным" – связи "объект к строке"
Как объекты хранятся в классе объектов, а непространственные строки хранятся в таблицах, так и отношения хранятся и управляются в классах отношений.
Подробные сведения по отношениям и кардинальности класса отношений см. в разделе Свойства класса отношений.
Классы отношений в ArcGIS for Desktop
В дереве Каталога классы отношений отображаются как часть набора классов объектов. Классы отношений представляются следующим значком:
Вы можете ознакомиться с информацией по классам отношений, щелкнув нужный класс отношений и выбрав Свойства (Properties), чтобы открыть диалоговое окно Свойства класса отношений (Relationship Class Properties).
Объектно-связанная аннотация – это тип класса отношений. В диалоговом окне Свойства класса отношений (Relationship Class Properties) вы можете видеть, что класс объектов Distribmains участвует в отношении "один ко многим" с классом объектов аннотаций DistDiam. Записи в таблицах связаны на основе objectid в классе объектов Distribmains и featureid в классе объектов DistDiam. Это составной класс отношений, который означает, что изменения в одной таблице влияют на пространственные объекты или изменяют их в связанной таблице. В этом случае, изменения, производимые в исходном классе (Distribmains), вызовут изменения в целевом классе объектов (DistDiam). Это называется прямым уведомлением.
Классы отношений в базе данных PostgreSQL
Классы отношений хранятся в таблицах gdb_items и gdb_itemrelationships.
Классы отношений в XML-документе рабочей области
Классы отношений отображаются в XML-документах как тип данных элемента. Ниже показана часть XML-документа из набора данных, содержащего класс отношений.
<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>