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
Em nosso exemplo, o nome da tabela é inserido por meio do elemento principal do esquema no atributo sqltable:
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 do atributo sqlname para cada
<attribute>
e<element>
digitados:code language-sql <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
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 elemento <attribute>
e <element>
digitado é 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, você deve adicionar o atributo xml com o valor "true" ao elemento relacionado.
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.).