Consultas de relación

Un objetivo común al trabajar con las tablas del sistema de geodatabase es buscar todos los elementos relacionados con un elemento específico. Algunos ejemplos de esto incluyen buscar el contenido de un dataset de entidades, buscar qué clases de entidad participan en una topología o red geométrica, y buscar qué datasets se incluyen en una réplica. Dado que todos los elementos y las relaciones se almacenan en las mismas tablas, se puede utilizar una sola consulta para todos estos casos (con literales de cadenas de texto que determinan el elemento específico que se utilizará). Los siguientes pasos se pueden utilizar para realizar esta consulta:

La siguiente es una consulta SQL que incorpora todos estos pasos. Para cambiar el elemento específico que se está consultando, modifique las dos variables de cadena de texto que se declaran al principio.

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

En el caso de un dataset de entidades, se obtiene una lista similar a lo que vería al buscar un dataset de entidades en ArcCatalog; podría incluir clases de entidad, clases de relación y datasets controladores como topologías, datasets de red y estructuras de parcelas. Además, puede contener algunos datasets que no aparecen en ArcCatalog, como las clases de entidad del área sin validar que utilizan las topologías.

Si bien esto funciona correctamente para las relaciones del tipo dataset en dataset de entidades y clase de entidad en topología, se requiere una pequeña modificación cuando se intenta buscar los elementos de origen de las relaciones basándose en un elemento de destino específico. Esta clase de navegación de relaciones se puede utilizar para buscar qué datasets utilizan un dominio específico, a qué réplica pertenece un dataset de réplica o en qué pertenencias a controlador participa una clase de entidad. La siguiente es una versión modificada de la consulta anterior, que se cambió para que el elemento de destino, en lugar del elemento de origen, pueda encontrar los elementos relacionados:

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

Para obtener más información sobre las tablas del sistema y las vistas utilizadas en Oracle, visite la sección "XML en tablas del sistema de geodatabase" de Un recorrido rápido por las tablas del sistema de geodatabase.


7/11/2012