Una geodatabase corporativa está formada por tablas de sistema, procedimientos y funciones que están almacenados en un sistema de administración de bases de datos. Las tablas de sistema que tienen el prefijo GDB_ describen el esquema de geodatabase que especifica las definiciones, reglas y relaciones de dataset. Las tablas del sistema contienen y administran los metadatos requeridos para implementar propiedades de geodatabase, reglas de validación de datos y comportamientos. Las tablas son las siguientes:
- GDB_Items: contiene una lista de todos los elementos que se encuentran dentro de una geodatabase como, por ejemplo, clases de entidad, topologías y dominios.
- GDB_ItemTypes: contiene una lista predefinida de tipos de elementos reconocidos, como Tabla.
- GDB_ItemRelationships: contiene las asociaciones de esquemas entre los elementos, como las clases de entidad que se encuentran dentro de un dataset de entidades.
- GDB_ItemRelationshipTypes: contiene una lista predefinida de tipos de relaciones reconocidos, como DatasetInFeatureDataset.
Las tablas GDB_Items y GDB_ItemRelationships representan el esquema definido por el usuario dentro de una geodatabase en particular. El contenido de las tablas se modifica a medida que se modifica el esquema de la geodatabase. Las tablas GDB_ItemTypes y GDB_ItemRelationshipTypes son estáticas. Los siguientes diagramas ilustran las relaciones entre estas cuatro tablas:
tabla GDB_Items
Una geodatabase es un contenedor de elementos geográficos y no geográficos. Estos elementos incluyen datasets tabulares, como tablas y clases de entidad; contenedores de datasets, como datasets de entidades, topologías y redes geométricas; datasets que controlan el comportamiento más avanzado de la geodatabase; y otros elementos como dominios, cajas de herramientas y extensiones del espacio de trabajo. Todos estos elementos se almacenan dentro de la geodatabase en la tabla GDB_Items, donde cada elemento se almacena como una fila única.
Un elemento tiene los siguientes atributos:
- UUID: un identificador único del elemento.
- Nombre: el nombre del elemento.
Tenga en cuenta que no se garantiza que el nombre de un elemento sea único; por ejemplo, una clase de relación y una clase de entidad pueden tener el mismo nombre. Sin embargo, no se recomienda darles a los elementos el mismo nombre ya que los nombres deben ser lo suficientemente descriptivos como para diferenciar qué contiene el elemento.
- Tipo: un UUID que representa el tipo de elemento en el registro; esto se corresponde con el identificador único.
- Definición: un documento XML que define las propiedades de un elemento; estas propiedades y el esquema XML varían según el tipo de elemento. Por ejemplo, la definición de una clase de objeto contiene información, como los subtipos, mientras que la definición de un dominio de valor codificado contiene pares de valores/códigos, y la definición de una clase de relación contiene (entre otras cosas) las reglas de relaciones.
- Documentación: un documento XML que almacena los metadatos de un elemento.
- Propiedades: valor entero que se puede utilizar con máscaras de bits para recuperar varias propiedades booleanas del elemento. Actualmente, esto solo se usa para indicar si un elemento está visible en ArcGIS Desktop.
- Forma: la extensión del dataset como un polígono, si se aplica (el tipo de datos depende del DBMS subyacente).
Estos siete atributos son a los que posiblemente acceda con SQL.
Los siguientes atributos almacenan información de la definición de un elemento (como un tipo de geometría de la clase de entidad), que se duplican fuera de la definición de XML para permitir una navegación más eficiente de la geodatabase. Los ejemplos de esto son las propiedades de Subtipo de dataset e Info de dataset, cuyos códigos dependen del tipo de elemento. Estos atributos se describen de la siguiente manera:
- Nombre físico: el nombre completamente calificado del elemento.
- DatasetSubtype1: para clases de entidad y catálogo de ráster, DatasetSubtype1 almacena el tipo de entidad de la tabla. Para topologías, se almacena el Id. de topología.
- DatasetSubtype2: para clases de entidad y catálogo de ráster, DatasetSubtype2 almacena el tipo de geometría. Para las clases de relación, almacena un valor que indica si la relación es atribuida o no.
- DatasetInfo1: almacena el nombre del campo de forma para los elementos de la clase de entidad.
- DatasetInfo2: almacena información para las clases de entidad que participan en topologías.
- Ruta: la ruta única relativa al elemento.
- URL: la dirección URL asociada para el elemento; se usa con servicios de catálogo.
- Valores predeterminados: metadatos del elemento; las geodatabases no los usan directamente pero sí otros clientes como servicios de metadatos ArcIMS.
- ItemInfo: información almacenada para el elemento, como la simbología, que es independiente del dataset subyacente.
tabla GDB_ItemTypes
La tabla GDB_ItemTypes contiene el grupo predefinido de tipos de elementos reconocidos en la geodatabase. Los tipos de elementos se usan para normalizar la tabla GDB_Items (el tipo de un elemento en la tabla GDB_Items se representa como un UUID), para proporcionar una mejor compatibilidad con las futuras mejoras de funcionalidad de geodatabases y definir un tipo de jerarquía. Todos los tipos principales son abstractos; por consiguiente, los elementos principales no se encontrarán realmente en la tabla GDB_Items.
El contenido de la tabla GDB_ItemTypes es estático; no se modifica durante la creación o eliminación de elementos.
Un tipo de elemento tiene los siguientes atributos:
- UUID: un identificador único de un tipo de elemento y la clave externa para la columna del tipo de tabla GDB_Item.
- ParentTypeID: el tipo principal del tipo de elemento
En el caso del tipo de elemento abstracto (que no tiene principal), es un UUID nulo.
- Nombre: el nombre de un tipo de elemento como Clase de entidad o Dominio de rango.
- ObjectID: el identificador único para la tabla GDB_ItemTypes.
tabla GDB_ItemRelationships
Casi todos los elementos de geodatabase tiene relaciones con al menos un elemento de otra geodatabase. Por ejemplo, una tabla independiente se relaciona con la carpeta raíz de una geodatabase, un dominio se relaciona con las tablas o clases de entidad que se basan en esta para la validación y las clases de entidad se relacionan con la topología en la cual participan. La tabla GDB_ItemRelationships se utiliza para rastrear estas relaciones.
Las relaciones de elementos tienen los siguientes atributos:
- UUID: un identificador único de una relación de elemento.
- Tipo: un UUID que representa el tipo de relación; esto se corresponde con el identificador único del tipo de relación del elemento
- OriginID: el identificador único del elemento de origen de la relación.
- DestinationID: el identificador único del elemento del destino de la relación.
- Atributos: un documento XML que contiene información detallada sobre la relación del elemento.
Muchos tipos de relaciones no incluyen atributos; solo se usan en algunas relaciones entre datasets de controlador y sus datasets controlados.
- ObjectID: identificador único.
- Propiedades: valor entero que se puede utilizar con máscaras de bits para recuperar varias propiedades booleanas del elemento. Actualmente, esto solo se usa para indicar si los elementos que participan en la relación están visibles en ArcGIS Desktop.
Probablemente accedería solo a los primeros cinco atributos con SQL.
tabla GDB_ItemRelationshipTypes
En la misma forma que un grupo estático de tipos de elementos se usa para clasificar elementos, un grupo estático de tipos de relación de elementos se usa para clasificar las relaciones de los elementos. Por ejemplo, DatasetInFeatureDataset (que indica que existe una clase de entidad, una clase de relación o un dataset de controlador dentro de un dataset de entidades) y DomainInDataset (que indica que un dataset usa un dominio para la validación a nivel de clase o a nivel de subtipo) son dos tipos de relaciones de elementos. A diferencia de los tipos de elementos, los tipos de relaciones de elementos no tienen un concepto de jerarquía con los tipos principales y secundarios.
Los tipos de relaciones de elementos tienen los siguientes atributos:
- UUID: un identificador único de un tipo de relación de elemento y la clave principal para la columna del tipo de tabla de relación de elemento.
- Nombre: el nombre del tipo de relación de elemento, como DatasetInFolder.
- Etiqueta origen-destino: una descripción de la relación desde el contexto del elemento de origen.
- Etiqueta destino-origen: una descripción de la relación desde el contexto del elemento de destino.
- Id. de tipo de elemento de origen: el UUID del tipo de elemento que puede actuar como elemento de origen en las relaciones de elemento de este tipo.
- Id. de tipo de elemento de destino: el UUID del tipo de elemento que puede actuar como elemento de destino en relaciones de elemento de este tipo
- Es contención: indica si el elemento de destino puede existir, incluso si se elimina el elemento de origen.
XML en las tablas del sistema de geodatabase
Como se mencionó en las secciones anteriores, algunos campos usan un tipo de datos XML. En las geodatabases en IBM DB2, Microsoft SQL Server y PostgreSQL, estas columnas usan el XML nativo del sistema de administración de bases de datos y, por consiguiente, pueden consultarse mediante expresiones de XPath con SQL.
En geodatabases en Oracle e Informix, las columnas XML usan XML de ArcSDE, que almacena información como BLOB en una serie de tablas separadas. Por ello, no se puede acceder a estas directamente con SQL.
Para poder ver el contenido de las columnas XML en las tablas del sistema en geodatabases en Oracle, existen dos vistas del sistema que almacenan el contenido a partir de las columnas XML de la tabla del sistema de geodatabase en un tipo de datos CLOB. GDB_Items_vw muestra el contenido de las columnas Definición, Documentación e ItemInfo de las columnas CLOB en la tabla GDB_Items. GDB_ItemRelationships_vw muestra el contenido de la columna Atributos de la tabla GDB_ItemRelationships en una columna CLOB. El contenido de las columnas CLOB puede leerse como texto.
Cuando se consultan estas vistas, se extrae la cadena de texto de la columna CLOB, se la convierte en un tipo XML y se ejecuta una consulta en XPath acerca de ella. Tenga en cuenta que si intenta crear un tipo XML para una columna que contiene una cadena de caracteres en blanco, aparecerá el mensaje El análisis de XML falló debido a que no es compatible con Oracle.
Para consultar el contenido de las columnas CLOB, debe configurar el servidor Oracle para que acepte las conexiones SQL. Consulte Configurar Oracle extproc para acceder a la geodatabase con SQL para obtener más información.
Cómo están relacionadas las tablas GDB_
La mejor forma de ver cómo funcionan conjuntamente las tablas del sistema que realizan un seguimiento de la funcionalidad de la geodatabase 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):
Tenga en cuenta que los valores en la columna Tipo se almacenan como UUID. Estos UUID se pueden resolver utilizando la tabla GDB_ItemTypes, como se muestra en la consulta siguiente:
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 caracteres en lenguaje natural.
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 observan en la tabla GDB_Items anterior: uno para el elemento de destino de la relación y otro para el elemento de origen. Para resolver estas cadenas de caracteres en lenguaje natural, debe unir la tabla GDB_ItemRelationships con la tabla GDB_Items dos veces, como sigue:
--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:
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 expandiendo la consulta anterior para incluir una unión con la tabla GDB_ItemRelationshipTypes, como sigue:
--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:
Consultas comunes de la tabla GDB_
Consulte los temas siguientes para obtener información sobre tipos comunes de consultas SQL realizados en tablas GDB_: