Databasmappning database-mapping
SQL-mappningen i vårt exempelschema ger följande XML-dokument:
<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>
Beskrivning description
Schemats rotelement är inte längre <srcschema>
, utan <schema>
.
Detta tar oss till en annan typ av dokument, som genereras automatiskt från källschemat, som helt enkelt kallas schema. Det här schemat kommer att användas av Adobe Campaign-programmet.
SQL-namnen bestäms automatiskt utifrån elementnamn och typ.
Namnreglerna för SQL är följande:
-
tabell: sammanfogning av schemanamnrymden och namnet
I vårt exempel anges namnet på tabellen via huvudelementet i schemat i attributet sqltable:
code language-sql <element name="recipient" sqltable="CusRecipient">
-
field: name of the element before by a prefix defined as by type ('i' for integer, 'd' for double, 's' for string, 'ts' for dates, etc.)
Fältnamnet anges via attributet sqlname för varje typ
<attribute>
och<element>
:code language-sql <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
SQL-skriptet som skapar tabellen som genereras från det utökade schemat är följande:
CREATE TABLE CusRecipient(
iGender NUMERIC(3) NOT NULL Default 0,
sCity VARCHAR(50),
sEmail VARCHAR(80),
tsCreated TIMESTAMP Default NULL);
SQL-fältbegränsningarna är följande:
- inga null-värden i numeriska fält och datumfält
- numeriska fält initieras till 0
XML-fält xml-fields
Som standard mappas alla typer av <attribute>
- och <element>
-element till ett SQL-fält i datarapporten. Du kan emellertid referera till det här fältet i XML i stället för SQL, vilket betyder att data lagras i ett PM-fält ("mData") i tabellen som innehåller värdena för alla XML-fält. Lagringen av dessa data är ett XML-dokument som observerar schemastrukturen.
Om du vill fylla i ett fält i XML måste du lägga till attributet xml med värdet "true" till det aktuella elementet.
Exempel
-
Flerradskommentarfält:
code language-sql <element name="comment" xml="true" type="memo" label="Comment"/>
-
Databeskrivning i HTML-format:
code language-sql <element name="description" xml="true" type="html" label="Description"/>
Med typen html kan du lagra HTML-innehåll i en CDATA-tagg och visa en speciell HTML edit check i Adobe Campaign klientgränssnitt.
Med hjälp av XML-fält kan du lägga till fält utan att behöva ändra databasens fysiska struktur. En annan fördel är att du använder mindre resurser (storlek som tilldelas SQL-fält, gräns för antalet fält per tabell osv.).