Base de données temporelle

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Une base de données temporelle est une base de données avec des aspects de temps intégrés, c'est-à-dire un modèle de données temporel et une version temporelle du langage structuré de requêtes (Structured Query Language - SQL).

Plus spécifiquement, les aspects temporels contiennent habituellement le temps-valide et le temps-transaction. Ces attributs marchent ensemble pour former une donnée bitemporelle.

  • Le temps-valide dénote la période de temps durant laquelle un fait est vrai par rapport à la réalité.
  • Le temps-transaction est la période de temps pendant laquelle un fait est stocké dans la base de données.
  • La donnée bitemporelle combine à la fois le temps-valide et le temps-transaction.

À noter que ces deux périodes de temps n'ont pas à être égales pour un fait unique. Imaginez que nous ayons une base de données temporelle stockant des données relatives au XVIIIe siècle. Le temps-valide de ces faits se situe quelque part entre 1701 et 1800, tandis que le temps transaction débute quand on insère le fait dans la base de données, par exemple le 21 janvier 1998.

Il est possible d'avoir dans la base de données des échelles de temps autres que le temps-valide et le temps-transaction, comme le temps-décision. Dans ce cas, la base de données est nommée base de données multitemporelle par opposition à base de données bitemporelle. Cependant, cette approche introduit des complexités additionnelles comme la gestion de la validité des clés (étrangères).

Histoire[modifier | modifier le code]

L'histoire des bases de données temporelles est parallèle à celle des bases de données elle-même. Avec le développement de SQL et sa large utilisation dans des applications de la vie réelle, on a commencé à réaliser que, quand on ajoute des colonnes de date à des champs clés, quelques problèmes se posent. Le problème de base est celui-ci : si vous avez une clé primaire et quelques attributs dans une table, et vous ajoutez une date dans la clé primaire pour suivre les changements dans le temps, vous allez émettre des clés encore et encore. Les suppressions prennent alors des sens différents, etc. En 1992, ce problème a été reconnu mais la théorie classique des bases de données n'était pas prête à résoudre ce problème, et le nouveau standard SQL92 non plus.

Richard Snodgrass proposa en 1992 que des extensions à SQL soient développée par la communauté des bases temporelles. En réponse à cette proposition, un comité virtuel fut créé pour concevoir des extensions à l'édition de 1992 du standard SQL (ANSI X3.135.-1992 and ISO/IEC 9075:1992) ; Ces extensions, connues sous le nom de TSQL2 furent développées en 1993 par ce comité, se rencontrant uniquement par email. Fin 1993, Snodgrass présenta en premier son travail au groupe responsable du standard national américain pour le langage de base de données SQL, ANSI Technical Committee X3H2 (maintenant connu sous le nom NCITS H2). La spécification préliminaire du langage parue dans ACM SIGMOD Record en mars 1994. Basé sur les réponses à cette spécification, des changements furent apportés au langage et la version définitive des Spécifications du Langage TSQL2 fut publiée en septembre 1994[1].

Une tentative essaya de d'incorporer des parties de TSQL2 dans le nouveau standard SQL SQL:1999, appelé SQL3. Des parties de TSQL2 furent incluses dans un sous-standard de SQL3, ISO/IEC 9075-7, appelé SQL/Temporal. Cependant, le projet ISO responsable du support des notions temporelles fut annulé vers la fin de 2001.

Les idées et concepts décrits dans la spécification TSQL2, comme le temps-valide, le temps-transaction et les tables bitemporelles, ont tous trouvés leur voie dans la littérature générale sur les bases de données temporelle depuis lors. En 2002, Chris Date, Hugh Darwen et Nikos Lorentzo présentèrent dans leur livre Temporal Data & the Relational Model un traitement du sujet incluant beaucoup des termes introduits par TSQL2 mais ils introduisirent la Sixième forme normale pour résoudre certains de ces problèmes.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. Richard T. Snodgrass, « TSQL2 Temporal Query Language », Computer Science Department of the University of Arizona

Liens externes[modifier | modifier le code]

Notes et références[modifier | modifier le code]