La estructura interna de la geodatabase se representa como una serie de tablas simples llamadas tablas del sistema de geodatabase (las tablas con el prefijo GDB_), las cuales registran el contenido de cada geodatabase. Describen fundamentalmente el esquema de geodatabase que especifica todas las definiciones, reglas y relaciones de dataset. Las tablas del sistema contienen y administran todos los metadatos requeridos para implementar propiedades de geodatabase, reglas de validación de datos y comportamientos.
La estructura interna de estas tablas se vuelven a estructurar a partir de ArcGIS versión 10. La información relacionada con el esquema en la geodatabase, la cual antes de ArcGIS 10 se almacenaba en más de 35 tablas del sistema de geodatabase, se consolidó en cuatro tablas principales:
- GDB_Items: contiene una lista de todos los elementos que se encuentran dentro de una geodatabase, como las 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:
La 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. A partir de ArcGIS 10, 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 for 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.
- 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 clases de relación, almacena la cardinalidad de la clase de relación. 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 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.
La 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.
La 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 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 for Desktop.
Probablemente accedería sólo a los primeros cinco atributos con SQL.
La 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 origen en las 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 definiciones de atributos para las tablas del sistema de geodatabase, algunos de los campos usan un tipo de datos XML. En las geodatabases de ArcSDE 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 desea crear un tipo XML para una columna que incluye una cadena de texto en blanco, aparecerá el mensaje "El análisis de sintaxis 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.