SQL Server に格納されたジオデータベースのデータセット間のリレーションシップ
リレーションシップは、あるテーブルのオブジェクトと別のテーブルのオブジェクトとの関連付けを管理します。ジオデータベース内のテーブル間のリレーションシップ クラスを作成すると、参照整合性が維持され、関連テーブルの編集が効率的になり、関連テーブルへのクエリも実行できるようになります。次のような種類のジオデータベース内のテーブル間のリレーションシップがサポートされています。
- 空間リレーションシップ - フィーチャとフィーチャの関連付け
- 非空間リレーションシップ - 行と行の関連付け
- 空間リレーションシップから非空間リレーションシップ - フィーチャから行への関連付け
フィーチャがフィーチャクラスに格納され、非空間行がテーブルに格納されるのと同様に、リレーションシップはリレーションシップ クラスに格納され、管理されます。
リレーションシップとリレーションシップ クラスの基数の詳細については、「リレーションシップ クラスのプロパティ」をご参照ください。
ArcGIS Desktop のリレーションシップ
カタログ ツリーでは、リレーションシップ クラスはフィーチャ データセットの一部として表示されます。リレーションシップ クラスは次のアイコンで表示されます。
リレーションシップ クラスに関する情報を表示するには、リレーションシップ クラスを右クリックして [プロパティ] を選択し、[リレーションシップ クラス プロパティ] ダイアログ ボックスを表示します。
フィーチャリンク アノテーションはリレーションシップ クラスの一種です。[リレーションシップ クラス プロパティ] ダイアログ ボックスでは、ud_reloriginfc フィーチャクラスが 1 対多のリレーションシップで ud_reldestfc アノテーション フィーチャクラスに属していることを確認できます。テーブル内のレコードは、ud_reloriginfc フィーチャクラスの ObjectID と ud_reldestfc フィーチャクラスの col_featureid に基づいて結合されます。これはコンポジット リレーションシップ クラスなので、あるテーブルの変更が、関連テーブルを変更するなどの影響を与えます。このケースでは、関連元クラス(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>sde.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_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_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>sde.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>sde.RJP.Parcels_1</Name> </OriginClassNames> <DestinationClassNames xsi:type="esri:Names"> <Name>sde.RJP.bldgs</Name> </DestinationClassNames> <KeyType>esriRelKeyTypeSingle</KeyType> <ClassKey>esriRelClassKeyUndefined</ClassKey> <ForwardPathLabel>sde.RJP.bldgs</ForwardPathLabel> <BackwardPathLabel>sde.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>