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) :
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 :
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 :
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 :