Requêtes de relations

Un des objectifs communs à l'utilisation des tables système de la géodatabase est de trouver tous les éléments associés à un élément en particulier. Vous pouvez par exemple trouver le contenu d'un jeu de données d'entité, trouver les classes d'entités qui font partie d'une topologie ou d'un réseau géométrique et trouver quels jeux de données sont inclus dans un réplica. Comme tous les éléments et relations sont stockés dans les mêmes tables, vous pouvez utiliser une seule requête pour tous ces cas (avec un littéral de chaîne qui détermine l'élément précis à utiliser). Pour effectuer cette requête, procédez comme suit :

Vous trouverez ci-dessous une requête SQL intégrant toutes ces étapes. Pour modifier l'élément spécifique sur lequel porte la requête, changez les deux variables de chaîne déclarées au début.

--Queries a dbo-schema geodatabase in SQL Server

DECLARE @ORIGIN nvarchar(max);
DECLARE @ORIGIN_TYPE nvarchar(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é, ceci renvoie une liste qui ressemble à ce que vous voyez lorsque vous parcourez un jeu de données d'entité dans ArcCatalog. Elle peut contenir des classes d'entités, des classes de relations, ainsi que des jeux de données de contrôleur, tels que des topologies, des jeux de données réseau et des ateliers parcellaires. Elle peut également comporter des jeux de données qui n'apparaissent pas dans ArcCatalog, tels que les classes d'entités des zones à valider utilisées par les topologies.

Même si cela fonctionne bien pour les relations (un jeu de données dans un jeu de données d'entité et classe d'entités dans une topologie), une légère modification est nécessaire si vous essayez de trouver les éléments d'origine des relations en fonction d'un élément de destination précis. Ce type de navigation dans les relations peut être utile pour déterminer quels jeux de données utilisent un domaine spécifique, pour savoir à quel réplica un jeu de données de réplica appartient ou pour connaître les appartenances à un contrôleur auxquelles une classe d'entités participe. Vous trouverez ci-dessous une version modifiée de la requête précédente, modifiée afin que les éléments associés puissent être trouvés par élément de destination et non par élément d'origine :

--Queries a dbo-schema geodatabase in SQL Server

DECLARE @DEST nvarchar(max);
DECLARE @DEST_TYPE nvarchar(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 plus d'informations sur les tables système et les affichages utilisés dans Oracle, reportez-vous à la section « XML dans les tables système de la géodatabase » du document Présentation rapide des tables système de géodatabase.

5/10/2014