Partage
  • Partager sur Facebook
  • Partager sur Twitter

BDD recettes

Sujet résolu
    12 janvier 2018 à 16:52:18

    Bonjour, je suis aujourd'hui confronté à un problème de conception que je n'arrive pas à résoudre.

    J'avais dans l'idée de créer un site regroupant des recettes et la possibilité d'afficher des recettes en fonction des ingrédients que l'on sélectionne, mais je suis complètement bloqué sur la structure que ma base de données devra prendre.

    Je vois une table "recettes", une table "ingrédients" et une table de jointure pour la quantité des ingrédients mais je ne vois pas du tout comment imbriquer tout ça ensemble sachant que je dois pouvoir trouver une recette à partir des ingrédients et que les ingrédients doivent être affichés dans la recette.

    J'ai commencé php et mysql depuis 6 mois environ et je n'avais besoin que de bases de données très simple pour mes précédents projets ou de bdd dont les tables n'avaient pas beaucoup besoin d'intéragir entre elles et j'avoue que là je bloque complètement.

    Si quelqu'un avait des pistes ce serait fort agréable ;)

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2018 à 18:14:48

      Bonjour,

      quel est ton problème exactement ? Ta conception paraît cohérente.

      • Partager sur Facebook
      • Partager sur Twitter
        13 janvier 2018 à 16:10:45

        Merci beaucoup pour ta réponse ! En fait c'est les ingrédients qui me posent problème imaginons une table "recette" avec par exemple comme champs "titre" "contenu" je ne sais pas comment articuler les champs "ingrédients" est ce que je créer 20 champs "ingrédients" (ingrédient_1, ingrédient_2 ... etc) qui sont remplies en fonction des besoin de chaque recette ?

        Parce que si je fait un seul champs "ingrédient" dans ma table "recette" je ne peux pas le relier à ma table  "ingrédients" si vu que chaque recette contient plusieurs ingrédients.

        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2018 à 16:25:33

          Et bien si, comme tu les disais en faisant une table de "relation", qui comprendra l'id de la recette, et l'id de l'ingrédient, tu pourras ainsi avoir deux tables "recettes" et "ingrédients" séparées et cette trosième table de liaison. Il suffit ensuite de faire une jointure "recettes"->"liaison"->"ingrédients"
          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2018 à 16:30:10

            Bonjour,

            JulienMantovani a écrit:

            Je vois une table "recettes", une table "ingrédients" et une table de jointure pour la quantité des ingrédients

            Et bien voilà ... Pourquoi rajouter des colonnes pour chaque ingrédient ?

            Le modèle "minimum" serait :

            • recette ( id_recette [pk], titre, contenu, etc. ) une ligne par recette
            • ingredient ( id_ingredient [pk], libelle, etc. ) une ligne par ingrédient possible
            • recette_ingredient ( id_recette [pk][fk], id_ingredient [pk][fk], quantite ) une ligne par couple recette/ingrédient

            Je te conseille la lecture du document "Conception BDD" (cf. ma signature).

            EDIT : Grillé par philodick ...

            -
            Edité par Benzouye 13 janvier 2018 à 16:30:39

            • Partager sur Facebook
            • Partager sur Twitter
            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
              13 janvier 2018 à 17:02:12

              Merci à vous deux ! J'y vois maintenant plus clair.

              Grillé par philodick mais ton intervention n'était pas inutile car j'avais oublié le champ pour les quantités dans ma table de jointure !

              Une dernière chose, du coup lors de la création d'une recette, L'id de la nouvelle recette n'étant pas encore créée est ce que je dois faire un "insert" dans ma table recette, suivi d'un select pour récupéré cet id à partir par exemple du nom (Qui devra être unique dans ce cas) et ensuite refaire un insert avec l'id ainsi récupéré ou est ce qu'il existe un moyen plus simple ?

              • Partager sur Facebook
              • Partager sur Twitter
                13 janvier 2018 à 17:27:38

                Tu as plusieurs solutions, soit celle que tu envisages, soit tu fait tout en même temps :  tu peux récupérer directement le dernier id inséré avec lastInsertID en pdo par exemple. Tout dépend comment tu crées ta recette.

                -
                Edité par philodick 13 janvier 2018 à 17:33:10

                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2018 à 18:28:50

                  Merci pour toute cette aide je vais essayer de me débrouiller tout seul maintenant ;) !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  BDD recettes

                  × 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