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 :

Modifier un enregistrement


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut Modifier un enregistrement
    Bonjour,

    Voici mon analyse :



    Mon interface graphique me permet de choisir plusieurs moteurs pour un projet grâce à une liste.
    Mettons que je choisisse un seul moteur pour un projet, l'ajout de l'enregistrement dans la table Projet ce passe sans aucun problèmes.
    Mais comment dois-je faire si je souhaite ajouter 2 moteur à un Projet ?
    Ce qui veut dire qu'un projet sera lié à 2 moteurs.

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par BaStaub Voir le message
    Mais comment dois-je faire si je souhaite ajouter 2 moteur à un Projet ?
    Ce qui veut dire qu'un projet sera lié à 2 moteurs.
    Ben il faut changer ton modèle de données.
    Aujourd'hui, un projet ne peut être lié qu'à un seul moteur.

    Il faut donc faire la relation
    Moteur <-1,n----1,n- Projet

    Ce qui entraîne la création d'une table associative :
    Moteur_Projet (IDMoteur, IDProjet)

    Et la suppression de IDMoteur dans la table Projet.

  3. #3
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Je pensais que ma relation était correcte !

    Pour moi (et d'apres WinDev) elle veut dire :

    Moteur<1,1-- :
    • Chaque "moteur" a au moins un "projet"
    • Un "moteur" n'as qu'un seul "projet"


    --1,n-Projet :
    • Chaque "projet" a au moins un "moteur"
    • Chaque "projet" peut avoir plusieurs "moteurs"

  4. #4
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Je ne voie pas quelle requette faire pour ajouter plusieurs moteurs à un projet, qui peut m'aider svp ?

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par BaStaub Voir le message
    Je pensais que ma relation était correcte !

    Pour moi (et d'apres WinDev) elle veut dire :

    Moteur<1,1-- :
    • Chaque "moteur" a au moins un "projet"
    • Un "moteur" n'as qu'un seul "projet"


    --1,n-Projet :
    • Chaque "projet" a au moins un "moteur"
    • Chaque "projet" peut avoir plusieurs "moteurs"
    D'après vos tables, il y a une clé étrangère NumeroMoteur dans la table Projet. J'ai donc interprété les cardinalités du schéma dans le même sens que sur un diagramme de classes UML :
    Moteur -1..1----1..*- Projet

    En MCD Merise, ça donnerait plutôt ce qui suit, les cardinalités étant inversées :
    Moteur -1,n----Avoir----1,1- Projet

    Ne connaissant pas cette notation bizarre de WinDev qui n'est ni du MCD, ni du MLD, ni du DC UML mais apparemment un mélange des trois avec une signification bizarre des cardinalités, je ne pouvais qu'interpréter selon mes connaissances.

    Il y a une contradiction dans votre première règle de gestion :
    • Chaque "moteur" a au moins un "projet"
    • Un "moteur" n'as qu'un seul "projet"
    "au moins un" signifie "un et potentiellement plusieurs" et est donc en contradiction avec la deuxième partie qui stipule qu'il n'y a qu'un seul projet pour un moteur.
    Je dirais plus simplement :
    "Un moteur a un et un seul projet".

    Si un moteur n'a qu'un seul projet, en MCD on a ceci :
    Moteur -1,1----Avoir----min,max- Projet
    Et dans ce cas, c'est l'identifiant du projet qui doit se retrouver en clé étrangère dans la table Moteur et pas l'inverse.

    Par contre, la deuxième règle de gestion est claire. C'est même selon moi un pléonasme :
    • Chaque "projet" a au moins un "moteur"
    • Chaque "projet" peut avoir plusieurs "moteurs"
    Je dirais plus simplement :
    "Un projet a de un à plusieurs moteurs".
    La cardinalité est bien de 1,n et le MCD complet est le suivant :
    Moteur -1,1----Avoir----1,n- Projet

    Les tables qui en découlent doivent avoir la forme suivante :
    Projet (IDProjet, Code_projet, Commentaires_projet)
    Moteur (IDMoteur, IDProjet, Commentaire_moteur, Cylindree_moteur, Type_moteur, Refroidissement_moteur, Alimentation_moteur, Cycle_moteur)

    Ce dernier morceau de message m'a permis de me rendre compte que vous avez inséré des attributs du moteur dans le projet, ce qui n'est évidemment pas leur place !
    De plus, la clé étrangère fait référence à la clé primaire de l'autre table (IDMoteur), pas à un autre attribut (Numero_Moteur dans votre schéma).

    Il vous faut donc commencer par modifier votre modèle de données sinon vous allez dans le mur avec vos moteurs !

    A noter que d'après ce que vous dites dans votre premier message :
    Mon interface graphique me permet de choisir plusieurs moteurs pour un projet grâce à une liste.
    Le moteur existe avant le projet. La cardinalité côté moteur devrait donc être 0,1 et non pas 1,1.
    Ce qui, en toute rigueur, devrait là aussi entraîner la création d'une table associative pour éviter d'avoir une clé étrangère nulle pour les moteurs non encore affectés à un projet.

    Bref, révisez bien vos règles de gestion, refaite le bon MCD selon le formalisme Merise puis créez vos tables dans WinDev et regardez ensuite comment WinDev a fait le schéma et placé les cardinalités.

    Ca fait plusieurs fois que je vois des messages traitant de WinDev ou de son SGDB HyperFile qui ont des notations pas standard.

  6. #6
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Merci d'avoir pris le temps de m'expliquer votre point de vue. Je n'ai pas été formé pour réaliser des applications de gestion et étant donné que c'est ma première application en entreprise, c'est un peut difficile pour moi !

    J'ai bien pris note de vos remarques et j'ai modifié mon analyse pour avoir :

    Moteur -0,1----Avoir----1,n- Projet

    Cela n'as pas pour autant créé une table associative. Mais l'important c'est que j'ai réussi à faire ce que je souhaitait, même si je ne pense pas que mon traitement soit optimisé !!!

    Je procède donc de la façon suivante :

    Je créé un projet avec tout ces paramètres (Commentaire_moteur, Cylindree_moteur, Type_moteur, Refroidissement_moteur, Alimentation_moteur, Cycle_moteur). Comme vous le remarquez, ces champs appartiennent bien à la table Projet.
    Et ensuite, je modifie (UPDATE) les moteurs que je souhaite ajouter au projet en faisant : Moteur.IDProjet = Projet.IDProjet.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par BaStaub Voir le message
    Je créé un projet avec tout ces paramètres (Commentaire_moteur, Cylindree_moteur, Type_moteur, Refroidissement_moteur, Alimentation_moteur, Cycle_moteur). Comme vous le remarquez, ces champs appartiennent bien à la table Projet.
    Bizarre ! Sans plus d'explication sur la raison, admettons !
    Et ensuite, je modifie (UPDATE) les moteurs que je souhaite ajouter au projet en faisant : Moteur.IDProjet = Projet.IDProjet.
    OK

  8. #8
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Les raison sont propore à l'utilisation du logiciel.

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2006, 12h19
  2. Réponses: 7
    Dernier message: 29/11/2005, 11h07
  3. [MySQL] Un formulaire pour afficher et modifier un enregistrement
    Par Atchoum_002 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/09/2005, 14h13
  4. Réponses: 11
    Dernier message: 30/08/2005, 09h31
  5. Modifier un enregistrement.
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 17
    Dernier message: 26/08/2005, 16h50

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