Parcourir les tables système d'une géodatabase avec SQL

Après avoir étudié les relations entre les quatre tables système de la géodatabase, la meilleure façon de comprendre leur interaction consiste à les examiner à l'aide de SQL. La sélection de toutes les lignes et colonnes de la table GDB_Items renvoie un jeu de résultats semblable à celui-ci (en même temps que beaucoup d'autres champs) :

Valeurs renvoyées lors de l'interrogation de la table GDB_Items

Remarquez que les valeurs dans la colonne Type sont stockées en tant qu'UUID. Comme mentionné dans la rubrique Présentation rapide des tables système de géodatabase, ces UUID peuvent être résolus à l'aide de la table GDB_ItemTypes, comme indiqué dans la requête suivante :

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

La requête renvoie un résultat semblable à celui d'une simple instruction SELECT exécutée dans la table GDB_Items, mais l'UUID de la colonne Type est remplacé par des chaînes intelligibles :

Valeurs textuelles dans la colonne Type

De la même façon, la table GDB_ItemRelationships contient également des UUID qui sont des valeurs clés d'autres tables. Chaque relation contient deux des valeurs UUID présentes dans la table GDB_Items ci-dessus : une pour l'élément de destination de la relation et une autre pour son élément d'origine. Pour les transformer en chaînes intelligibles, vous devez joindre, à deux reprises, la table GDB_ItemRelationships à la table GDB_Items :

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

L'illustration suivante constitue un exemple de jeu de résultats qui peut être renvoyé de la requête précédente :

Valeurs textuelles pour les noms d'élément d'origine et de destination

Bien que ces résultats affichent les relations entre des éléments dans la géodatabase, le type de relation est également nécessaire. Vous pouvez résoudre l'UUID Type en développant la requête précédente, afin d'inclure une jointure avec la table GDB_ItemRelationshipTypes :

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

Celle-ci renvoie les éléments suivants :

Valeurs textuelles dans la colonne Type de la table GDB_ItemRelationshipTypes


7/10/2012