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 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 Table
- 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 se rellenan al crear la geodatabase y sus valores son estáticos dentro de una misma versión de software. Los siguientes diagramas ilustran las relaciones entre estas cuatro tablas:
tabla GDB_Items
Una geodatabase es un contenedor de elementos espaciales y no espaciales. Estos elementos incluyen datasets tabulares, como tablas y clases de entidad; contenedores de datasets, como datasets de entidades y topologías; 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.
Los siete atributos siguientes de un elemento son aquellos a los que accederá más probablemente con SQL:
- UUID: un identificador único del elemento
- Name: 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.
- Type: un UUID que representa el tipo de elemento del registro; corresponde al identificador único.
- Definition: 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 valor y código, y la definición de una clase de relación contiene (entre otras cosas) las reglas de relaciones.
- Documentation: un documento XML que almacena los metadatos de un elemento
- Properties: un 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.
- Shape: la extensión del dataset como un polígono, si se aplica (el tipo de datos depende del sistema de administración de bases de datos subyacente).
Los atributos de la siguiente lista 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. Los códigos de estos atributos dependen del tipo de elemento. Estos atributos se describen de la siguiente manera:
- Physical Name: el nombre totalmente calificado del elemento
- DatasetSubtype1: en el caso de las clases de entidad y los catálogos de ráster, DatasetSubtype1 almacena el tipo de entidades de la tabla. Para topologías, se almacena el Id. de topología.
- DatasetSubtype2: en el caso de las clases de entidad y los catálogos 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
- Path: la ruta única relativa al elemento
- URL: la dirección URL asociada para el elemento; se usa con servicios de catálogo
- Defaults: metadatos del elemento; las geodatabases no los usan directamente pero sí otros clientes
- 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 un 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 almacenan directamente en la tabla GDB_Items.
El contenido de la tabla GDB_ItemTypes 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.
- Name: el nombre de un tipo de elemento como Clase de entidad o Dominio de rango
- ObjectID: el identificador único de 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 la 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
- Type: 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 de destino de la relación
- Attributes: 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 relaciones entre datasets de controlador y sus datasets controlados.
- ObjectID: identificador único
- Properties: un 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 el cliente de ArcGIS.
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
- Name: el nombre del tipo de relación de elemento, por ejemplo, DatasetInFolder
- Forward Label: una descripción de la relación desde el contexto del elemento de origen
- Backward Label: una descripción de la relación desde el contexto del elemento de destino
- Origin Item Type ID: el UUID del tipo de elemento que puede actuar como elemento de origen en relaciones de elemento de este tipo
- Destination Item Type ID: el UUID del tipo de elemento que puede actuar como elemento de destino en relaciones de elemento de este tipo
- Is Containment: 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 de 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 de Oracle y IBM Informix, las columnas XML usan XML de ArcSDE XML, 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 de 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 Definition, Documentation e ItemInfo de los CLOB de la tabla GDB_Items. GDB_ItemRelationships_vw muestra el contenido de la columna Attributes de la tabla GDB_ItemRelationships en un CLOB. Los CLOB se pueden leer como texto.
Cuando se consultan estas vistas, se extrae la cadena de texto del CLOB, se la convierte en un tipo XML y se ejecuta una consulta en XPath acerca de él. 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 los CLOB, debe configurar el servidor Oracle para que acepte las conexiones SQL. Para obtener más información, consulte Configurar el extproc para acceder a ST_Geometry en Oracle.
Cómo están relacionadas las tablas GDB_
La mejor forma de ver cómo funcionan conjuntamente las tablas del sistema que realizan un trazado de la funcionalidad de la geodatabase es examinarlas mediante SQL. Seleccione todas las filas y columnas de la tabla GDB_Items para ver su contenido.
Los valores de la columna Type se almacenan en forma de UUID, que están relacionados con la columna UUID de la tabla GDB_ItemTypes. Por tanto, puede devolver el tipo de elemento de cada elemento mediante una consulta SQL similar a la 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;
Con ello se devuelven los valores de Type para cada elemento, como se muestra en esta tabla:
UUID | Tipo | Nombre |
---|---|---|
DF7A67CF-D8B2-461C-A4BF-74AF52AF2BD3 | Carpeta | |
5E53E5C2-874E-4538-A6AB-1F0BBCABA885 | Espacio de trabajo | Espacio de trabajo |
2AC65400-919D-4241-A1A5-83C219A8ACD0 | Dominio de valor codificado | Material |
897D8FA2-BE31-4A5D-94A5-B93A32BF2146 | Dominio de valor codificado | DitDiam |
B75E3FDF-F864-4FA1-A31A-A56716BBDEA7 | Rango de dominio | RotAngle |
Del mismo modo, la tabla GDB_ItemRelationships 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. Para ver el tipo de relación, incluya una unión con la tabla GDB_ItemRelationshipTypes, como se muestra en los siguientes ejemplos de SQL:
--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;
Se trata de un ejemplo de los valores que podría devolver la consulta anterior:
Tipo | Nombre de origen | Nombre de destino |
---|---|---|
DatasetInFeatureDataset | County.PW.Cadastre | County.PW.PrivRdName |
DatasetInFeatureDataset | County.PW.Cadastre | County.PW.TaxParcelNo |
DomainInDataset | County.PW.PIN | PINB |
FeatureClassInTopology | County.PW.Cadastre_Topology | County.PW.TaxBlocks |
DatasetsRelatedThrough | County.PW.PIN_Condo | County.PW.PIN_Condo2Parcel |
Consultas comunes de la tabla GDB_
Consulte los temas siguientes para obtener información sobre tipos comunes de consultas SQL realizados en tablas GDB_: