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 principale 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 nel sqltable attributo:

    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 sqlname attributo per ogni tipo <attribute> e <element>:

    code language-sql
    <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    
NOTE
I nomi SQL possono essere sovraccaricati dallo schema di origine. A questo scopo, compila gli attributi "sqltable" o "sqlname" sull’elemento interessato.

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 <attribute> e <element> viene mappato su un campo SQL della tabella dello schema di 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 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.).

recommendation-more-help
35662671-8e3d-4f04-a092-029a056c566b