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 回結合する必要があります。
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
このクエリは、次の結果を返します。