Diferencia entre revisiones de «Exportaciones»
(→¿Cómo definimos una exportación?) |
|||
Línea 25: | Línea 25: | ||
<p>En las definiciones de exportación sólo es posible incluir un universo, es decir, una sola definición de contenedor sobre cuyos objetos creados se realizará la exportación. También hay que tener en cuenta el nombre de la tabla a crear, ya que siempre ha de ir con el prefijo '''TR$'''.</p> | <p>En las definiciones de exportación sólo es posible incluir un universo, es decir, una sola definición de contenedor sobre cuyos objetos creados se realizará la exportación. También hay que tener en cuenta el nombre de la tabla a crear, ya que siempre ha de ir con el prefijo '''TR$'''.</p> | ||
− | == | + | ==Ventajas de una exportación== |
− | <p>Hasta ahora, lo visto en cuanto a las exportaciones | + | <p>Hasta ahora, lo visto en cuanto a las exportaciones tiene ciertas similitudes sobre lo que puede ser una colección, pero hay un aspecto importante en las exportaciones que las hace ser una herramienta más potente a la hora de obtener listados.</p> |
− | <p> | + | <p>Imaginemos que tenemos una definición de contenedor cualquiera (por ejemplo ''Expediente''), con su formulario y sus campos. Uno de esos campos, es una tabla, donde se recogen por filas todos los documentos que se han ido entregando en un expediente concreto. Si nuestro objetivo fuera listar todos los documentos entregados en todos los expedientes, las colecciones no serían válidas para este tipo de operaciones.</p> |
+ | <p>Para ello, las exportaciones ofrecen la opción de crear una tabla adyacente a la tabla de la exportación en donde se recojan todos los documentos entregados en todos los expedientes. De tal manera, que cada fila de la tabla principal representará un expediente, y en la tabla adyacente cada fila representará un documento entregado.</p> | ||
+ | <p>¿Y qué conseguimos con esta estructura de tablas en la base de datos?</p> | ||
+ | <p>La tabla adyacente creada tiene una particularidad, y es que además de crear una columna con los datos que elijamos de cada documento, se crean dos columnas llamadas '''RRC''' y '''ROW_PATH''', donde RRC corresponde al identificar del expediente al que pertenece el documento, y la columna ROW_PATH establece el número de documento asociado a cada expediente. Para entenderlo mejor, veamos un ejemplo gráfico:</p> | ||
+ | |||
+ | IMAGEN1 | ||
+ | |||
+ | IMAGEN2 | ||
+ | |||
+ | <p>Con esta estructura, vemos que hay un enlace entre cada documento, y la entrada a la que pertenece. Ese enlace es el RRC de cada entrada. Haciendo uso de los catálogos, podemos hacer una petición SQL sobre ambas tablas, haciendo un '''''JOIN''''' entre ambas tablas con sus respectivos RRC. De esta manera, conseguiremos mostrar sólo los documentos entregados.</p> | ||
+ | <p>Si hiciéramos esta operación con una sola tabla, cada fila representaría a un documento entregado con su entrada asociada, pero de este modo, estaríamos repitiendo las entradas exportadas, tantas veces como documentos tenga una entrada. Además, la tabla estaría desvirtuada ya que existiría información sobre las entradas conjuntamente con información de los documentos. |
Revisión del 13:18 5 may 2009
¿Qué es una exportación?
Las exportaciones son operaciones que se realizan en ODL para obtener datos de los objetos creados de una determinada definición. Esto nos permite deserializar los objetos, desglosarlos y obtener la información de los campos que nos interesen, para posteriormente crear una tabla en la base de datos con los datos obtenidos.
Cuando un objeto es almacenado, se ejecutan todas aquellas exportaciones en las que esté incluída la definición del objeto, para actualizar las tablas asociadas a cada exportación.
¿Cómo definimos una exportación?
Podemos definir exportaciones como una instancia, o como definiciones de tipo que utilizaremos para derivar nuevas definiciones a partir de ellas. Estas definiciones no se realizan en el ámbito de ninguna otra definición, es decir, que tendrán que realizarse de forma independiente a cualquier otro recurso de ODL.
La definición de una exportación es similar al de una colección, donde tendremos que especificar la tabla a crear en el atributo nombre_tabla
, el universo sobre el que va a actuar la exportación en el atributo universo
y las columnas que se crearán en la tabla especificando el origen del campo. En la declaración de columnas, el nombre de la columna que se creará en la tabla la especificaremos en el atributo columna_bd.nombre
, y el campo origen en el atributo origen
. Veamos un ejemplo a continuación:
tipo
[Exportación base]es
exportación
-nombre_tabla
="TR$NOMBRE_DE_LA_TABLA"
;//Especificamos el nombre de la tabla a crear
-universo
= [Definición de contenedor];//El tipo de objetos sobre el que va a realizar la exportación de datos
//Y declaramos las columnas que se van a crear en la tabla con su nombre y origen
columna
[Nombre columna] -columna_bd.nombre
="NOMBRE_COLUMNA_BBDD"
; -origen
= [Formulario].[Campo1];
columna
[Nombre columna] -columna_bd.nombre
="NOMBRE_COLUMNA_BBDD"
; -origen
= [Formulario].[Campo2];
fin
[Exportación derivada]es
[Exportación base]
//Exportación derivada definida como una instancia a la que podremos acceder
fin
En las definiciones de exportación sólo es posible incluir un universo, es decir, una sola definición de contenedor sobre cuyos objetos creados se realizará la exportación. También hay que tener en cuenta el nombre de la tabla a crear, ya que siempre ha de ir con el prefijo TR$.
Ventajas de una exportación
Hasta ahora, lo visto en cuanto a las exportaciones tiene ciertas similitudes sobre lo que puede ser una colección, pero hay un aspecto importante en las exportaciones que las hace ser una herramienta más potente a la hora de obtener listados.
Imaginemos que tenemos una definición de contenedor cualquiera (por ejemplo Expediente), con su formulario y sus campos. Uno de esos campos, es una tabla, donde se recogen por filas todos los documentos que se han ido entregando en un expediente concreto. Si nuestro objetivo fuera listar todos los documentos entregados en todos los expedientes, las colecciones no serían válidas para este tipo de operaciones.
Para ello, las exportaciones ofrecen la opción de crear una tabla adyacente a la tabla de la exportación en donde se recojan todos los documentos entregados en todos los expedientes. De tal manera, que cada fila de la tabla principal representará un expediente, y en la tabla adyacente cada fila representará un documento entregado.
¿Y qué conseguimos con esta estructura de tablas en la base de datos?
La tabla adyacente creada tiene una particularidad, y es que además de crear una columna con los datos que elijamos de cada documento, se crean dos columnas llamadas RRC y ROW_PATH, donde RRC corresponde al identificar del expediente al que pertenece el documento, y la columna ROW_PATH establece el número de documento asociado a cada expediente. Para entenderlo mejor, veamos un ejemplo gráfico:
IMAGEN1
IMAGEN2
Con esta estructura, vemos que hay un enlace entre cada documento, y la entrada a la que pertenece. Ese enlace es el RRC de cada entrada. Haciendo uso de los catálogos, podemos hacer una petición SQL sobre ambas tablas, haciendo un JOIN entre ambas tablas con sus respectivos RRC. De esta manera, conseguiremos mostrar sólo los documentos entregados.
Si hiciéramos esta operación con una sola tabla, cada fila representaría a un documento entregado con su entrada asociada, pero de este modo, estaríamos repitiendo las entradas exportadas, tantas veces como documentos tenga una entrada. Además, la tabla estaría desvirtuada ya que existiría información sobre las entradas conjuntamente con información de los documentos.