SQL を使用したジオデータベース システム テーブルの参照
4 つのジオデータベース システム テーブル間の関係を理解したら、それらのテーブルがどのように連携するかを SQL 使用して確認してみることをお勧めします。GDB_Items テーブルからすべての行と列を選択すると、次のような結果セットが(他の多くのフィールドと共に)返されます。
[Type] 列の値は UUID として格納されていることに注意してください。「ジオデータベース システム テーブルの概要」で説明しているように、これらの UUID は次のクエリのように GDB_ItemTypes テーブルを使用して解決できます。
SELECT gdb_items.UUID, gdb_itemtypes.name AS "Type", gdb_items.name
FROM gdb_items INNER JOIN gdb_itemtypes
ON gdb_items.type = gdb_itemtypes.UUID;
これは、GDB_Items テーブルに単純な SELECT ステートメントを実行したときと似た結果を返しますが、[Type] 列の UUID は判読可能な文字列で置き換えられます。
同様に、GDB_ItemRelationships テーブルにも、他のテーブルのキー値である UUID が含まれています。各リレーションシップには、上の GDB_Items テーブルにある UUID 値が 2 つあります。1 つはリレーションシップの関連先アイテムの UUID で、もう 1 つは元のアイテムの UUID です。これらを判読可能な文字列へと解決するには、GDB_ItemRelationships テーブルを GDB_Items テーブルに 2 回結合する必要があります。
--SQL Server and PostgreSQL query
SELECT relationships.type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,
gdb_itemrelationships AS relationships,
gdb_items AS dest_items
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid;
--Oracle query
SELECT relationships.type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,
sde.gdb_itemrelationships relationships,
sde.gdb_items dest_items
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid;
下の図は、上記のクエリで返される結果セットの例を示しています。
前のクエリによりジオデータベース内のアイテム間のリレーションシップが示されますが、リレーションシップ タイプも必要です。前述のクエリを拡張して、GDB_ItemRelationshipTypes テーブルとの結合を加えることで、[Type] の UUID を解決できます。
--SQL Server and PostgreSQL query
SELECT reltypes.name AS type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,
gdb_itemrelationships AS relationships,
gdb_items AS dest_items,
gdb_itemrelationshiptypes AS reltypes
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid AND
relationships.type = reltypes.UUID;
--Oracle query
SELECT reltypes.name AS type,
origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,
sde.gdb_itemrelationships relationships,
sde.gdb_items dest_items,
sde.gdb_itemrelationshiptypes reltypes
WHERE
origin_items.UUID = relationships.originid AND
dest_items.UUID = relationships.destid AND
relationships.type = reltypes.UUID;
このクエリは、次の結果を返します。