Gestion des clés dans les schémas management-of-keys
Chaque table associée à un schéma de données doit posséder au moins une clé pour identifier un enregistrement dans une table. Cette page décrit la clé auto-incrémentale utilisée dans les tables de Campaign Classic v7.
Dans le cadre de la transition de Campaign v7 vers v8, la documentation de Campaign Classic a été rationalisé et réorganisé. Les fonctionnalités communes sont désormais disponibles exclusivement dans le jeu de documentation de Campaign v8. Pour en savoir plus sur la gestion des clés, consultez la documentation de Campaign v8.
Clé auto-incrémentale auto-incremental-key
La clé primaire de la plupart des tables Adobe Campaign est un entier long 32 bits auto-généré par le moteur de base de données. Le calcul de la valeur de la clé repose sur une séquence (par défaut, la fonction SQL XtkNewId) générant un nombre unique dans toute la base de données. Le contenu de la clé est automatiquement renseigné à l’insertion de l’enregistrement.
L’avantage d’une clé incrémentale est d’obtenir une clé technique non modifiable utilisée pour les jointures entre les tables. De plus, cette clé n’est pas consommatrice de mémoire, car elle utilise un entier sur deux octets.
Vous pouvez spécifier dans le schéma source le nom de la séquence à utiliser avec l’attribut pkSequence. Si cet attribut n’est pas indiqué dans le schéma source, la séquence XtkNewId par défaut est utilisée. L’application utilise des séquences dédiées pour les schémas nms:broadLog et nms:trackingLog (NmsBroadLogId et NmsTrackingLogId, respectivement), car il s’agit des tables qui contiennent le plus d’enregistrements.
À compter d’ACC 18.10, XtkNewId n’est plus la valeur par défaut de la séquence dans les schémas d’usine. Vous pouvez désormais créer un schéma ou étendre un schéma existant avec une séquence dédiée.
Une séquence référencée dans un schéma Adobe Campaign (NmsTrackingLogId par exemple) doit être associée à une fonction SQL qui renvoie le nombre d’identifiants dans les paramètres, séparés par des virgules. Cette fonction doit être appelée GetNew XXX Ids, où XXX correspond au nom de la séquence (GetNewNmsTrackingLogIds, par exemple). Affichez les fichiers postgres-nms.sql, mssql-nms.sql ou oracle-nms.sql fournis avec l’application dans le répertoire datakit/nms/eng/sql/ pour récupérer l’exemple de création de séquence « NmsTrackingLogId » pour chaque moteur de base de données.
Pour déclarer une clé unique, il faut renseigner l’attribut autopk (avec la valeur “true”) sur l’élément principal du schéma de données.
Exemple:
Déclaration d’une clé incrémentale dans le schéma source :
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true">
...
</element>
</srcSchema>
Le schéma généré :
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<element name="recipient" autopk="true" pkSequence="XtkNewId" sqltable="CusRecipient">
<dbindex name="id" unique="true">
<keyfield xpath="@id"/>
</dbindex>
<key internal="true" name="id">
<keyfield xpath="@id"/>
</key>
<attribute desc="Internal primary key" label="Primary key" name="id" sqlname="iRecipientId" type="long"/>
</element>
</schema>
En plus de la définition de la clé et de son index, un champ numérique de nom “id” a été ajouté dans le schéma étendu afin de contenir la clé primaire auto générée.
En savoir plus
Pour en savoir plus, consultez les liens suivants :
- Prise en main des schémas
- Structure d’un schéma
- Mapping de la base de données
- Gestion des liens (documentation de Campaign v8)
- Modèle de données de Campaign (documentation de Campaign v8)