IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres SGBD Discussion :

Historisation des Données


Sujet :

Autres SGBD

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut Historisation des Données
    Bonjour,

    Je travaille actuellement sur un projet où on me demande de gérer une historique des modifications sur les tables.

    Je m'explique :

    J'ai (pour simplifier) 2 tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Utilisateur(ID_UTIL,...,#ID_GROUPE)
    Groupe(ID_GROUPE,...)
    Environ 120 Utilisateurs répartis dans 15 Groupes...

    Ces utilisateurs peuvent changer d'un groupe à un autre à une date donnée,
    mais pour les requêtes, je dois savoir qui a été dans tel groupe à telle intervalle de temps.

    Si la date de la modification intervient avant ou après l'intervalle de la requête, je pense que ça ne devrait pas poser de problême (même si je ne sais pas modéliser une telle chose...).

    Par contre, si la date de modif intervient entre l'intervalle de la requête, ça doit certainement poser des soucis...

    J'espère que je suis assez clair dans l'explication de mon problème et qu'aucun topic ne relate de ce problème (j'ai pourtant cherché...).

    Merci.

    A+

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Conceptuellement, cela veut dire que tu as une entité Utilisateur et une entité Groupe, liées par une association "appartient". Cette appartenance a des attributs, date de début et date de fin. En termes de cardinalité, stocker l'historique veut dire qu'au cours du temps, un utilisateur va appartenir à plusieurs groupes. L'association est donc "plusieurs à plusieurs".

    Une association portant des attributs ou ayant une cardinalité "plusieurs à plusieurs" est traduite pas une table, cela te donne donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Utilisateurs(ID_UTIL,...)
    Appartenances(#ID_UTIL, #ID_GROUPE, debut, fin)
    Groupes(ID_GROUPE,...)
    (au passages, les tables sont des ensembles ; la norme recommande donc de leur donner un nom au pluriel.)

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 624
    Points
    31 624
    Billets dans le blog
    16
    Par défaut
    Bonsoir mathieu44800,


    Concernant la gestion des historiques, vous pouvez parcourir les messages suivants :

    http://www.developpez.net/forums/sho...d.php?t=334343

    http://www.developpez.net/forums/sho...d.php?t=336896

    http://www.developpez.net/forums/sho...d.php?t=342162



    Citation Envoyé par antoun
    au passages, les tables sont des ensembles ; la norme recommande donc de leur donner un nom au pluriel
    Je vous prie de m'excuser, mais je ne sais pas de quelle norme vous parlez. Quoi qu'il en soit, les théoriciens du relationnel (Codd, Date, Ullman, j'en passe et des meilleurs) utilisent tous le singulier pour nommer cet ensemble qu'est une table.

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Merci pour vos réponses !

    Partons sur cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Utilisateurs(ID_UTIL,...)
    App_Utils_Grps(#ID_UTIL, #ID_GROUPE, Date_Debut, Date_Fin)
    Groupes(ID_GROUPE,...)
    Il me reste un petit doute quant aux requêtes sur ces tables :

    - Comment savoir quel utilisateur fait parti d'un groupe à un temps donné ?

    - Et sur un intervalle de temps ?

    A+

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message

    - Comment savoir quel utilisateur fait parti d'un groupe à un temps donné ?
    Dans le principe, sur la table App_Utils_Grps, tu places une condition date_de_reference entre debut et fin.

    Dans la pratique, c'est un peu peu subtil, parce que, a priori, la plupart des appartenances en cours n'ont pas de date de fin. Cela te donne donc, par exemple avec une date de référence à aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CURRENT_DATE() BETWEEN debut AND fin
    OR CURRENT_DATE() >= debut AND fin IS NULL
    Une astuce classique (quoi que pas très catholique) consiste à utiliser, pour les dates de fin encore inconnues, une date de "fin des temps", genre 31/12/9999, plutôt que NULL. Cela permet d'éviter le OR et de ne garder que le BETWEEN.

    Citation Envoyé par mathieu44800 Voir le message
    - Et sur un intervalle de temps ?
    Soit DebR et FinR le début et la fin de la période de référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debut <= FinR AND Fin >= DebR
    ... ceci dans le cas où la période est inclusive et où aucune date n'est NULL.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Je vous prie de m'excuser, mais je ne sais pas de quelle norme vous parlez.
    Dans mon esprit, il s'agissait de la norme SQL, mais en vérifiant mes références je m'aperçois qu'il s'agit d'une norme sur les conventions de nommage relatives aux méta-données (ISO-11179 Standard naming conventions). Je n'ai pas lu la norme en question, mais la présentation qu'en fait Joe Celko*.

    Citation Envoyé par fsmrel Voir le message
    Quoi qu'il en soit, les théoriciens du relationnel (Codd, Date, Ullman, j'en passe et des meilleurs) utilisent tous le singulier pour nommer cet ensemble qu'est une table.
    Si j'étais Codd ou Date, je pense que je ficherais pas mal des règles rédigées par les gratte-papier de l'ISO.
    Si maintenant je redescends à mon modeste niveau... je constate que dans sa première version, Codd décrivaits des relations liées entre elles par des relationships. Je pense que c'était un génie, mais je suis néanmoins très content que l'on n'ait pas suivi à la lettre sa terminologie...

    * CELKO, Joe. Joe Celko's SQL Programming Style. San Francisco: Elsevier, 2005. p. 14.

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 624
    Points
    31 624
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par antoun
    je constate que dans sa première version, Codd décrivaits des relations liées entre elles par des relationships.
    Comme l’écrit Chris Date, il est vrai que dans son article fondateur de 1970 A Relational Model of Data for
    Large Shared Data Banks
    , Ted Codd a utilisé le terme relationship à la place de celui de relation.

    Dans son article, Codd écrivait :
    "we propose that users deal, not with relations which are domain-ordered, but with relationships which are their domain-unordered counterparts. "
    On ne saurait quand même tenir grief à l’inventeur des bases de données relationnelles d’avoir utilisé une fois dans sa vie le terme relationship au lieu de celui de relation. En effet, dans tous ses écrits à suivre, Codd utilisa exclusivement ce dernier terme, dans son acception d’aujourd’hui (à ceci près qu’une relation est désormais seulement une valeur, alors qu’une relvar est une variable, dont les valeurs successives sont des relations*).

    Il a fallu attendre six ans pour que ce terme de relationship soit utilisé par Chen, avec un sens différent (association entre entités), dans son Modèle Entité/Relation.

    En passant, il a fallu aussi attendre six pour que le prototype Sytem/R d’IBM et son langage SQL voient le jour. Hélas ! Trois fois Hélas ! Bien que chercheur chez IBM, Codd n’a pas été sollicité pour superviser le projet...


    Citation Envoyé par antoun
    Si j'étais Codd ou Date, je pense que je ficherais pas mal des règles rédigées par les gratte-papier de l'ISO.
    Ted Codd s’en fiche, puisqu’il nous a laissés orphelins il y a bientôt cinq ans. Pour sa part, Chris Date est sur le pont relationnel depuis plus de trente-cinq ans et je pense qu’il a autre chose à faire que de s’intéresser à ce qu’écrit l’ISO. Maintenant, si cet organisme s’avisait de toucher à la théorie relationnelle je ne dis pas qu’il ne distribuerait pas des mauvais points et des petites claques, comme il l’a fait pour Celko (je vous renvoie à Date on Database: Writings 2000-2006...)

    * Par opposition, le terme table en SQL désigne à la fois la variable et les valeurs, le contenant et le contenu.

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Vous battez pas les gens, ...

    J'ai résolu mon problème !

    Mais bon , je suis toujours sous ACCESS, ce qui pose un autre sérieux problème

    A+

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Bonjour,
    Vous battez pas les gens, ...
    On ne se bat pas, on discute ! Et pour ma part, je m'instruis.

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 624
    Points
    31 624
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par antoun
    On ne se bat pas, on discute ! Et pour ma part, je m'instruis.
    Parfaitement d'accord, et dans ce genre d'échange, je m'instruis aussi...

    Donc, Mathieu, don't worry!

  11. #11
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,

    D'accord les gars, bonne discussion alors et merci pour tout...

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datawarehouse - Historisation des données
    Par ginkas31 dans le forum Modélisation
    Réponses: 9
    Dernier message: 09/05/2014, 17h18
  2. Archives, historisation des données modifiées.
    Par jogrey dans le forum Hibernate
    Réponses: 5
    Dernier message: 27/07/2010, 10h44
  3. [AC-2000] Historisation des données
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 10/01/2010, 16h20
  4. [XL-2007] Historiser des données
    Par gobi1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2009, 22h51
  5. Réponses: 8
    Dernier message: 18/02/2008, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo