Gestione delle chiavi management-of-keys
Ogni tabella associata a uno schema di dati deve avere almeno una chiave per identificare un record in una tabella.
Una chiave viene dichiarata dall’elemento principale dello schema di dati.
<key name="name_of_key">
<keyfield xpath="xpath_of_field1"/>
<keyfield xpath="xpath_of_field2"/>
...
</key>
Una chiave è nota come “chiave primaria” quando è la prima dello schema a essere compilata o se contiene l’attributo internal impostato su “true”.
Una chiave può fare riferimento a uno o più campi della tabella.
Esempio:
-
Aggiunta di una chiave all’indirizzo di posta elettronica e alla città:
code language-sql <srcSchema name="recipient" namespace="cus"> <element name="recipient"> <key name="email"> <keyfield xpath="@email"/> <keyfield xpath="location/@city"/> </key> <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/> <element name="location" label="Location"> <attribute name="city" type="string" length="50" label="City" userEnum="city"/> </element> </element> </srcSchema>Lo schema generato:
code language-sql <schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema"> <element name="recipient" sqltable="CusRecipient"> <key name="email"> <keyfield xpath="@email"/> <keyfield xpath="location/@city"/> </key> <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/> <element label="Location" name="location"> <attribute label="City" length="50" name="city" sqlname="sCity" type="string" userEnum="city"/> </element> </element> </schema> -
Aggiunta di una chiave primaria o interna nel campo del nome “id”:
code language-sql <srcSchema name="recipient" namespace="cus"> <element name="recipient"> <key name="id" internal="true"> <keyfield xpath="@id"/> </key> <key name="email"> <keyfield xpath="@email"/> </key> <attribute name="id" type="long" label="Identifier"/> <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/> </element> </srcSchema>Lo schema generato:
code language-sql <schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema"> <element name="recipient" sqltable="CusRecipient"> <key name="email"> <keyfield xpath="@email"/> </key> <key internal="true" name="id"> <keyfield xpath="@id"/> </key> <attribute label="Identifier" name="id" sqlname="iRecipientId" type="long"/> <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/> </element> </schema>
Chiave primaria - Identificatore primary-key
Nel contesto di una distribuzione Enterprise (FFDA), la chiave primaria delle tabelle di Adobe Campaign è un ID universalmente univoco (UUID) generato automaticamente dal motore di database. Il valore chiave è univoco nell’intero database. Il contenuto della chiave viene generato automaticamente all’inserimento del record.
Esempio
Nell’esempio seguente viene dichiarata una chiave incrementale nello schema di origine:
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true" autouuid="true">
...
</element>
</srcSchema>
Lo schema generato:
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<element name="recipient" autopk="true" autouuid="true" sqltable="CusRecipient">
<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, allo schema esteso è stato aggiunto un campo numerico denominato “id” per contenere la chiave primaria generata automaticamente.