Gestione delle chiavi negli schemi management-of-keys
Ogni tabella associata a uno schema di dati deve avere almeno una chiave per identificare un record in una tabella. Questa pagina descrive la chiave incrementale automatica utilizzata nelle tabelle di Campaign Classic v7.
Nell’ambito della transizione da Campaign v7 a v8, il set di documentazione di Campaign Classic è stato razionalizzato e riorganizzato. Le funzioni comuni sono ora disponibili esclusivamente nel set di documentazione di Campaign v8. Per ulteriori informazioni sulla gestione delle chiavi, consulta la documentazione di Campaign v8.
Tasto incrementale automatico auto-incremental-key
La chiave primaria della maggior parte delle tabelle di Adobe Campaign è un numero intero a 32 bit generato automaticamente dal motore di database. Il calcolo del valore chiave dipende da una sequenza (per impostazione predefinita, la funzione SQL XtkNewId) che genera un numero univoco nell’intero database. Il contenuto della chiave viene immesso automaticamente all’inserimento del record.
Il vantaggio di una chiave incrementale è che fornisce una chiave tecnica non modificabile per i join tra tabelle. Inoltre, questa chiave non occupa molta memoria perché utilizza un numero intero a doppio byte.
È possibile specificare nello schema di origine il nome della sequenza da utilizzare con l’attributo pkSequence. Se questo attributo non è specificato nello schema di origine, verrà utilizzata la sequenza predefinita XtkNewId. L’applicazione utilizza sequenze dedicate per gli schemi nms:broadLog e nms:trackingLog (NmsBroadLogId e NmsTrackingLogId rispettivamente) perché si tratta delle tabelle che contengono il maggior numero di record.
Da ACC 18.10, XtkNewId non è più il valore predefinito per la sequenza negli schemi predefiniti. Ora puoi creare uno schema o estendere uno schema esistente con una sequenza dedicata.
Una sequenza a cui si fa riferimento in uno schema di Adobe Campaign (NmsTrackingLogId, ad esempio) deve essere associata a una funzione SQL che restituisce il numero di ID nei parametri, separati da virgole. Questa funzione deve essere chiamata GetNew XXX Ids, dove XXX è il nome della sequenza (GetNewNmsTrackingLogIds, ad esempio). Visualizzare i file postgres-nms.sql, mssql-nms.sql o oracle-nms.sql forniti con l’applicazione nella directory datakit/nms/eng/sql/ per recuperare l’esempio di creazione di una sequenza ‘NmsTrackingLogId’ per ogni motore di database.
Per dichiarare una chiave univoca, compilare l’attributo autopk (con il valore “true”) nell’elemento principale dello schema dati.
Esempio:
Dichiarazione di una chiave incrementale nello schema di origine:
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true">
...
</element>
</srcSchema>
Lo schema generato:
<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>
Oltre alla definizione della chiave e del relativo indice, allo schema esteso è stato aggiunto un campo numerico denominato “id” per contenere la chiave primaria generata automaticamente.
Ulteriori informazioni
Per ulteriori informazioni, consulta i seguenti collegamenti:
- Introduzione agli schemi
- Struttura dello schema
- Mappatura del database
- Gestione dei collegamenti (documentazione di Campaign v8)
- Modello dati della campagna (documentazione di Campaign v8)