Databasmappning database-mapping

SQL-mappningen för exempelschemat som beskrivs på den här sidan genererar 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 email 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>

Schemats rotelement har ändrats till <srcschema> till <schema>.

Den andra typen av dokument genereras automatiskt från källschemat och kallas helt enkelt för schema.

SQL-namnen bestäms automatiskt utifrån elementnamn och typ.

Namnreglerna för SQL är följande:

  • table: 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: namnet på elementet föregås av ett prefix som definierats enligt typen: 'i' för heltal, 'd' för double, 's' för sträng, 'ts' för datum, osv.

    Fältnamnet anges via attributet sqlname för varje typ <attribute> och <element>:

    code language-sql
    <attribute desc="Email address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    
NOTE
SQL-namn kan överladdas från källschemat. Det gör du genom att fylla i attributen "sqltable" eller "sqlname" för det berörda elementet.

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 element av typen <attribute> och <element> till ett SQL-fält i databchematabellen. 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: Här är två exempel på hur XML-fält används.

  • 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.

Använd XML-fält för att lägga till nya fält utan att ä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.). Observera dock att du inte kan indexera eller filtrera ett XML-fält.

Indexerade fält indexed-fields

Med index kan du optimera prestanda för de SQL-frågor som används i programmet.

Ett index deklareras från huvudelementet i dataschemat.

<dbindex name="name_of_index" unique="true/false">
  <keyfield xpath="xpath_of_field1"/>
  <keyfield xpath="xpath_of_field2"/>
  ...
</key>

Indexen följer följande regler:

  • Ett index kan referera till ett eller flera fält i tabellen
  • Ett index kan vara unikt (för att undvika dubbletter) i alla fält om attributet unique innehåller värdet "true"
  • Indexets SQL-namn bestäms av tabellens SQL-namn och indexets namn
NOTE
  • Som standard är index de första elementen som deklareras från schemats huvudelement.

  • Index skapas automatiskt vid tabellmappning (standard eller FDA).

Exempel:

  • Lägga till ett index till e-postadressen och staden:

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="email">
          <keyfield xpath="@email"/>
          <keyfield xpath="location/@city"/>
        </dbindex>
    
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
        <element name="location" label="Location">
          <attribute name="city" type="string" length="50" label="City" userEnum="city"/>
        </element>
      </element>
    </srcSchema>
    
  • Lägga till ett unikt index i namnfältet"id":

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="id" unique="true">
          <keyfield xpath="@id"/>
        </dbindex>
    
        <dbindex name="email">
          <keyfield xpath="@email"/>
        </dbindex>
    
        <attribute name="id" type="long" label="Identifier"/>
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
      </element>
    </srcSchema>
    

Läs mer

Klicka på följande länkar om du vill veta mer:

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1