Explorar tablas del sistema de geodatabase con SQL

Después de comprender las relaciones entre las cuatro tablas del sistema de geodatabase, la mejor forma de poder ver cómo funcionan de forma conjunta es examinarlas mediante SQL. La selección de todas las filas y columnas en la tabla GDB_Items devuelve un conjunto de resultados similar al siguiente (junto con muchos otros campos):

Valores que se devuelven cuando se consulta la tabla GDB_Items

Tenga en cuenta que los valores en la columna Tipo se almacenan como UUID. Como se mencionó en Un recorrido rápido por las tablas del sistema de geodatabase, estos UUID se pueden resolver mediante la tabla GDB_ItemTypes, como se muestra en la siguiente consulta:

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;

Esto devuelve un resultado similar como la ejecución de una declaración SELECT simple en la tabla GDB_Items, pero los UUID en la columna Tipo se reemplazan con cadenas de texto legibles por el ojo humano.

Valores de texto en la columna Tipo

Del mismo modo, la tabla GDB_ItemRelationships también contiene UUID que son valores clave de otras tablas. Cada relación contiene dos de los valores de UUID que se muestran en la tabla GDB_Items anterior: uno para el elemento de destino de la relación y otro para su elemento de origen. Para resolver estas cadenas de texto legibles por el ojo humano, debe unir la tabla GDB_ItemRelationships con la tabla GDB_Items dos veces:

--SQL Server and PostgreSQL query 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;  --Oracle query SELECT relationships.type,    origin_items.name AS "Origin Name", dest_items.name AS "Dest Name" FROM sde.gdb_items origin_items,    sde.gdb_itemrelationships relationships,    sde.gdb_items dest_items WHERE    origin_items.UUID = relationships.originid AND    dest_items.UUID = relationships.destid;

La siguiente ilustración es un ejemplo de un conjunto de resultados que se puede obtener a partir de la consulta anterior:

Valores de texto para los nombres de los elementos de origen y de destino

Si bien esto muestra las relaciones entre los elementos en la geodatabase, también se requiere el tipo de relación. Puede resolver el UUID de tipo al expandir la consulta anterior para incluir una unión con la tabla GDB_ItemRelationshipTypes:

--SQL Server and PostgreSQL query 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;  --Oracle query SELECT reltypes.name AS type,    origin_items.name AS "Origin Name", dest_items.name AS "Dest Name" FROM sde.gdb_items origin_items,    sde.gdb_itemrelationships relationships,    sde.gdb_items dest_items,    sde.gdb_itemrelationshiptypes reltypes WHERE    origin_items.UUID = relationships.originid AND    dest_items.UUID = relationships.destid AND    relationships.type = reltypes.UUID;

Esto devuelve lo siguiente:

Valores de texto en la columna Tipo de la tabla GDB_ItemRelationshipTypes

9/11/2013