Bases de datos Temporales

El tiempo lo es todo

Jesús García Sáez

Zaragoza @ 17-Enero-2007

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.

¿Qué vamos a ver?

¿Qué es una BD Temporal?



"El mejor profeta del futuro es el pasado"

Algún concepto...

Tipos de información temporal

Dimensiones temporales

¡Pueden ser diferentes!

BD Temporales, últimos aspectos

Operaciones básicas

Ejemplo, Teatro: BD Inicial

Controlamos teatros, los cuales a veces pueden estar cerrados, abiertos, en construccion, etc... en ellos se representan obras. Éstas pueden estar en varios teatros, y cada teatro podrá tener varias obras (como un multicine vamos).

E/R teatro

Teatro: BD Inicial (II)

Teatro: Temporal time!

Teatro: Temporal time!? (II)

Tipo Intervalo

Operadores sobre Intervalos (I)

Sea i1=[s1,e1] e i2=[s2,e2] de tipo INTERVAL(tpPunto)
  • Operadores de Allen
    • i1 = i2, sii s1 = s2 AND e1 = e2
    • il BEFORE i2, sii e1 < s2
    • i1 MEETS i2, sii s2 = e1 + 1 OR s1 = e2 + 1
    • i1 OVERLAPS i2, sii s1 <= e2 AND s2 <= e1
    • i1 DURING i2, sii s2 <= s1
    • i1 STARTS i2, sii s1 = s2 AND e1 <= e2
    • i1 FINISHES i2, sii e1 = e2 AND s1 >= s2

  • Operadores adicionales
    • i1 MERGES i2, sii i1 MEETS i2 OR i1 OVERLAPS i2
    • i1 CONTAINS i2, sii i2 DURING i1

  • Operadores diádicos que devuelven segmentos
    • i1 UNION i2, devuelve [MIN(s1, s2), MAX(e1, e2)] sii i1 MERGES i2
    • i1 INTERSECT i2, devuelve [MAX(s1, s2), MIN(e1, e2)] sii i1 OVERLAPS i2

Operadores sobre Intervalos (II)

Operadores UNFOLD y COALESCE. Toman un conjunto de intervalos del mismo tipo y devuelven otro conjunto similar equivalente.
{ [d01, d01], [d03, d05], [d04, d06] }
{ [d01, d01], [d03, d04], [d05, d05], [d05, d06] }

Podrían considerarse como las formas canónicas del original.

Teatro: Restricciones ¡Esta vez si!

  • Claves primarias
    • Claramente (Teatro, Durante)
  • Restricciones de Intervalo
    • Solución implícita en el tipo INTERVAL :)
  • Restricción de Contigüidad y de Solapamiento?
    recordemos los operadores, declaremos la clave de Teatro como:
    • KEY(Nombre, Durante).
      • Mal!
    • KEY(Nombre, Durante) COALESCED Durante
      • Mal!
    • I_KEY(Nombre, Durante UNFOLDED) COALESCED Durante
      • Yeah yeah!
  • Restricción de clave ajena, similar a lo anterior
    • FOREIGN I_KEY(Teatro, Durante UNFOLDED) References Teatro...
TEATROS
Nombre Ciudad Estado Durante
T1 Zaragoza OK [d04, d10]
T2 Zaragoza OK [d07, d10]
T2 Zaragoza OK [d02, d04]
T3 Zaragoza SEMI [d03, d10]
T4 Zaragoza OK [d04, d10]
T5 Zaragoza OK [d02, d10]

REPRESENTAR
Teatro Obra Durante
T1 O1 [d04, d10]
T1 O2 [d05, d10]
T1 O3 [d09, d10]
T1 O4 [d05, d10]
T1 O5 [d04, d10]
T1 O6 [d06, d10]
T2 O1 [d02, d10]
T2 O2 [d03, d10]
T2 O1 [d08, d10]
T2 O2 [d09, d10]
T3 O2 [d08, d10]
T4 O2 [d06, d09]
T4 O4 [d04, d08]
T4 O5 [d05, d10]

Teatro: Consultas (I), ¡Esta vez si!

Cuando y qué teatros están abiertos y representando obras
  • Pasito a pasito
    • Coger teatros y tiempos
      • Representar { Teatro, Durante } AS T1
    • Agrupamos por teatro (Tabla 1)
      • (T1 GROUP (DURANTE) as X) as T2
    • Forma fundida de los tiempos (Tabla 2)
      • (T2 ADD COALESCE(X) AS Y) { Teatro, Y} AS T3
    • Desagrupamos (Tabla 3) T3 UNGROUP Y
  • Todo ello se resume a
    • T1 COALESCE Durante
TeatroX
...
T2[d02, d04]
[d03, d03]
[d08, d10]
[d09, d10]
...
Tabla 1
TeatroY
...
T2[d02, d04]
[d08, d10]
...
Tabla 2
TeatroDurante
T1[d04, d10]
T2[d02, d04]
T2[d08, d10]
T3[d08, d10]
T4[d04, d10]
Tabla 3
TEATROS
Nombre Ciudad Estado Durante
T1 Zaragoza OK [d04, d10]
T2 Zaragoza OK [d07, d10]
T2 Zaragoza OK [d02, d04]
T3 Zaragoza SEMI [d03, d10]
T4 Zaragoza OK [d04, d10]
T5 Zaragoza OK [d02, d10]

REPRESENTAR
Teatro Obra Durante
T1 O1 [d04, d10]
T1 O2 [d05, d10]
T1 O3 [d09, d10]
T1 O4 [d05, d10]
T1 O5 [d04, d10]
T1 O6 [d06, d10]
T2 O1 [d02, d10]
T2 O2 [d03, d10]
T2 O1 [d08, d10]
T2 O2 [d09, d10]
T3 O2 [d08, d10]
T4 O2 [d06, d09]
T4 O4 [d04, d08]
T4 O5 [d05, d10]

Teatro: Consultas (II), ¡Esta vez si!

Cuando y qué teatros no han podido representar alguna obra. Muy similar al anterior.

En definitiva, estamos reescribiendo los operadores a su versión temporal

Posibles descomposiciones

Aspectos a tener en cuenta a la hora del diseño físico

BD Temporales y el mundo real

TSQL2

Resumen

Referencias y bibliografía

¿Dudas existenciales?