7.3 Les données temporelles
175
© Dunod – La photocopie non autorisée est un délit.
donc ceux qui ont un état courant à l’heure actuelle, c’est-à-dire tel que fin = '101-3000'. L’identifiant primaire de cette table est (NCLI, debut).
Figure 7.2 - Table décrivant l’historique de deux clients
7.3.2 Interrogation de données temporelles
Certaines requêtes s’expriment très simplement. Ainsi, la recherche de la localité du
client C400 en date du 18-05-2000 s’obtient par 5 :
select NCLI,LOCALITE
from
H_CLIENT
where NCLI = 'C400'
and
debut <= '18-05-2000' and '18-05-2000' < fin
L’état courant des clients est aussi facile à extraire :
select NCLI, NOM, LOCALITE, CAT
from
H_CLIENT
where fin = '1-01-3000'
... de même que l’état courant de la table à la date 15-12-1998 :
select NCLI, NOM, LOCALITE, CAT
from
H_CLIENT
where debut <= '15-12-1998' and '15-12-1998' < fin
Malheureusement, certaines requêtes, pourtant très fréquentes, exigeront une formulation beaucoup plus complexe. Nous en citerons deux : la projection et la jointure.
4. Technique sans doute peu élégante, mais qui permet de traiter le futur infini comme une date
valide, ce qui simplifie considérablement certaines requêtes courantes. La théorie suggère plutôt
l’usage d’une valeur spéciale until_changed, qui n’est cependant pas disponible dans les SGBD
actuels. Quoi qu’il en soit, on peut supposer que cet ouvrage sera périmé à cette date.
5. Pourquoi n’a-t-on pas utilisé la condition between ?
Précédent

- 175/436

Suivant