Champs d’identifiants uniques dans les tables de base de données

Toutes les tables et classes d'entités utilisées dans ArcGIS doivent contenir un champ qui identifie de manière unique chaque ligne ou entité.

Pour être utilisé comme identifiant unique dans les applications bureautiques ArcGIS, le champ ne doit pas avoir une valeur nulle, doit contenir des valeurs uniques et doit être de l’un des types de données suivants :

  • Entier (valeurs positives 32 et 64 bits uniquement)
  • Chaîne
  • GUID
  • Date

Les valeurs du champ doivent toujours être uniques et non nulles. Il est de votre responsabilité de garantir que les valeurs contenues dans ce champ respectent ces critères.

Remarque :

Vous recevrez une erreur si ArcGIS rencontre une valeur Null, mais ArcGIS n'impose pas l'unicité des valeurs dans le champ d'identifiant unique utilisé dans une couche de requête ou une table de base de données. Si ArcGIS détecte une valeur qui n'est pas unique, aucune erreur n'est renvoyée. Cependant, vous êtes susceptible d'obtenir des résultats incohérents dans les ensembles de sélection ou d'autres requêtes dans ArcGIS.

Si vous souhaitez publier la couche de requête dans une couche d’entités (un service d’entités) qui référence le data store inscrit, l’ID doit être un champ d’entier unique, non nul, d’autoincrémentation, 32 bits.

Lorsque vous faites glisser une table de base de données sur une carte ou lorsque vous validez la définition d’une couche de requête, ArcGIS définit le premier champ non nul qu’il trouve comme champ d’identifiant unique par défaut. Vous pouvez utiliser ce champ ou modifier la définition de requête et sélectionner un autre champ ou un ensemble de champs à utiliser comme identifiant unique.

Utiliser un seul champ comme identifiant unique

Si un seul champ de nombre entier est spécifié comme identifiant unique, ArcGIS utilise les valeurs contenues dans ce champ pour identifier de façon unique toutes les entités et toutes les lignes de la table de base de données.

Si aucun champ de votre table de base de données ne peut être utilisé comme identifiant unique, et si vous utilisez une base de données Dameng, IBM Db2, Microsoft SQL Server, Oracle ou PostgreSQL, vous pouvez exécuter l’outil de géotraitement Ajouter un champ d’ID incrémentiel pour ajouter un champ de nombre entier d’identifiant unique à la table.

Si un seul champ de type chaîne est utilisé comme identifiant unique, ArcGIS doit apparier ces valeurs uniques à un nombre entier. Cette opération s’effectue dans ArcGIS à chaque fois que le système a besoin d’un attribut ID d’objet ; par exemple, lors de la création d’une sélection de carte ou de l’ouverture de la table attributaire. ArcGIS ajoute un attribut nommé ESRI_OID et stocke à l'intérieur une valeur d'entier unique. Cet attribut fait uniquement partie de la définition de la couche ; la table de base de données sous-jacente n'est pas modifiée.

Utiliser un identifiant unique composite

Vous pouvez choisir un seul champ ou plusieurs champs pour définir un identifiant unique. Si vous décidez d'utiliser plusieurs champs, les valeurs combinées dans ces champs doivent être uniques. L'exemple suivant montre deux champs de texte : nom_membre et date_inscription. Prises individuellement, les valeurs de ces champs peuvent ne pas être uniques. Mais lorsqu'elles sont utilisées ensemble, les valeurs sont uniques, comme illustré ici :

nom_membredate_inscription

alfred

2006-09-28 10:15:41

dewey

2006-09-28 10:15:56

johnson

2000-02-19 09:14:50

johnson

2004-12-08 11:02:32

mujan

2011-07-07 12:44:21

La combinaison de ces valeurs sera utilisée en tant que clé de génération d'une valeur entière unique, qui sera stockée dans un attribut nommé ESRI_OID. Cet attribut fait uniquement partie de la définition de la couche ; la table de base de données sous-jacente n'est pas modifiée.

La définition de la couche pour l’exemple précédent inclurait une colonne ESRI_OID, comme illustré ici :

nom_membredate_inscriptionESRI_OID

alfred

2006-09-28 10:15:41

1

dewey

2006-09-28 10:15:56

2

johnson

2000-02-19 09:14:50

3

johnson

2004-12-08 11:02:32

4

mujan

2011-07-07 12:44:21

5

Notez que si les valeurs combinées des champs ou du champ de texte individuel que vous spécifiez ne sont pas uniques, ArcGIS considère ces lignes comme identiques et les apparie à la même valeur ESRI_OID.

Si votre table contient déjà un champ nommé ESRI_OID, un attribut nommé ESRI_OID_1 est ajouté à la définition de la couche.

Remarque :

Vous ne pouvez pas publier un service d’entités modifiable (couche d’entités web) qui contient une classe d’entités dotée avec un identifiant unique composite.