En bases de datos temporales , el tiempo válido es el período de tiempo en el que ocurrió un evento o algo fue cierto en el mundo real, o más formalmente, cuando un hecho fue válido en la realidad modelada .
El período de tiempo válido es un intervalo basado en los tiempos de los eventos, que se conocen como fecha y hora del evento en el almacén de datos . [1] [2] Otros nombres son período de tiempo de la aplicación [1] o línea de tiempo del mundo real . [1] SQL:2011 admite el tiempo válido a través de las denominadas tablas de período de tiempo de la aplicación . [3] [4] [5] [6] En una tabla de base de datos, el tiempo válido a menudo se representa mediante dos columnas de tabla adicionales, como start_validtime
y end_validtime
. El intervalo de tiempo está cerrado en su límite inferior (denotado por [
) y abierto en su límite superior (denotado por )
).
En las capas de integración (por ejemplo, un almacén de datos ), el tiempo válido lo controla el sistema de origen que entrega los datos al almacén de datos. [7] Por muchas razones, la línea de tiempo válida es diferente de la línea de tiempo de la transacción (que es cuando los datos llegan al almacén), y es importante que el almacén de datos sea capaz de informar de manera inequívoca lo que realmente sucedió en el pasado combinando estas dos líneas de tiempo. [7] En los modelos de datos bitemporales , el tiempo válido y el tiempo de transacción se pueden representar bidimensionalmente en un sistema de coordenadas cartesianas . Cuando los datos se entregan desde la capa de integración y se deben representar en una capa de presentación (a menudo en un modelo dimensional o una tabla amplia ), a menudo es deseable tener los datos en una sola línea de tiempo.
El término tiempo válido fue acuñado por Richard T. Snodgrass y su estudiante de doctorado (1986). [8]
A partir de diciembre de 2011, ISO/IEC 9075, Lenguaje de base de datos SQL:2011 Parte 2: SQL/Foundation incluyó cláusulas en las definiciones de tabla para definir "tablas de período de tiempo de aplicación" (es decir, tablas de tiempo válido).
[ Necesita una fila adicional: "Se registró la muerte de John". ]
El tiempo válido es el tiempo durante el cual un hecho es verdadero en el mundo real. En el ejemplo anterior, la tabla Persona tiene dos campos adicionales, valid_from
y valid_to
, que especifican cuándo la dirección de una persona fue válida en el mundo real. El 4 de abril de 1975, el padre de John registró orgullosamente el nacimiento de su hijo. Luego, un funcionario insertará una nueva entrada en la base de datos indicando que John vive en Smallville desde el 3 de abril. Observe que, aunque los datos se insertaron el 4, la base de datos indica que la información es válida desde el 3. El funcionario aún no sabe si John se mudará a otro lugar o cuándo, por lo que en la base de datos se valid_to
completa con infinito (∞) o una fecha muy tardía (como, por ejemplo, 2300-01-01). Lo que da como resultado esta entrada en la base de datos:
El 27 de diciembre de 1994, John informa de su nueva dirección en Bigtown, donde ha estado viviendo desde el 26 de agosto de 1994. El funcionario de Bigtown no cambia la dirección de la entrada actual de John Doe en la base de datos. Añade una nueva:
La entrada original Persona (John Doe, Smallville, 1975-04-03, ∞) se actualiza (¡no se elimina!). Como ahora se sabe que John dejó de vivir en Smallville el 1994-08-26, la valid_to
entrada se puede completar. La base de datos ahora contiene dos entradas para John Doe.
Cuando John muere, la base de datos se actualiza una vez más. La entrada actual se actualiza indicando la fecha de fallecimiento como la última valid_to
de Bigtown, ya que John ya no vive allí. No se agrega ninguna entrada nueva. La base de datos ahora se ve así: