Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL : Clé étrangère ne passant pas

    5 septembre 2022 à 21:13:59

    Bonsoir Mesdames, Messieurs
    Comme vous voyez, mon MySQL est taquin ce soir, il refuse d'ajouter la clé étrangère selon mes indications sous prétexte que la colonne visée n'est pas indexée, or j'ai bien introduit cette colonne au sein de la clé étrangère, aurais-je loupé quelque chose s'il vous plaît ? Merci beaucoup

    -
    Edité par Loïcperchey 5 septembre 2022 à 21:16:06

    • Partager sur Facebook
    • Partager sur Twitter
      6 septembre 2022 à 12:13:12

      Bonjour,

      Il te faut avant tout mettre un index sur la colonne class.className

      PHPMyAdmin le fait automatiquement si tu passes par le menu "vue relationnelle" pour créer ta FK.

      Par contre la forme de ta FK me paraît bizarre... ce serait plutôt l'inverse qu'il faudrait faire... person.className devrait faire référence à class.className...

      -
      Edité par Benzouye 6 septembre 2022 à 12:15:12

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        6 septembre 2022 à 15:03:00

        Merci du conseil

        Erreur de sens effectivement, merci de me l'avoir signalé


        -
        Edité par Loïcperchey 6 septembre 2022 à 16:19:41

        • Partager sur Facebook
        • Partager sur Twitter
          6 septembre 2022 à 17:52:06

          C'est idClass la clé primaire de la table class ...

          Dans la table person, supprime la colonne className, et remplace-la par une colonne idClass INT UNSIGNED avec un index dessus.

          Ensuite tu pourras mettre ta clé étrangère person.idClass REFERENCES class ( idClass ).

          Au passage dans la table dungeon, je vois des colonnes numérotées (MonsterX).

          A mon avis, il faudrait plutôt créer une table monster, et une table de relation dungeon_monster.

          Selon moi, le modèle serait plutôt :

          Par ailleurs, je ne sais pas à quoi servent les colonnes use....Spell de l'entité person, mais cela me paraît bizarre d'avoir ces 4 colonnes qui se nomment presque pareil ... Il y a là aussi sûrement quelque chose à corriger ...

          Enfin, petits détails de nommage :

          • Strength avec un S majuscule, alors que les autres attributs sont en minuscule
          • charisme. alors qu'en anglais c'est charisma

          C'est mieux d'être cohérent sur tout le modèle ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            7 septembre 2022 à 7:43:33

            Merci des conseils

            Pour les useSpell, il s'agit de booleens liés à l'usage ou non de certains types de sorts (un magicien par exemple ne pourra utiliser de sorts de prêtres et vice versa)

            • Partager sur Facebook
            • Partager sur Twitter
              7 septembre 2022 à 9:13:53

              Et pourquoi ces informations ne seraient pas portées par la class plutôt que par la person ?

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                7 septembre 2022 à 9:36:32

                Effectivement, erreur de ma part, je fais le transfert

                Edit : Je viens de regarder mon diagramme d'origine, le pire c'est que je me rend compte avoir en créant fait une inversion par rapport à ce qui était prévu à l'origine, les caractéristiques devant être au sein de la person, l'accès aux sorts dans la class

                Corrigé

                -
                Edité par Loïcperchey 7 septembre 2022 à 9:48:33

                • Partager sur Facebook
                • Partager sur Twitter
                  7 septembre 2022 à 13:52:42

                  OK

                  PS : C'est strength et non strenght ;)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                  MySQL : Clé étrangère ne passant pas

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown