ジオデータベース システム テーブルを操作するときの一般的な目的は、特定アイテムに関連するすべてのアイテムを検索することです。この例としては、フィーチャ データセットのコンテンツの検索、トポロジまたはジオメトリック ネットワークに参加するフィーチャクラスの検索、レプリカに含まれるデータセットの検索などが挙げられます。すべてのアイテムとリレーションシップは同じテーブル内に格納されているため、これらすべての場合に対して 1 つのクエリ (と使用されている特定アイテムを判別する文字列リテラル) を使用できます。この検索は、次の手順で実行できます。
- 元のアイテムの (フィーチャ データセットなど) の UUID を検索します。
- UUID を元の UUID として使用して、すべてのリレーションシップを検索します。
- それぞれの関連先 UUID について、対応するアイテムを検索し、GDB_ItemTypes テーブルを使用してそのタイプを解決します。
以下は、これらすべての手順を組み込んだ SQL クエリです。検索される特定アイテムを変更するには、最初に宣言されている両方の文字列変数を変更します。
--Queries a dbo-schema geodatabase in SQL Server
DECLARE @ORIGIN nvarchar(max);
DECLARE @ORIGIN_TYPE nvarchar(max);
SET @ORIGIN = 'Montgomery.Sasha.Landbase';
SET @ORIGIN_TYPE = 'Feature Dataset';
SELECT
DEST_ITEMS.Name AS "Name"
DEST_TYPES.Name AS "Type"
FROM
-- Get the unique ID of the origin item.
((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items
INNER JOIN
(SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types
ON src_items.Type = src_types.UUID)
--Get the UUIDs of related items.
INNER JOIN
dbo.GDB_ITEMRELATIONSHIPS AS relationships
ON src_items.UUID = relationships.OriginID)
-- Resolve the names of the destination items.
INNER JOIN
dbo.GDB_ITEMS AS dest_items
ON relationships.DestID = dest_items.UUID)
-- Get the types as human-readable strings.
INNER JOIN
dbo.GDB_ITEMTYPES AS dest_types
ON dest_items.Type = dest_types.UUID
フィーチャ データセットの場合、これは ArcCatalog 内のフィーチャ データセットを参照する場合と似たリストを返します。リストには、フィーチャクラス、リレーションシップ クラス、およびトポロジ、ネットワーク データセット、パーセル ファブリックなどのコントローラー データセットが含まれます。また、このリストには、トポロジが使用するダーティ エリア フィーチャクラスなど、ArcCatalog に表示されないデータセットが含まれる場合もあります。
これは、フィーチャ データセット内のデータセットや、トポロジ内のフィーチャクラスなどのリレーションシップに対してうまく機能しますが、特定の関連先アイテムに基づきリレーションシップの元のアイテムを検索しようとする場合は、少し変更する必要があります。この種のリレーションシップ操作を使用して、特定のドメインを使用するデータセットや、レプリカ データセットが属するレプリカ、あるいはフィーチャクラスが参加するコントローラー メンバーシップを検索することができます以下は、前のクエリの修正バージョンです。元のアイテムではなく関連先アイテムを使用して、関連アイテムを検索できるように変更されています。
--Queries a dbo-schema geodatabase in SQL Server
DECLARE @DEST nvarchar(max);
DECLARE @DEST_TYPE nvarchar(max);
SET @DEST = 'Angle';
SET @DEST_TYPE = 'Range Domain';
SELECT
SRC_ITEMS.Name AS "Name",
SRC_TYPES.Name AS "Type"
FROM
-- Get the unique ID of the destination item.
((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items
INNER JOIN
(SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types
ON dest_items.Type = dest_types.UUID)
-- Get the UUIDs of related items.
INNER JOIN
dbo.GDB_ITEMRELATIONSHIPS AS relationships
ON dest_items.UUID = relationships.DestID)
-- Resolve the names of the origin items.
INNER JOIN
dbo.GDB_ITEMS AS src_items
ON relationships.OriginID = src_items.UUID)
-- Get the types as human-readable strings.
INNER JOIN
dbo.GDB_ITEMTYPES AS src_types
ON src_items.Type = src_types.UUID
Oracle で使用されるシステム テーブルとビューについては、「ジオデータベース システム テーブルの概要」のセクション「ジオデータベース システム テーブルの XML」をご参照ください。