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

Langage SQL Discussion :

Mise à jour des données sur BDD utilisant la technique des Meta Donnée


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Mise à jour des données sur BDD utilisant la technique des Meta Donnée
    Bonjour,

    Je tente d'utiliser dans ma BDD la technique des méta données décrite ici (tout du moins sur une partie de ma BDD).
    J'utiliserai cette technique car elle s'applique bien à mon cas, càd que je dois enregistrer dans ma BDD des résultats d'une visite médicale qui comporte énormément de possibilités de résultat alors que très peu sont renseignés par l'utilisateur de mon programme. Cela permet dont de n'enregistrer dans la BDD que les données qui ont été renseignées.

    J'ai donc une seule table donnee_bilan_medical qui contient 4 colonnes :

    IdAuto(entier) - Id_NomChamp(entier) - Id_bilanMedical(entier) - valeur(chaîne 50)


    Exemple:
    Pour un bilan médical qui a un ID=5, dès que j'ai une donnée renseignée par l'utilisateur pour ce bilan_medical, j'ajoute une ligne à ma table donnee_bilan_medical avec cette donnée.
    Exemple :

    1 - 12 (=Id de resultatVueGauche) - 5 (=IdBilan) - "8/10"
    2 - 17 (=Id de resultatVueDroite) - 5 (=IdBilan) - "7/10"
    3 - 122 (=Id de resultatOuïeDroite) - 5 (=IdBilan) - "Bon"

    Par après, lors de la lecture des information depuis la BDD, je rempli les membres d'une instance de classe avec les informations.
    J'ai donc mon cBilanMedical qui contient 150 membres dont seulement 3 sont renseignés.

    Ma question concerne la mise à jour des ces informations.
    En effet, en cas de modification d'une information déjà dans la BDD, est-il préférable
    -> d'essayer de "retenir" l'ID de chacun des résultat dans des nouveaux membres de ma classe qui s'appeleraient IDresultatVueGauche, IDresultatVueDroite, ID resultatOuïeDroite,...). Ainsi, si je dois enregistrer une modification, je fais une mise à jour de l'enregistrement grâce à son ID

    -> ou d'utiliser la technique qui consiste à supprimer tous les enregistrements donnee_bilan_medical dont l' Id_bilanMedical = 5 et ensuite d'ajouter tous les résultats de ma classe dans de nouveaux enregsitrements (quitte à utiliser les transactions pour être sûrs d'avoir bien les nouveaux résultats avant d'effacer les anciens).

    Merci d'avance pour toute suggestion

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Il vaut mieux ne modifier que ce qui est modifié par l'utilisateur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    et donc en plus de l'id de chaque information je dois aussi avoir un tag qui permet de savoir lequel a été modifié?

    Donc pour chaque champ, je devrais avoir dans ma classe :

    resultatVueGauche
    IDresultatVueGauche
    tag_resultatVueGauche_modifié (mis à vrai seulement si la donnée a été modifiée par l'utilisateur)

    ?

    Je peux aussi peut-être créer une structure qui sera utilisée pour chaque champ.
    Exemple :
    structure STDonneeBilan avec comme "membres"
    STDonneeBilan:ID
    STDonneeBilan:Nom
    STDonneeBilan:tag_modifié

    ?

    Merci en tout cas pour la réponse...

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Je ne comprends pas trop la salade logicielle qui se trame derrière mais je reprends votre exemple de données :
    IdAuto(entier) - Id_NomChamp(entier) - Id_bilanMedical(entier) - valeur(chaîne 50)
    1 - 12 (=Id de resultatVueGauche) - 5 (=IdBilan) - "8/10"
    2 - 17 (=Id de resultatVueDroite) - 5 (=IdBilan) - "7/10"
    3 - 122 (=Id de resultatOuïeDroite) - 5 (=IdBilan) - "Bon"
    Si l'idBilan correspond au bilan d'une seule personne à une date donnée, à la limite, l'idAuto est inutile et le couple {IdBilan, Id_NomChamp} est clé candidate de la table (il peut constituer la clé primaire).
    Dès lors, si je veux modifier la valeur de resultatVueGauche de l'IdBilan 5, je peux faire simplement cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE la_table
    SET valeur = '9/10' 
    WHERE Id_BilanMedical = 5
        AND Id_NomChamp = 12
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    En effet, c'est une très bonne solution à laquelle je n'avais pas pensé (je suis novice en BDD et en plus autodidacte... toutes les tares )

    désolé pour la réponse tardive, j'étais au ski la semaine passée !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/10/2011, 19h09
  2. Réponses: 14
    Dernier message: 28/05/2010, 16h16
  3. Macro mise à jour de liens sur des classeurs externes (excel)
    Par Border_xls dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2007, 11h04
  4. Réponses: 1
    Dernier message: 27/06/2007, 11h31
  5. [MySQL] Obtenir des statistique sur l'utilisation de la bdd
    Par duplo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/09/2005, 01h23

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