Отношения между наборами данных в базе геоданных в SQL Server
Отношения управляют связями между объектами в одной таблице и объектами в другой. Создание классов отношений между таблицами в базе геоданных может помочь в обслуживании ссылочной целостности, позволяет более эффективно редактировать связанные таблицы, а также дает возможность совершать запросы к связанным таблицам. Поддерживаются следующие типы отношений между таблицами в базе геоданных:
- Пространственное отношение – связи "объект к объекту"
- Непространственное отношение – связи "строка к строке"
- Отношение "пространственные к непространственным" – связи "объект к строке"
Как объекты хранятся в классе объектов, а непространственные строки хранятся в таблицах, так и отношения хранятся и управляются в классах отношений.
Подробные сведения по отношениям и кардинальности класса отношений см. в разделе Свойства класса отношений.
Отношения в ArcGIS for Desktop
В дереве каталога классы отношений отображаются как часть набора данных объектов. Классы отношений представляются следующим значком:
Вы можете ознакомиться с информацией по классам отношений, щелкнув нужный класс отношений и выбрав Свойства (Properties), чтобы открыть диалоговое окно Свойства класса отношений (Relationship Class Properties).
Объектно-связанная аннотация – это тип класса отношений. В диалоговом окне Свойства класса отношений (Relationship Class Properties) вы можете видеть, что класс объектов ud_reloriginfc связан с отношением "один ко многим" с классом аннотаций ud_reldestfc. Записи в таблицах связаны на основе ObjectID в классе объектов ud_reloriginfc и col_featureid в классе объектов ud_reldestfc. Это составной класс отношений, который означает, что изменения в одной таблице влияют на пространственные объекты или изменяют их в связанной таблице. В этом случае изменения совершаются над триггерами исходного класса (ud_reloriginfc) в целевом классе пространственных объектов (ud_reldestfc). Это называется прямым уведомлением.
Классы отношений в базе данных Microsoft SQL Server
Классы отношений хранятся в таблицах GDB_ITEMS и GDB_ITEMRELATIONSHIPS.
Классы отношений в XML-документе
Классы отношений отображаются в XML-документах как тип данных элемента. Ниже показана часть XML-документа из набора данных, содержащего класс отношений.
<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>