Mappatura del database database-mapping
La mappatura SQL dello schema di esempio fornisce il seguente documento XML:
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<enumeration basetype="byte" name="gender">
<value label="Not specified" name="unknown" value="0"/>
<value label="Male" name="male" value="1"/>
<value label="Female" name="female" value="2"/>
</enumeration>
<element name="recipient" sqltable="CusRecipient">
<attribute desc="Recipient e-mail address" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
<attribute default="GetDate()" label="Date of creation" name="created" sqlname="tsCreated" type="datetime"/>
<attribute enum="gender" label="Gender" name="gender" sqlname="iGender" type="byte"/>
<element label="Location" name="location">
<attribute label="City" length="50" name="city" sqlname="sCity" type="string" userEnum="city"/>
</element>
</element>
</schema>
Descrizione description
L'elemento radice dello schema non è più <srcschema>
, ma <schema>
.
Questo ci porta a un altro tipo di documento, che viene generato automaticamente dallo schema di origine, semplicemente denominato schema. Questo schema verrà utilizzato dall’applicazione Adobe Campaign.
I nomi SQL vengono determinati automaticamente in base al nome e al tipo dell'elemento.
Le regole di denominazione SQL sono le seguenti:
-
tabella: concatenazione dello spazio dei nomi e del nome dello schema
Nel nostro esempio, il nome della tabella viene immesso tramite l'elemento principale dello schema nell'attributo sqltable:
code language-sql <element name="recipient" sqltable="CusRecipient">
-
campo: nome dell’elemento preceduto da un prefisso definito secondo il tipo ("i" per numero intero, "d" per doppio, "s" per stringa, "ts" per date, ecc.)
Il nome del campo viene immesso tramite l'attributo sqlname per ogni tipo di
<attribute>
e<element>
:code language-sql <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
Lo script SQL per creare la tabella generata dallo schema esteso è il seguente:
CREATE TABLE CusRecipient(
iGender NUMERIC(3) NOT NULL Default 0,
sCity VARCHAR(50),
sEmail VARCHAR(80),
tsCreated TIMESTAMP Default NULL);
I vincoli del campo SQL sono i seguenti:
- nessun valore nullo nei campi numerici e di data
- i campi numerici sono inizializzati a 0
Campi XML xml-fields
Per impostazione predefinita, qualsiasi elemento <attribute>
e <element>
digitato è mappato su un campo SQL della tabella dello schema dati. È tuttavia possibile fare riferimento a questo campo in formato XML anziché in formato SQL, il che significa che i dati vengono memorizzati in un campo Memo ("mData") della tabella contenente i valori di tutti i campi XML. La memorizzazione di questi dati è un documento XML che osserva la struttura dello schema.
Per compilare un campo in XML, è necessario aggiungere l'attributo xml con il valore "true" all'elemento interessato.
Esempi
-
Campo commento su più righe:
code language-sql <element name="comment" xml="true" type="memo" label="Comment"/>
-
Descrizione dei dati in formato HTML:
code language-sql <element name="description" xml="true" type="html" label="Description"/>
Il tipo "html" consente di memorizzare il contenuto HTML in un tag CDATA e di visualizzare uno speciale controllo di modifica HTML nell’interfaccia client di Adobe Campaign.
L'utilizzo di campi XML consente di aggiungere campi senza dover modificare la struttura fisica del database. Un altro vantaggio consiste nell'utilizzo di meno risorse (dimensioni allocate ai campi SQL, limite al numero di campi per tabella, ecc.).