Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MCD] Cardinalité

Sujet résolu
    18 janvier 2019 à 15:44:05

    Bonjour, 

    Je travaille sur un projet avec un site web, et j'ai besoins d'une base de donnée regroupant quelques informations. 

    Pour faire simple, imaginons un tableau à 2 dimensions avec en X -> une série de 40 paramètres et en Y - cette même série de 40 paramètres. (ex ci-dessous)




    Au croisement de deux paramètres on peut retrouver un certains nombre de principes différents (de 0 à 4)
    J'arrive donc au MCD suivant :
    Mais j'ai un problème de cardinalité au niveau de la relation entre ma case du tableau et mes paramètres ! 
    puisqu'une case contient 2 paramètres (pouvant être différents ou non) et j'imagine donc une cardinalité (2,2) de la case vers le paramètre, et une (1, n) du paramètre à la case ( je ne suis pas sûr non plus de celle-ci ) 
    Mais sur Jmerise impossible d'avoir une cardinalité (2,2) et ainsi avoir 2 clés secondaires dans la table case ... 

    Je ne sais pas si c'était très clair mais je suis bloqué et je ne sais plus vraiment que faire :/ 

    -
    Edité par Corentin M 18 janvier 2019 à 15:45:28

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2019 à 17:25:32

      Bonjour,

      Si je relis ton énoncé, selon moi tu as des paramètres liés deux par deux à des principes (entre 0 et 4, mais disons n pour simplifier).

      Le modèle pourrait être :

      Ce qui donne le MLD suivant :

      Juste à modifier le nom des colonnes id_parametre dans la table case pour les rendre plus explicite ...

      Pour maîtriser la cardinalité 0,4 la seule solution est de mettre un TRIGGER BEFORE INSERT ON case pour vérifier le nombre de relations déjà existantes pour un couple de paramètre, et d'empêcher l'insertion si >= 4 ...

      Mais peut-être que cette contrainte soit vraiment importante.

      -
      Edité par Benzouye 18 janvier 2019 à 17:27:59

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        18 janvier 2019 à 20:00:05

        Merci de cette réponse rapide ! 

        Je vois un peu mieux, en effet.
        Juste un truc qui me parait bizarre est que l'idée d'un principe se retrouve dans ma table case, alors qu'une case peut avoir plusieurs principes :/

        D’où la table intermédiaire qui aurait été créée entre case et principe et qui aurait eu une paire de clé étrangère (idCase, IdPrincipe).

        Alors que la je me retrouve avec une entrée par principe de chaque case ! ( si j'ai bien tout compris ^^ )

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2019 à 13:04:01

          Corentin M a écrit:

          un principe se retrouve dans ma table case, alors qu'une case peut avoir plusieurs principes

          En fait la "case" n'existe pas :p C'est juste une table de relation ...

          Si l'on prend l'exemple de ton tableau de départ, la table de relation case va contenir 14 enregistrements :

          • 1-1-8
          • 1-1-13
          • 1-1-29
          • 1-2-5
          • 1-2-6
          • 1-3-4
          • 1-3-2
          • 2-1-1
          • 2-1-28
          • 2-1-37
          • 2-2-19
          • 2-2-34
          • 3-1-8
          • 3-1-17
          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            19 janvier 2019 à 16:41:18

            Okkk ! Merci ! Je vais essayer comme cela alors ! ^^ 

            Juste un dernier détail, sur JMerise je n'arrive pas à faire de double relation comme vous ?! :x
            • Partager sur Facebook
            • Partager sur Twitter
              19 janvier 2019 à 19:27:58

              Sur JMerise lorsque tu crées un lien entre une relation et une entité, un trait apparaît.

              Si tu recommences, le trait écrit "Plusieurs liens ...".

              Pour voir les deux traits (puisqu'ils y sont en fait), il faut ajouter un point de cassure en double cliquant sur le lien. Cela a pour effet de créer un point de cassure au milieu du trait pour pouvoir créer un angle comme sur ma copie d'écran et ainsi voir les deux traits ...

              -
              Edité par Benzouye 19 janvier 2019 à 19:28:10

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                20 janvier 2019 à 12:21:38

                Merci beaucoup ! 

                Je passe en résolu x) 

                • Partager sur Facebook
                • Partager sur Twitter

                [MCD] Cardinalité

                × 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