El problema de la actualizaci'on de vistas es bien conocido en el contexto de las bases de datos relacionales: Un modelo concreto se abstrae en uno abstracto de modo que las modificaciones realizadas al modelo abstracto se propagan al concreto. El modelo abstracto en este contexto se denomina vista y el concreto es la implementaci'on de la base de datos. Gr'aficamente, el problema se puede representar del siguiente modo:
es la consulta que se realiza sobre la base de datos para generar la vista, y
es la
actualizaci'on sobre la vista
que genera la vista modificada
.
El problema consiste en determinar la transformaci'on
sobre la base de datos
que
refleje
generando
. Claramente, aplicando
directamente sobre
se debe obtener
la misma vista
obtenida mediante la aplicaci'on de
. En otros t'erminos, y de manera m'as
general, el problema consiste en sincronizar actualizaciones en niveles distintos.
En [#!Focal2005-long!#], se propone una soluci'on alternativa a este problema. Aqu'i, la idea es
modelar la sincronizaci'on (tambi'en llamada lens),
mediante la definici'on de dos funciones: (forward transformation) y
(backward transformation).
Intuitivamente, mediante
se consigue un componente abstracto a partir de otro concreto
m'as grande.
por su parte, inserta en la estructura concreta
(sin actualizar, por esto tambi'en llamada antigua u original), el componente abstracto.
Esta situaci'on se puede representar mediante la siguiente inecuaci'on
que expresa el hecho que el modelo abstracto disponde de menos informaci'on que el modelo concreto
. Adem'as, indica que la funci'on
es parcial y sobreyectiva, en tanto que
es total e inyectiva, y se verifica la propiedad de validaci'on
![]() |
(3) |
Sin embargo, de resulta evidente que al disponer de menos informaci'on el modelo
abstracto, la reconstrucci'on del modelo concreto a partir de aquel ser'ia limitada. Por lo tanto, es
necesario modelar otra transformaci'on que disponga de la informaci'on suficiente para
reconstruir el modelo concreto. As'i, modificamos
como sigue
Ahora, como transformaci'on inversa tenemos dos alternativas: y
. Sin embargo,
solo esta 'ultima puede reconstruir el modelo original actualizado.