Partage
  • Partager sur Facebook
  • Partager sur Twitter

Table de jointure

Une table de jointure pour des commandes en restauration

Sujet résolu
    19 juillet 2019 à 17:35:58

    onjour, je viens vers vous aujourd'hui car on est sur un site commerçant, pour un restaurateur. (on est en stage)

    Notre professeur nous a dit que notre schéma de base de donné était erroné et qu'il fallait faire des tables de jointures entre le panier et les condiments.

    Qu'en pensez-vous, et comment faire ? Car faire des requêtes avec des INNER JOIN pas de soucis mais une table de jointure ...

    On est sur Symfony et Mysql.

    Merci de votre aide.

    -
    Edité par Jeffbzh3 19 juillet 2019 à 18:37:18

    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2019 à 21:33:13

      Bonjour,

      Vous n'avez pas étudié les relations n, n ? Mais de toute façon, il y a d'autres problèmes de conception...

      Par exemple, comment se fait-il qu'il y ait un lien vers "sandwich" depuis "panier" ET "menu" ?

      -
      Edité par philodick 19 juillet 2019 à 21:36:12

      • Partager sur Facebook
      • Partager sur Twitter
        20 juillet 2019 à 10:42:14

        Bonjour, merci de votre réponse.

        Pas vraiment non et lors des projets les BDD était déjà sur papier.

        Par exemple, comment se fait-il qu'il y ait un lien vers "sandwich" depuis "panier" ET "menu" ?

        Cela est normal car un menu est composé d'un sandwich, mais on peut également commander seulement un sandwich.

        Donc aujourd'hui je ne voie vraiment pas comment faire des TABLES de jointure, sur internet il parle seulement de jointures, et idem dans mon livre sur le Sql. On est un peu perdu... 

        • Partager sur Facebook
        • Partager sur Twitter
          20 juillet 2019 à 15:13:09

          Bon, concrètement, il faut une table de "relation" quand deux entités peuvent être liées dans les deux sens : dans ton exemple, ce n'est pas logique de n'avoir qu'un sandwich dans un panier, tu devrais pouvoir en mettre plusieurs. Il te faudrait donc une table avec simplement l'id du menu et l'id du sandwich.

          Le vrai problème est que toutes la bdd est à revoir, tes colonnes de la table sandwich devraient être les valeurs d'une autre table "ingredients".

          .

          • Partager sur Facebook
          • Partager sur Twitter
            20 juillet 2019 à 15:59:54

            D'accord merci, donc je la fait manuellement la table. 

            Je voie un peu plus claire. 

            Oui elle est toute à refaire je sais 😅 c'est comme ça qu'on apprend !

            Après je ne comprend pas pourquoi dans ma bdd je ne peut avoir que un sandwich et avec une table de relation je pourrais en avoir plusieurs. 

            • Partager sur Facebook
            • Partager sur Twitter
              20 juillet 2019 à 17:59:35

              Comment ferai-tu alors pour avoir plusieurs sanwiches dans le même panier

              .

              • Partager sur Facebook
              • Partager sur Twitter
                20 juillet 2019 à 21:28:32

                Aucune idée ^^ Aurais ne tue une piste pour des cours sur internet, vidéo sur le sujet ou toute autre forme de tuto .

                Ou comment trouver, avec nom ? Car table de jointure je trouve uniquement les jointures, que je connais. 

                Merci de ton aide.

                • Partager sur Facebook
                • Partager sur Twitter
                  21 juillet 2019 à 10:13:29

                  Merci c'est exactement ce que je voulais, je met un  bout de pages du pdf.

                  EDIT:

                  Voici ma nouvelle base, qu'en pense tu ?

                  -
                  Edité par Jeffbzh3 21 juillet 2019 à 15:51:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juillet 2019 à 9:05:11

                    Bonjour,

                    Et comment mémorises-tu le contenu d'un menu pour un panier donné ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                      22 juillet 2019 à 9:29:50

                      Il faut que tu réfléchisses un peu plus à partir des entités, puis du type de relations entre elles.

                      Tu ne devrais pas avoir des tables identiques : par exemple "frite", "boisson", "sandwich", "dessert" devrait être regroupés dans une table "article",  en ajoutant une table "catégorie" et une colonne "id_categorie".

                      Ensuite tu n'as besoin d'une table de relation que pour les relations n,n, par exemple si on considère qu'une commande ne peut avoir qu'un utilisateur, tu supprimes la table  "liste_commande" et tu fait le lien directement entre la table "commande" et la table "utilisateur".

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juillet 2019 à 14:17:11

                        Merci pour vos réponses. On essaye de comprendre mais c'est difficile.

                        Benzouye Je ne suis pas sur de bien comprendre ta question, je dirais via la table de jointure.

                        Philodick voici ma proposition, avec ce qu'on a réussie à comprendre. C'est là aussi qu'on s'aperçoit des énormes lacunes qu'on a...

                        Et un utilisateur peut avoir plusieurs commandes, c'est pour cela qu'on a fait une table de jointure, tu penses que c'est possible d'avoir plusieurs commandes sans table de jointure .

                        Ce que j'ai du mal à comprendre, c'est par où commencer quand on se pose la question d'une relation: " un article a une catégorie mais une catégorie peut avoir plusieurs articles " Dans qu'elle sens va la relation et qui possède la Foreign key ?

                        Dans ce nouveau diagramme, je n'ai pas fait de table de jointure est vraiment nécessaire du coup .

                        Et voici avec les tables de relation: 

                        -
                        Edité par Jeffbzh3 22 juillet 2019 à 14:42:13

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 juillet 2019 à 14:46:49

                          Ok, on va essayer sans trop jargonner ;)

                          Chaque commande (donc chaque ligne de la table commande) ne peut en principe avoir qu'un utilisateur : donc pas de table de jointure mais une "clé étrangère" dans la table "commande" qui fait référence à l'id correspondant dans la table "utilisateur".

                          Même chose pour la table "panier", ce sont des relations 1,n.

                          Concrètement qu'on on a ce type de relation c'est à dire les lignes  de la table "commande" n'ont qu'un utilisateur, mais chaque utilisateurs peut avoir bien sûr plusieurs commande. Dans ce cas, une clé étrangère dans la table "commande" suffit.

                          Si chaque commande pouvait avoir plusieurs utilisateurs, là on créerait une table de relation.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 juillet 2019 à 15:00:46

                            Je vous conseille de partir du MCD. Le logiciel JMerise, par exemple, va vous aider à modéliser vos entités et leurs relations et cardinalités ...

                            Là, vous n'y êtes pas du tout et cela empire ... En plus vous rajoutez des contraintes au fur et à mesure ... maintenant il y a des ingrédients à gérer ? Ce sont des suppléments ou les composants de recettes ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                              22 juillet 2019 à 15:11:01

                              Merci pour vos réponses,

                              Ok Philodick, je voie un peu plus clair, je vais réessayer avec ça.

                              Benzouye il y a toujours eu les ingrédients, ils sont les suppléments et les composants, car le restaurateur pourra ajouter des sandwichs par la suite.

                              Je reprends ce que nous ont dit notre professeur " il faut avoir une table de jointure/relations entre les condiments et le panier sinon on ne pourra pas avoir plusieurs frites ou sandwichs dans le panier"

                              Un panier peut avoir plusieurs sandwichs, mais un sandwich n'a qu'un panier, donc pourquoi une table de jointures est nécessaire si on suit ta logique Philodick ?

                              Je n'arrive pas a comprendre depuis vendredi pourquoi ils nous as dit cela, peut-être qu'il y a plusieurs manière de procéder ?!

                              Bon j'essaye de garder du courage et je retourne dessus.

                              -
                              Edité par Jeffbzh3 22 juillet 2019 à 15:18:04

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 juillet 2019 à 15:30:47

                                Je pense que vous auriez du suivre un peu plus en cours ;) Vous pouvez reprendre vos cours Symfony par exemple. Et bien sur que les relations ManytoMany on les as vu ;)

                                -
                                Edité par DenisSanchez2 22 juillet 2019 à 15:37:26

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 juillet 2019 à 15:36:36

                                  On les a vue, mais de l'a créé une base de données entière non. C'est la logique de la base de données qu'on ne comprend pas.

                                  Comment crée une base de données à partie de rien, aurait été un bon exercice !

                                  En soi le ManyToMany ou autres n'est pas bien compliquer...Et nos cours Symfony ne nous apprennent pas à créer une base de données.

                                  -
                                  Edité par Jeffbzh3 22 juillet 2019 à 15:40:27

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 juillet 2019 à 15:49:54

                                    Tu t'enfonces là ;) puisque que justement on a créé toutes nos bases de données à partir des entités ! Code FIRST ça ne te dit rien ?

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 juillet 2019 à 15:55:03

                                      Jeffbzh3 a écrit:

                                      C'est la logique de la base de données qu'on ne comprend pas.

                                      Comment crée une base de données à partie de rien

                                      Je vous conseille la lecture du doc "Conception BDD" dans ma signature ... et l'utilisation d'un logiciel de modélisation MCD avant de faire vos tables, cela vous oblige à bien réfléchir à vos entités, leurs relations et leurs cardinalités ... Partir directement dans MySQL WorkBench c'est souvent passer à côté de choses importantes (à moins d'avoir un peu de bouteille dans la modélisation).

                                      Jeffbzh3 a écrit:

                                      il y a toujours eu les ingrédients, ils sont les suppléments et les composants, car le restaurateur pourra ajouter des sandwichs par la suite

                                      Dans tous les modèles présentés avant il n'était jamais mention d'ingrédients ... Et cela complique un peu le modèle, puisque l'on parle alors de recettes ... Plusieurs ingrédients dans des quantités variables pour faire un produit (article) ...

                                      Le MCD pourrait être :

                                      Ce qui donne le MLD suivant :

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                        22 juillet 2019 à 15:55:48

                                        Salut Denis, on avait commencé en effet par créer la base de donné depuis les entités d'abord. Cependant le résultat ne convenait pas à notre professeur, qui nous disait de rajouter des table de jointures… 

                                        Voici le résultat ci dessous. Aurais-tu une idée ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          22 juillet 2019 à 15:58:27

                                          Anthony nous as dit Base de donnée Fisrt !
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            22 juillet 2019 à 16:07:09

                                            Jeffbzh3 a écrit:

                                            C'est la logique de la base de données qu'on ne comprend pas.

                                            Comment crée une base de données à partie de rien

                                            Je vous conseille la lecture du doc "Conception BDD" dans ma signature ... et l'utilisation d'un logiciel de modélisation MCD avant de faire vos tables, cela vous oblige à bien réfléchir à vos entités, leurs relations et leurs cardinalités ... Partir directement dans MySQL WorkBench c'est souvent passer à côté de choses importantes (à moins d'avoir un peu de bouteille dans la modélisation).

                                            Jeffbzh3 a écrit:

                                            il y a toujours eu les ingrédients, ils sont les suppléments et les composants, car le restaurateur pourra ajouter des sandwichs par la suite

                                            Dans tous les modèles présentés avant il n'était jamais mention d'ingrédients ... Et cela complique un peu le modèle, puisque l'on parle alors de recettes ... Plusieurs ingrédients dans des quantités variables pour faire un produit (article) ...

                                            Le MCD pourrait être :

                                            Ce qui donne le MLD suivant :

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

                                              Merci Benzouye, on va regarder ça ! Merci pour vos réponses à tous, vous pouvez clore ce sujet et en ouvrirons un nouveau lorsque nous aurons fini de plancher dessus.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                22 juillet 2019 à 16:32:40

                                                Effectivement je trouve que cette proposition va dans le bon sens.

                                                En cours on a vu du codeFirst. Donc c'est pour ça que je vous disais de partir des Entités. 


                                                Benzouye a écrit:

                                                Jeffbzh3 a écrit:

                                                C'est la logique de la base de données qu'on ne comprend pas.

                                                Comment crée une base de données à partie de rien

                                                Je vous conseille la lecture du doc "Conception BDD" dans ma signature ... et l'utilisation d'un logiciel de modélisation MCD avant de faire vos tables, cela vous oblige à bien réfléchir à vos entités, leurs relations et leurs cardinalités ... Partir directement dans MySQL WorkBench c'est souvent passer à côté de choses importantes (à moins d'avoir un peu de bouteille dans la modélisation).

                                                Jeffbzh3 a écrit:

                                                il y a toujours eu les ingrédients, ils sont les suppléments et les composants, car le restaurateur pourra ajouter des sandwichs par la suite

                                                Dans tous les modèles présentés avant il n'était jamais mention d'ingrédients ... Et cela complique un peu le modèle, puisque l'on parle alors de recettes ... Plusieurs ingrédients dans des quantités variables pour faire un produit (article) ...

                                                Le MCD pourrait être :

                                                Ce qui donne le MLD suivant :



                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  22 juillet 2019 à 16:51:37

                                                  Je tiens a te remercier pour ton aide Benzouye, très sympas de ta part !
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Table de jointure

                                                  × 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