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

Schéma Discussion :

Historique des modifications [MCD]


Sujet :

Schéma

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut Historique des modifications
    Bonjour à tous,

    Voici mon petit problème.
    Je possède une table A qui est associée à une table B (A est associée à 1..1 B, B est associée à 0..n A)

    Dans le cas où une instance de l'entité A est associée à une instance de l'entité B, je souhaite que si un attribut de B change, je garde une trace de l'entité B telle qu'elle l'était auparavant (un historique en fait). Ceci dit, elle ne doit plus être accessible au reste de l'appli.

    Deux solutions s'offrent :
    1) j'ajoute un attribut 'obsolete' de type bool sur B que je fixe à true lorsqu'une entité est modifiée,
    2) j'ajoute des champs dans A (représentant ceux de B) permettant de garder cet historique


    En ce qui me concerne, et dans un souci de simplicité, je choisirais la solution 1. Mais je me demande si je ne risque pas d'avoir une BDD qui risque de grossir pour rien en gardant des entités "obsoletes"...

    Ou alors voyez vous une autre solution plus adaptée ?

    Merci d'avance de votre aide,

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Tu as donc l'association (MCD et non pas MDD) :
    A -1,1----Associer----0,n- B

    Ce qui donne normalement les tables :
    B(B_Id, ...)
    A(A_Id, A_IdB, ...)

    Ce n'est pas B qui dépend de A mais A qui dépend de B. Si je supprime une instance de B, la clé étrangère A_IdB dans la table A disparaît et donc l'instance (ou les instances) correspondante(s) de A disparaissent aussi.

    En clair, si je supprime une ligne de B, toutes les lignes de A qui avaient l'ID de B qui a été supprimé doivent être également supprimées.

    Comme B ne dépend de A, il a sa vie propre. Donc si un attribut de B change, A s'en fout ! L'ID de B reste le même et la clé étrangère dans A reste la même.

    Si tu veux sauvegarder l'ancienne valeur de B, il faut créer une table d'historique de B.
    1ère solution : la table d'historique a la même structure que B avec une colonne de date de modification en plus.

    2ème solution : la table d'historique ne stocke que ce qui a été modifié
    HistoriqueB(H_IdB, H_DateModif, H_AttributModifié, H_Valeur)

    3ème solution (un mix des deux) : la table historique a la même structure mais on n'y enregistre que les colonnes modifiées.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 66
    Points
    66
    Par défaut
    merci de la réponse c'est très intéressant
    je vais opter pour la 1ere solution qui ressemblait à la mienne mais nettement mieux car il y a un vrai historique avec les dates


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

Discussions similaires

  1. Historique des modifications de prix
    Par Kamembert dans le forum Requêtes
    Réponses: 6
    Dernier message: 31/07/2009, 14h54
  2. historique des modifications
    Par linuxxp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/02/2009, 07h24
  3. modification de donnée avec historique des modifications
    Par frans_2000 dans le forum Modélisation
    Réponses: 2
    Dernier message: 30/12/2007, 12h10
  4. Réponses: 4
    Dernier message: 06/10/2006, 15h24
  5. historique des modifications oracle
    Par Titibirdy dans le forum Oracle
    Réponses: 4
    Dernier message: 07/06/2006, 17h14

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