Bonjour,
Si je puis donner un avis...
Lors de l’étape de modélisation, il est important de séparer ce qui est en cours de ce qui ne l’est plus.
Dans ces conditions, la table te_circuit_cir devrait comporter une colonne (cir_debut) permettant de préciser depuis quand un circuit est actif :
te_circuit_cir (cir_id, cir_lib, cir_cod, cir_longueur, cir_debut)
Il va sans dire que chaque colonne de cette table est déclarée NOT NULL.
La table te_historiquecircuit_hci conserve sa structure mais ne concerne vraiment que ce qui est terminé, ce qui fait que l’attribut hci_duree doit être déclaré NOT NULL, comme toutes les colonnes de cette table.
Mais cela ne résout pas les problèmes de chevauchement, à savoir qu’il ne doit pas exister de ligne de la table te_historiquecircuit_hci telle que :
te_historiquecircuit_hci.hci_debut + te_historiquecircuit_hci.hci_duree > te_circuit_cir.cir_debut
Cette contrainte peut être mise en œuvre au moyen de triggers concernant les inserts d’une part et les updates d’autre part (modification des dates et durées).
Le principe est le même pour s’assurer qu’il n’y a pas de chevauchement des périodes au sein de la table te_historiquecircuit_hci elle-même.
J’ai déjà évoqué ces problèmes de chevauchement de périodes avec lesultan2007 et lui avais proposé des triggers (façon SQL Server) :
http://www.developpez.net/forums/sho...6&postcount=14
Bon courage
Partager