Mapeamento de banco de dados database-mapping

O mapeamento SQL do nosso schema de exemplo fornece o seguinte 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>

Descrição description

O elemento raiz do esquema não é mais <srcschema>, mas <schema>.

Isso nos leva a outro tipo de documento, que é gerado automaticamente a partir do schema de origem, chamado simplesmente de schema. Este esquema será usado pelo aplicativo do Adobe Campaign.

Os nomes SQL são determinados automaticamente com base no nome e no tipo do elemento.

As regras de nomenclatura SQL são as seguintes:

  • tabela: concatenação do namespace e do nome do schema

    No nosso exemplo, o nome da tabela é inserido por meio do elemento principal do schema na sqltable atributo:

    code language-sql
    <element name="recipient" sqltable="CusRecipient">
    
  • field: nome do elemento precedido por um prefixo definido de acordo com o tipo ('i' para inteiro, 'd' para duplo, 's' para string, 'ts' para datas etc.)

    O nome do campo é inserido por meio da variável sqlname atributo para cada 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
Os nomes SQL podem ser sobrecarregados do esquema de origem. Para fazer isso, preencha os atributos "sqltable" ou "sqlname" no elemento relacionado.

O script SQL para criar a tabela gerada a partir do schema estendido é o seguinte:

CREATE TABLE CusRecipient(
  iGender NUMERIC(3) NOT NULL Default 0,
  sCity VARCHAR(50),
  sEmail VARCHAR(80),
  tsCreated TIMESTAMP Default NULL);

As restrições do campo SQL são as seguintes:

  • nenhum valor nulo em campos numéricos e de data
  • campos numéricos são inicializados como 0

Campos XML xml-fields

Por padrão, qualquer tipo <attribute> e <element> O elemento é mapeado em um campo SQL da tabela de esquema de dados. No entanto, você pode fazer referência a esse campo em XML, em vez de SQL, o que significa que os dados são armazenados em um campo de memorando ("mData") da tabela que contém os valores de todos os campos XML. O armazenamento desses dados é um documento XML que observa a estrutura do schema.

Para preencher um campo em XML, é necessário adicionar o xml com o valor "true" ao elemento em questão.

Exemplos

  • Campo de comentário multilinha:

    code language-sql
    <element name="comment" xml="true" type="memo" label="Comment"/>
    
  • Descrição dos dados em formato HTML:

    code language-sql
    <element name="description" xml="true" type="html" label="Description"/>
    

    O tipo "html" permite armazenar o conteúdo do HTML em uma tag CDATA e exibir uma verificação de edição de HTML especial na interface do cliente do Adobe Campaign.

O uso de campos XML permite adicionar campos sem a necessidade de modificar a estrutura física do banco de dados. Outra vantagem é que você usa menos recursos (tamanho alocado para campos SQL, limite do número de campos por tabela etc.).

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