En esta capítulo se describe un gráfico de gran utilidad para resolver problemas de consultas SQL sobre tablas versionadas (Fecha Desde y Fecha Hasta), de forma, que resulte más sencilla la construcción de las cláusulas JOIN y WHERE de nuestras consultas SQL al consultar datos actuales o datos históricos sobre nuestras tablas versionadas. Resulta de gran utilidad en entornos de Business Intelligence (BI) y Data Warehouse (DW), principalmente para facilitar el desarrollo de consultas SQL y diseño en Reporting, OLAP (ej: Analysis Services), etc.
Antes de nada, quería poner el ejemplo bancario de las Cuentas Corrientes y los Titulares. En este modelo de ejemplo, se almacenan Cuentas Corrientes en una tabla versionada, de tal modo que en otra tabla versionada se almacenan los Titulares. Ambas tablas están relacionadas, ya que toda Cuenta Corriente tiene un Titular. De hecho, una persona física o jurídica puede ser el Titular de una o varias Cuentas Corrientes. Sin entrar en mayor detalle (que queda fuera del alcance de este Artículo, y tampoco nos aporta mayor riqueza), aprovecho para incluir un gráfico del ejemplo bancario de las Cuentas Corrientes y los Titulares.
Evidentemente, se trata de una relación Padre-Hijo, donde el papel del Padre lo toma la tabla de Titulares, y el papel del Hijo lo toma la tabla de Cuentas Corrientes.
Bien, ahora vamos a empezar a centrarnos en el Gráfico de Línea de Tiempo, para así poder empezar a comprenderlo, y sobre todo, saber interpretarlo.
En el Gráfico de Línea de Tiempo (que se incluye un poco más adelante, en este capítulo), hablaremos en consecuencia de Versiones Hijas y Versiones Padre, de tal modo que:
- La Versión Hija identifica una versión (es decir, una fila) de la tabla que queremos comparar, de tal modo, que dicha versión tiene como Fecha Desde el día a, y como Fecha Hasta el día b. En consecuencia, las líneas verticales discontínuas de color rojo, representan la Fecha a y la Fecha b. Recordar, que la tabla Hija contiene la Clave Externa que se relaciona con tabla Padre (en particular, se relaciona con la Clave de Negocio de la tabla Padre, se clave sencilla o clave compuesta). En el ejemplo bancario de las Cuentas Corrientes y los Titulares, la tabla Hija será la tabla de Cuentas Corrientes.
- las Versiones Padres identifican diferentes casos de versiones (filas) de la tabla relacionada, es decir, las versiones existentes en la tabla con la que comparamos. En el ejemplo bancario de las Cuentas Corrientes y los Titulares, la tabla Padre será la tabla de Titulares.
La utilidad de este gráfico, es intentar representas los diferentes casos con que nos podemos encontrar al trabajar con tablas versionadas, especialmente en el caso de tener que denormalizar tablas versionadas. Por ejemplo:
- Podemos tener una versión en la tabla Hija definida en [a,b), y ninguna versión en la tabla Padre definida para ese intervalo, ya sea porque no existe ninguna versión del Padre relacionada, o porque las versiones del Padre relacionadas que existen están definidas en intervalos fuera de [a,b).
- Podemos tener una versión en la tabla Hija definida en [a,b), y una versión en la tabla Padre definida para sólo parte de ese intervalo, ya sea porque no existen más versiones del Padre relacionadas, o bien, porque las versiones del Padre relacionadas que existen están definidas en intervalos fuera de [a,b).
- Podemos tener una versión en la tabla Hija definida en [a,b), y múltiples versiones de la tabla Padre definidas en dicho intervalo.
El hecho de poder representar gráficamente los diferentes casos con que nos podemos encontrar, permite utilizar éste gráfico como una Tabla de la Verdad. Es decir, podemos definir una condición lógica (una expresión de lógica matemática o predicado, que se transformará en una cláusula WHERE y/o JOIN) y comprobar si su comportamiento es satisfactorio para todos los casos que se nos pueden dar (tranquis, que esto se entenderá mejor más adelante, cuando veamos un caso práctico, ahora es suficiente con tener una idea aproximada del gráfico).
Claro está, que para poder aprovechar correctamente éste gráfico, es necesario conocer correctamente el funcionamiento del Modelo de Versionado que se esté utilizando, ya que esto impacta en cómo se graban los datos sobre dichas tablas (es decir, en su contenido), y en consecuencia, impacta en cómo debemos desarrollar nuestras consultas SQL.
Sin más, aprovecho para incluir el Gráfico de Línea de Tiempo:
Tranquis... más adelante en este Artículo, volveremos a hablar de éste Gráfico con algún caso de uso, que hará mucho más fácil su comprensión (y la interpretación de las columnas exp1, exp2, exp3, NI, e ISI). De momento, tan sólo dar paso al siguiente capítulo !