Requêtes de relations
Lorsqu'on travaille avec des tables système dans une géodatabase, il est courant de chercher à identifier tous les éléments liés à un élément spécifique. On peut, par exemple, rechercher le contenu d'un jeu de données d'entité, quelles classes d'entités participent à une topologie ou à un réseau géométrique ou quels jeux de données sont inclus dans un réplica. Puisque tous les éléments et relations sont stockés dans les mêmes tables, une requête unique peut être utilisée pour tous ces cas (avec des littéraux de chaîne qui déterminent quel élément spécifique sera utilisé). Les étapes suivantes permettent d'effectuer cette requête :
- Recherchez l'UUID de l'élément d'origine (tel qu'un jeu de données d'entité).
- Recherchez toutes les relations avec l'UUID d'origine.
- Pour chaque UUID de destination, trouvez l'élément correspondant et résolvez son type à l'aide de la table GDB_ItemTypes.
Voici une requête SQL qui comprend toutes ces étapes. Pour modifier l'élément spécifique qui est interrogé, modifiez les deux variables de chaîne déclarées au début.
--Queries a dbo-schema geodatabase in SQL Server DECLARE @ORIGIN narchar(max); DECLARE @ORIGIN_TYPE narchar(max); SET @ORIGIN = 'Montgomery.Sasha.Landbase'; SET @ORIGIN_TYPE = 'Feature Dataset'; SELECT DEST_ITEMS.Name AS "Name" DEST_TYPES.Name AS "Type" FROM -- Get the unique ID of the origin item. ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @ORIGIN) AS src_items INNER JOIN (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @ORIGIN_TYPE) AS src_types ON src_items.Type = src_types.UUID) --Get the UUIDs of related items. INNER JOIN dbo.GDB_ITEMRELATIONSHIPS AS relationships ON src_items.UUID = relationships.OriginID) -- Resolve the names of the destination items. INNER JOIN dbo.GDB_ITEMS AS dest_items ON relationships.DestID = dest_items.UUID) -- Get the types as human-readable strings. INNER JOIN dbo.GDB_ITEMTYPES AS dest_types ON dest_items.Type = dest_types.UUID
Dans le cas d'un jeu de données d'entité, elle renvoie une liste semblable à celle d'un jeu de données d'entité dans ArcCatalog ; elle peut contenir des classes d'entités, des classes de relations et des jeux de données de contrôleur, tels que les topologies, les jeux de données réseau et les ateliers parcellaires. Elle peut également contenir certains jeux de données qui n'apparaissent pas dans ArcCatalog, comme les classes d'entités de zone à valider utilisés par les topologies.
Très efficace pour les relations de type jeu de données dans un jeu de données d'entité et classe d'entités dans une topologie, une petite modification est néanmoins nécessaire pour rechercher les éléments d'origine des relations fondées sur un élément de destination spécifique. Ce genre de navigation parmi les relations permet de rechercher les jeux de données qui utilisent un domaine spécifique, le réplica auquel un jeu de données de réplicas appartient ou les appartenances contrôleur auxquelles une classe d'entités est associée. Voici une version modifiée de la requête précédente, afin que les éléments liés soient recherchés par élément de destination plutôt qu'élément d'origine :
--Queries a dbo-schema geodatabase in SQL Server DECLARE @DEST narchar(max); DECLARE @DEST_TYPE narchar(max); SET @DEST = 'Angle'; SET @DEST_TYPE = 'Range Domain'; SELECT SRC_ITEMS.Name AS "Name", SRC_TYPES.Name AS "Type" FROM -- Get the unique ID of the destination item. ((((SELECT UUID, Type FROM dbo.GDB_ITEMS WHERE Name = @DEST) AS dest_items INNER JOIN (SELECT UUID FROM dbo.GDB_ITEMTYPES WHERE Name = @DEST_TYPE) AS dest_types ON dest_items.Type = dest_types.UUID) -- Get the UUIDs of related items. INNER JOIN dbo.GDB_ITEMRELATIONSHIPS AS relationships ON dest_items.UUID = relationships.DestID) -- Resolve the names of the origin items. INNER JOIN dbo.GDB_ITEMS AS src_items ON relationships.OriginID = src_items.UUID) -- Get the types as human-readable strings. INNER JOIN dbo.GDB_ITEMTYPES AS src_types ON src_items.Type = src_types.UUID
Pour en savoir plus sur les tables système et les vues utilisées dans Oracle, consultez la section "XML dans les tables système de la géodatabase" de la rubrique Présentation rapide des tables système de la géodatabase.