SQL を使用したジオデータベース システム テーブルの参照

4 つのジオデータベース システム テーブル間の関係を理解したら、それらのテーブルがどのように連携するかを SQL 使用して確認してみることをお勧めします。GDB_Items テーブルからすべての行と列を選択すると、次のような結果セットが(他の多くのフィールドと共に)返されます。

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 は判読可能な文字列で置き換えられます。

[Type] 列のテキスト値

同様に、GDB_ItemRelationships テーブルにも、他のテーブルのキー値である UUID が含まれています。各リレーションシップには、上記の GDB_Items テーブルにある UUID 値が 2 つ含まれます。1 つはリレーションシップの関連先アイテムの UUID で、もう 1 つは関連元のアイテムの UUID です。
これらを判読可能な文字列へと解決するには、GDB_ItemRelationships テーブルを GDB_Items テーブルに 2 回結合する必要があります。

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

下の図は、上記のクエリで返される結果セットの例を示しています。


元のアイテムと関連先アイテムの名前のテキスト値

前のクエリによりジオデータベース内のアイテム間のリレーションシップが示されますが、リレーションシップ タイプも必要です。前述のクエリを拡張して、GDB_ItemRelationshipTypes テーブルとの結合を加えることで、[Type] の UUID を解決できます。


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

このクエリは、次の結果を返します。

GDB_ItemRelationshipTypes テーブルの [Type] 列のテキスト値


3/6/2012