Une géodatabase d'entreprise est composée de tables système, de procédures et de fonctions stockées dans un système de gestion de base de données. Les tables système dont le nom est précédé de GDB_ décrivent la structure de la géodatabase qui spécifie des règles, des relations et des définitions de jeu de données. Elles contiennent et gèrent les métadonnées requises pour la mise en œuvre des propriétés de la géodatabase, des règles de validation de données et des comportements. Il s'agit des tables suivantes :
- GDB_Items : renferme la liste de tous les éléments contenus dans une géodatabase, tels que les classes d’entités, les topologies et les domaines.
- GDB_ItemTypes : contient une liste prédéfinie des types d'éléments reconnus, tels que Table
- GDB_ItemRelationships : contient les associations de structures entre les éléments et indique par exemple les classes d'entités contenues dans un jeu de données d'entités.
- GDB_ItemRelationshipTypes : contient une liste prédéfinie des types de relations reconnus, tels que DatasetInFeatureDataset.
Les tables GDB_Items et GDB_ItemRelationships représentent la structure définie par l'utilisateur dans une géodatabase particulière. Le contenu des tables est modifié lorsque la structure de la géodatabase est modifiée. Les tables GDB_ItemTypes et GDB_ItemRelationshipTypes sont renseignées lorsque vous créez la géodatabase et que les valeurs sont statiques dans une version logicielle. Le diagramme suivant illustre les relations entre ces quatre tables :
GDB_Items, table
Une géodatabase est un container d’éléments géographiques et non géographiques. Parmi ces éléments figurent des jeux de données tabulaires, tels que les classes d’entités et les tables, des containers de jeux de données, tels que les jeux de classes d’entités et les topologies, des jeux de données qui contrôlent le comportement des géodatabases plus avancées, et d’autres éléments tels que les domaines, les boîtes à outils et les extensions d’espace de travail. Tous ces éléments sont stockés dans la table GDB_Items de la géodatabase, où chaque élément occupe une seule ligne.
Les sept attributs suivants sont ceux auxquels vous pouvez être le plus souvent amené à accéder avec SQL :
- UUID : identifiant unique de l'élément.
- Name : nom de l'élément.
Veuillez noter que le nom d'un élément n'est pas forcément unique. Par exemple, une classe de relations et une classe d'entités peuvent porter le même nom. Toutefois, il n'est pas recommandé de donner le même nom aux éléments, car les noms des attributs doivent être assez descriptifs pour indiquer ce que contient l'élément.
- Type : UUID représentant le type d'élément dans l'enregistrement, ce qui correspond à l'identifiant unique.
- Definition : document XML définissant les propriétés d'un élément. Ces propriétés et le schéma XML varient selon le type d'élément. Par exemple, la définition d'une classe d'objets contient des informations telles que les sous-types, alors que la définition d'un domaine de valeurs précodées contient des paires de valeurs et de codes et la définition d'une classe de relations contient (entre autres) des règles de relations.
- Documentation : document XML stockant les métadonnées de l'élément.
- Properties : valeur d'entier pouvant être utilisée avec des masques binaires pour extraire plusieurs propriétés booléennes de l'élément. Actuellement, cet attribut n'est utilisé que pour indiquer si un élément est visible dans ArcGIS Desktop.
- Shape : étendue du jeu de données sous forme de polygone, le cas échéant (le type de données dépend du système de gestion de bases de données sous-jacent).
Les attributs de la liste suivante stockent des informations provenant de la définition d’un élément (par exemple le type de géométrie d’une classe d'entités), qui sont dupliquées en dehors de la définition XML pour permettre de parcourir plus efficacement la géodatabase. Les propriétés Dataset Subtype (Sous-type du jeu de données) et Dataset Info (Infos du jeu de données) en sont des exemples. Les codes de ces attributs dépendent du type d’élément. Ces attributs sont décrits ci-dessous :
- Physical Name : nom complet de l'élément
- DatasetSubtype1 : pour les classes d'entités et les catalogues d'images, DatasetSubtype1 stocke le type d'entité de la table. Pour les topologies, l'identifiant de topologie est stocké.
- DatasetSubtype2 : pour les classes d'entités et les catalogues d'images, DatasetSubtype2 stocke le type de géométrie. Pour les classes de relations, il stocke une valeur qui indique si la relation est attribuée ou non.
- DatasetInfo1 : stocke le nom du champ Shape pour les éléments de la classe d'entités.
- DatasetInfo2 : stocke les informations des classes d'entités qui participent aux topologies
- Path : chemin relatif unique de l'élément
- URL : URL associée pour l'élément ; utilisé avec les services de catalogue
- Defaults : métadonnées d’élément. Attribut non utilisé directement par les géodatabases, mais utilisé par d’autres clients
- ItemInfo : informations de stockage pour l'élément, telles que la symbologie, qui sont indépendantes du jeu de données sous-jacent
GDB_ItemTypes, table
La table GDB_ItemTypes contient un ensemble prédéfini de types d’éléments reconnus dans la géodatabase. Les types d'éléments permettent de normaliser la table GDB_Items (le type d'un élément dans la table GDB_Items est représenté sous forme d'UUID), de mieux prendre en charge les futures améliorations des fonctionnalités de la géodatabase et de définir une hiérarchie de type. Tous les types parents étant abstraits, les éléments parents ne sont pas stockés directement dans la table GDB_Items.
Le contenu de la table GDB_ItemTypes n’est pas modifié lorsque des éléments sont créés ou supprimés.
Un type d'élément possède les attributs suivants :
- UUID : identifiant unique d'un type d'élément et clé étrangère de la colonne de type de la table GDB_Items
- ParentTypeID : type parent du type d'élément
Dans le cas du type d'élément abstrait (qui n'a aucun parent), il s'agit d'un UUID nul.
- Name : nom d'un type d'élément, tel que Classe d'entités ou Domaine par plage
- ObjectID : identifiant unique de la table GDB_ItemTypes.
GDB_ItemRelationships, table
Presque tous les éléments d'une géodatabase ont des relations avec au moins un autre élément de géodatabase. Par exemple, une table autonome est associée au dossier racine de la géodatabase, un domaine est associé aux classes d’entités ou tables qui reposent sur lui pour la validation, et les classes d’entités sont associées à la topologie à laquelle elles participent. La table GDB_ItemRelationships permet de suivre ces relations.
Les relations des éléments ont les attributs suivants :
- UUID : identifiant unique de la relation d'un élément
- Type : UUID représentant le type de relation, ce qui correspond à l'identifiant unique du type de relation des éléments
- OriginID : identifiant unique de l'élément d'origine de la relation
- DestinationID : identifiant unique de l'élément de destination de la relation
- Attributes : document XML contenant des informations détaillées sur la relation des éléments
Beaucoup de types de relation n’incluent pas d’attributs ; ils sont utilisés uniquement dans les relations entre les jeux de données du contrôleur et leurs jeux de données contrôlés.
- ObjectID : identifiant unique
- Properties : valeur d'entier pouvant être utilisée avec des masques binaires pour extraire plusieurs propriétés booléennes de l'élément. Cet attribut n'est actuellement utilisé que pour indiquer si les éléments qui participent à la relation sont visibles dans un client ArcGIS.
Vous n'accéderez probablement qu'aux cinq premiers attributs avec SQL.
GDB_ItemRelationshipTypes, table
De la même façon qu'un ensemble statique de types d'éléments permet de classer des éléments, un ensemble statique de types de relations d'éléments permet de classer des relations d'éléments. Par exemple, DatasetInFeatureDataset (qui indique qu’une classe d’entités, une classe de relations ou un jeu de données du contrôleur est présent dans un jeu de classes d’entités) et DomainInDataset (qui indique qu’un jeu de données utilise un domaine pour la validation au niveau de la classe ou au niveau du sous-type) sont deux types de relations d’éléments. Contrairement aux types d'éléments, les types de relations d'éléments ne comportent pas de concept hiérarchique avec les types parents et enfants.
Les types de relations d'éléments ont les attributs suivants :
- UUID : identifiant unique d'un type de relation d'éléments et clé primaire pour la colonne de type de la table des relations des éléments.
- Name : nom du type de relation d'éléments, tel que DatasetInFolder
- Forward Label : description de la relation à partir du contexte de l'élément d'origine
- Backward Label : description de la relation à partir du contexte de l'élément de destination
- Origin Item Type ID : UUID du type d'élément pouvant se comporter comme l'élément d'origine dans les relations d'éléments de ce type
- Destination Item Type ID : UUID du type d'élément pouvant se comporter comme l'élément de destination dans les relations d'éléments de ce type
- Is Containment : indique si l’élément de destination peut exister même si l’élément d’origine est supprimé
XML dans les tables système de la géodatabase
Comme indiqué dans les sections précédentes, certains champs utilisent un type de données XML. Dans les géodatabases IBM Db2, Microsoft SQL Server et PostgreSQL, ces colonnes utilisent le XML natif du système de gestion de base de données et, par conséquent, peuvent être interrogées à l'aide d'expressions Xpath avec SQL.
Dans les géodatabases Oracle et IBM Informix, les colonnes XML utilisent XML ArcSDE, qui stocke les informations sous forme d'objets BLOB dans une série de tables distinctes. Ainsi, elles ne sont pas directement accessibles avec SQL.
Pour vous permettre d'afficher le contenu des colonnes XML dans les tables système des Oracle, deux vues système stockent le contenu des colonnes XML des tables système de la géodatabase dans un type de données CLOB. GDB_Items_vw affiche le contenu des colonnes Definition, Documentation et ItemInfo et de la table GDB_Items dans les colonnes CLOB. GDB_ItemRelationships_vw affiche le contenu de la colonne Attributes de la table GDB_ItemRelationships dans une colonne CLOB. Les colonnes CLOB peuvent être lues comme du texte.
Lorsque vous interrogez ces affichages, vous extrayez la chaîne de la colonne CLOB, la convertissez en un type XML, puis exécutez sur celle-ci une requête Xpath. Si vous essayez de créer un type XML pour une colonne qui contient une chaîne vierge, le message XML parsing failed (Échec de l'analyse XML) apparaît, car Oracle ne prend pas en charge cette opération.
Pour interroger le contenu des colonnes CLOB, vous devez configurer le serveur Oracle de sorte qu'il accepte les connexions SQL. Consultez la rubrique Configurer le processus extproc d’Oracle pour accéder à la géodatabase avec SQL pour plus d’informations.
Relation entre les tables GDB_
La meilleure façon de comprendre comment les tables système qui assurent le suivi des fonctionnalités des géodatabases fonctionnent ensemble consiste à les examiner à l'aide de SQL. Sélectionnez toutes les lignes et colonnes de la table GDB_Items pour voir son contenu.
Les valeurs de la colonne Type sont stockées en tant qu’UUID, qui sont associées à la colonne UUID dans la table GDB_ItemTypes. Vous pouvez par conséquent renvoyer le type de chaque élément à l’aide d’une requête SQL similaire à la suivante :
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;
Ceci renvoie les valeurs Type de chaque élément, comme l’illustre cette table :
UUID | Type | Nom |
---|---|---|
DF7A67CF-D8B2-461C-A4BF-74AF52AF2BD3 | Dossier | |
5E53E5C2-874E-4538-A6AB-1F0BBCABA885 | Espace de travail | Espace de travail |
2AC65400-919D-4241-A1A5-83C219A8ACD0 | Domaine de valeurs précodées | Matériau |
897D8FA2-BE31-4A5D-94A5-B93A32BF2146 | Domaine de valeurs précodées | DitDiam |
B75E3FDF-F864-4FA1-A31A-A56716BBDEA7 | Domaine par plage | RotAngle |
De la même façon, la table GDB_Relationships contient des UUID qui sont des valeurs clés d’autres tables. Chaque relation contient deux des valeurs UUID présentes dans la table GDB_Items ci-dessus : une pour l'élément de destination de la relation et une autre pour son élément d'origine. Pour les transformer en chaînes intelligibles, vous devez joindre la table GDB_Relationships à la table GDB_Items, deux fois : Pour voir le type de relation, incluez une jointure avec la table GDB_ItemRelationshipTypes, comme le montrent les exemples SQL suivants :
--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;
Voici un exemple des valeurs que la requête précédente pourrait renvoyer :
Type | Nom d'origine | Nom de destination |
---|---|---|
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 |
Requêtes courantes exécutées sur des tables GDB_
Consultez les rubriques suivantes pour en savoir plus sur les types courants de requêtes SQL exécutées sur des tables GDB_ :