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

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

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.

5/10/2014