Administración de claves management-of-keys
Cada tabla asociada con un esquema de datos debe tener al menos una clave para identificar un registro de una tabla.
Se declara una clave a partir del elemento principal del esquema de datos.
<key name="name_of_key">
<keyfield xpath="xpath_of_field1"/>
<keyfield xpath="xpath_of_field2"/>
...
</key>
Una clave se conoce como 'clave principal' cuando es la primera del esquema que se va a rellenar o si contiene el atributo internal
establecido como "true".
Una clave puede hacer referencia a uno o varios campos de la tabla.
Ejemplo:
-
Añadir una clave a la dirección de correo electrónico y a la ciudad:
code language-sql <srcSchema name="recipient" namespace="cus"> <element name="recipient"> <key name="email"> <keyfield xpath="@email"/> <keyfield xpath="location/@city"/> </key> <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/> <element name="location" label="Location"> <attribute name="city" type="string" length="50" label="City" userEnum="city"/> </element> </element> </srcSchema>
El esquema generado:
code language-sql <schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema"> <element name="recipient" sqltable="CusRecipient"> <key name="email"> <keyfield xpath="@email"/> <keyfield xpath="location/@city"/> </key> <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/> <element label="Location" name="location"> <attribute label="City" length="50" name="city" sqlname="sCity" type="string" userEnum="city"/> </element> </element> </schema>
-
Adición de una clave principal o interna al campo de nombre "id":
code language-sql <srcSchema name="recipient" namespace="cus"> <element name="recipient"> <key name="id" internal="true"> <keyfield xpath="@id"/> </key> <key name="email"> <keyfield xpath="@email"/> </key> <attribute name="id" type="long" label="Identifier"/> <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/> </element> </srcSchema>
El esquema generado:
code language-sql <schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema"> <element name="recipient" sqltable="CusRecipient"> <key name="email"> <keyfield xpath="@email"/> </key> <key internal="true" name="id"> <keyfield xpath="@id"/> </key> <attribute label="Identifier" name="id" sqlname="iRecipientId" type="long"/> <attribute desc="E-mail address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/> </element> </schema>
Clave principal: Identificador primary-key
En el contexto de una implementación empresarial (FDAC), la clave principal de las tablas de Adobe Campaign es un identificador único universal (UUID) generado automáticamente por el motor de base de datos. El valor clave es único en toda la base de datos. El contenido de la clave se genera automáticamente al insertar el registro.
Por ejemplo
En el ejemplo siguiente, declaramos una clave incremental en el esquema de origen:
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true" autouuid="true">
...
</element>
</srcSchema>
El esquema generado:
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<element name="recipient" autopk="true" autouuid="true" sqltable="CusRecipient">
<key internal="true" name="id">
<keyfield xpath="@id"/>
</key>
<attribute desc="Internal primary key" label="Primary key" name="id" sqlname="iRecipientId" type="long"/>
</element>
</schema>
Además de la definición de la clave, se ha añadido un campo numérico llamado "id" al esquema ampliado para contener la clave principal generada automáticamente.