Ejemplo: Devolver una lista de clases de relación

Todas las definiciones de elementos se guardan en la columna de definición de la tabla GDB_Items. Para identificar los elementos que son clases de relación, debe restringir la búsqueda e incluir solo los elementos que son de tipo clase de relación. La información que identifica un elemento como clase de relación está guardada en la columna de nombre de la tabla GDB_ItemTypes. Puede unir las dos tablas usando la columna tipo de la tabla GDB_Items (o la vista GDB_Items_vw en Oracle) y la columna UUID de la tabla GDB_ItemTypes, y a continuación consultar las clases de relación en la tabla GDB_ItemTypes.

Los siguientes ejemplos consultan el nombre de la clase de relación y, si corresponde, el dataset de entidades en el que está y los nombres de las dos tablas o clases de entidad que forman parte de la clase de relación. Es posible que al consultar la geodatabase, también se devuelvan anotaciones vinculadas a entidades. Esto se debe a que la anotación vinculada a entidad es un tipo de clase de relación.

--Queries a geodatabase in PostgreSQL --Returns a list of relationship classes and their member tables  SELECT  (xpath('//CatalogPath/text()', definition))::text AS "Relationship class and dataset",  (xpath('//OriginClassNames/text()', definition))::text AS "Origin class",  (xpath('//DestinationClassNames/text()', definition))::text AS "Destination class" FROM   sde.gdb_items items INNER JOIN sde.gdb_itemtypes itemtypes  ON items.type = itemtypes.uuid WHERE   itemtypes.name = 'Relationship class';
--Queries a dbo-schema geodatabase in SQL Server --Returns a list of relationship classes and their member tables  SELECT 	ITEMS.Definition.value('(/DERelationshipClassInfo/CatalogPath)[1]', 'nvarchar(max)') AS "Relationship Class and dataset",  ITEMS.Definition.value('(/DERelationshipClassInfo/OriginClassNames/Name)[1]', 'nvarchar(max)') AS "Origin Class",  ITEMS.Definition.value('(/DERelationshipClassInfo/DestinationClassNames/Name)[1]', 'nvarchar(max)') AS "Destination Class"  FROM   dbo.GDB_ITEMS AS ITEMS INNER JOIN dbo.GDB_ITEMTYPES AS ITEMTYPES  ON ITEMS.Type = ITEMTYPES.UUID WHERE   ITEMTYPES.Name = 'Relationship Class';

--Queries a geodatabase in Oracle --Returns a list of relationship classes and their member tables  SELECT  EXTRACTVALUE(XMLType(Definition), '/DERelationshipClassInfo/CatalogPath') AS "Relationship Class and dataset",  EXTRACTVALUE(XMLType(Definition), '/DERelationshipClassInfo/OriginClassNames/Name') AS "Origin Class",  EXTRACTVALUE(XMLType(Definition), '/DERelationshipClassInfo/DestinationClassNames/Name') AS "Destination Class"  FROM   sde.GDB_ITEMS_VW ITEMS INNER JOIN sde.GDB_ITEMTYPES ITEMTYPES  ON ITEMS.Type = ITEMTYPES.UUID WHERE   ITEMTYPES.Name = 'Relationship Class';

Estas consultas devuelven listas de la clase de relación y las clases de origen y destino que forman parte de la clase de relación.

 Relationship class and dataset                  Origin class                 Destination class -----------------------------------------       --------------------         ------------------------- mygdb.myuser.speciesrel		                        mygdb.myuser.habitat         mygdb.myuser.sptable mygdb.uruser.water\\mygdb.uruser.mainanno		  mygdb.uruser.mains           mygdb.uruser.mdiam mygdb.hisuser.roads\\rowgrantrel		          mygdb.hisuser.row            mygdb.hisuser.rowgrantors

Los resultados indican que la geodatabase contiene lo siguiente:


3/6/2012