Partage
  • Partager sur Facebook
  • Partager sur Twitter

Organisation avec clé étrangère

    7 août 2018 à 15:04:12

    Salut à tous,

    En ce moment je bosse sur un projet qui torture la tête pour pas grand chose à un endroit.

    J'ai une table chantier qui contient : id, id_adresse, nom etc

    Une table commande qui contient : id, expediteur, destinataire, responsable etc

    Et enfin une table adresse qui contient : id, adresse, complement, code_postal, ville, pays

    Chaque chantier possède une adresse ça c'est bon. Maintenant lorsque je créé une commande, je dois choisir un expéditeur parmi les adresses de plusieurs chantiers et je stocke l'id de celle choisie dans la colonne expéditeur de ma table commande.

    Idem avec le destinataire, sauf que ici je rajoute le choix avec une adresse d'administration qui est en dur dans un fichier de config ou aucune adresse (donc NULL).

    Du coup je suis bien embêté pour stocker une valeur quand c'est l'adresse du fichier de config qui est choisie. Quelqu'un aurait une idée ?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2018 à 16:24:54

      Bonjour,

      Ne pourrais-tu pas mettre dans la table adresse toutes les adresses (chantiers et destinataires), et ajouter un champ bool "is_destinataire" par exemple, qui aurait la valeur "1" pour les adresses des destinataires?
      De cette façon, tu pourras facilement personnaliser les listes déroulantes en fonction de la demande.

      A moins que l'enregistrement des adresses destinataires dans un fichier soit un requis?

      Si oui, alors perso je rajouterais un champ "adresse_dest" (ou autre), où j'enregistrerais les adresses lorsqu'il s'agit d'un destinataire.

      Des idées en passant, je ne sais pas si ce sont les bonnes. :)

      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2018 à 16:38:40

        Merci pour ta réponse.

        Je ne sais pas si j'ai été clair dans mes explications mais que ce soit un expéditeur ou un destinataire, c'est un chantier qui possède lui une adresse rangée dans la table adresse.

        Seulement dans mon menu déroulant destinataire, en plus des chantiers je dois proposer l'adresse de l'admin qui est dans un fichier de config ou aucun destinataire.

        Pour l'instant ce que je fais c'est que si un chantier est destinataire, je stocke sa clé (ici pas de soucis), si c'est l'admin dans ce cas je stocke 0 (comme ça quand je récupère si le destinataire = 0 je sais que c'est l'admin et du coup je vais chercher l'adresse dans la config) sinon je mets NULL.

        Ce système (malgré le fait qu'il soit un peu bancal il faut avouer) fonctionne mais par contre la valeur 0 m'empêche de créer des clés étrangères sur ce champ et ça, ça m'embête un peu.

        • Partager sur Facebook
        • Partager sur Twitter
          7 août 2018 à 16:46:34

          Bonjour,

          J'ai un peu du mal à voir ce qui t'empêche de mettre l'adresse de l'admin dans ta table "adresses". Peux-tu préciser ?

          -
          Edité par philodick 7 août 2018 à 16:55:35

          • Partager sur Facebook
          • Partager sur Twitter
            7 août 2018 à 16:56:33

            Bonjour,

            J'ai pensé à modifier le fonctionnement pour la mettre dans la table adresse effectivement mais le soucis c'est que dans mon champ expéditeur/destinataire je stock l'id du chantier qui correspond à l'adresse et non pas l'id de l'adresse directement.

            Du coup je n'ai aucun chantier avec l'adresse admin. Je sais pas si je suis très clair dans mes explications

            • Partager sur Facebook
            • Partager sur Twitter
              7 août 2018 à 17:05:48

              Si on respecte ta logique, tu devrais soit intégrer dans la table chantier l'admin, soit donner à l'utilisateur la possibilité de choisir comme destinataire un chantier ou l'admin avec deux inputs différents.

              Tout dépend de l'organisation, mais on pourrait imaginer une table "structure" à la place de "chantier", en mettant à la fois les chantiers et le/les admin(s) , avec une colonne en plus pour indiquer la nature ('chantier' oui/non, ou bien "chantier", "admin", etc...).

              Mais d'une façon ou d'une autre, si tu veux que ton modèle relationnel soit cohérent, il faut faire rentrer cet "admin" dans ta bdd.

              -
              Edité par philodick 7 août 2018 à 17:07:26

              • Partager sur Facebook
              • Partager sur Twitter
                7 août 2018 à 17:11:44

                Merci d'avoir pris le temps de me répondre.

                C'est bien ça, l'utilisateur peut choisir en tant que destinataire soit un chantier, soit l'admin. L'idée de la colonne supplémentaire contenant le "type" (on va appeler ça comme ça) n'est peut-être pas si bête.

                Je vais regarder de ce côté là je pense. Pour le moment, c'est le fonctionnement le plus censé que j'ai.

                Je te remercie ;)

                • Partager sur Facebook
                • Partager sur Twitter

                Organisation avec clé étrangère

                × 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