Oracle に格納されたジオデータベースのデータセット間のリレーションシップ
リレーションシップは、あるテーブルのオブジェクトと別のテーブルのオブジェクトとの関連付けを管理します。ジオデータベース内のテーブル間のリレーションシップ クラスを作成すると、参照整合性が維持され、関連テーブルの編集が効率的になり、関連テーブルへのクエリも実行できるようになります。次のような種類のジオデータベース内のテーブル間のリレーションシップがサポートされています。
- 空間リレーションシップ - フィーチャとフィーチャの関連付け
- 非空間リレーションシップ - 行と行の関連付け
- 空間リレーションシップから非空間リレーションシップ - フィーチャから行への関連付け
フィーチャがフィーチャクラスに格納され、非空間行がテーブルに格納されるのと同様に、リレーションシップはリレーションシップ クラスに格納され、管理されます。
リレーションシップとリレーションシップ クラスの基数の詳細については、「リレーションシップ クラスのプロパティ」をご参照ください。
ArcGIS for Desktop のリレーションシップ
カタログ ツリーでは、リレーションシップ クラスはフィーチャ データセットの一部として表示されます。リレーションシップ クラスは次のアイコンで表示されます。
リレーションシップ クラスに関する情報を表示するには、リレーションシップ クラスを右クリックして [プロパティ] を選択し、[リレーションシップ クラス プロパティ] ダイアログ ボックスを表示します。
フィーチャリンク アノテーションはリレーションシップ クラスの一種です。[リレーションシップ クラス プロパティ] ダイアログ ボックスでは、Distribmains フィーチャクラスが 1 対多のリレーションシップで DistDiam アノテーション フィーチャクラスに属していることを確認できます。テーブル内のレコードは、Distribmains フィーチャクラスの OBJECTID と DistDiam フィーチャクラスの FeatureID に基づいて結合されます。これはコンポジット リレーションシップ クラスなので、あるテーブルの変更が、関連テーブルを変更するなどの影響を与えます。このケースでは、関連元クラス(Distribmains)に対する変更が関連先フィーチャクラス(ud_reldestfc)の変更につながります。これは正方向通知と呼ばれます。
Oracle データベースのリレーションシップ クラス
リレーションシップ クラスは GDB_ITEMS および GDB_ITEMRELATIONSHIPS テーブルに格納されます。
XML ドキュメントのリレーションシップ クラス
XML ドキュメントのリレーションシップ クラスは、データ エレメントのタイプとして定義されます。次に、リレーションシップ クラスが含まれたデータセットからエクスポートした XML ドキュメントの一部を示します。
<DataElement xsi:type="esri:DERelationshipClass">
<CatalogPath>/V=sde.DEFAULT/FD=MAP.Landbase_rel/RC=MAP.prcl2bld</CatalogPath>
<Name>MAP.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>GDB.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>GDB.Parcels_1</Name>
</OriginClassNames>
<DestinationClassNames xsi:type="esri:Names">
<Name>GDB.bldgs</Name>
</DestinationClassNames>
<KeyType>esriRelKeyTypeSingle</KeyType>
<ClassKey>esriRelClassKeyUndefined</ClassKey>
<ForwardPathLabel>GDB.bldgs</ForwardPathLabel>
<BackwardPathLabel>GDB.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>