Partage
  • Partager sur Facebook
  • Partager sur Twitter

Relations entre 3 tables

Sujet résolu
    4 avril 2011 à 22:32:45

    Bonjour,

    Je viens vers vous car j'ai un problème d'organisations au niveau de mes tables. Mon schéma est le suivant :

    Une table admins qui contient un id et des infos sur les admins
    Une tables users qui contient un id et des infos sur les users
    Une table assistances qui contient un id et des message
    Une table conversations qui sert de pivot pour regrouper les messages issus de la table assistances en conversation (id, admins_id, users_id, assistances_id).

    Ce que je veux :

    1) Mise à jour de la table admins (id) -> modification (id) table conversations
    2) Mise à jour/Suppressions d'un users (id) -> modification/supression d'un user
    3) Mise à jour d'un message d'assistance -> modification (id) table conversations
    4) Suppression d'un user -> supressions des messages dans assistances et dans conversations.

    Mon problème :

    J'arrive à obtenir tous les points ci-dessus en déclarant admins_id et users_id comme lié à leur table respective (mères) et en déclarant assistances_id comme lié à sa table (assistances, fille).

    Le soucis qui se pose, je ne peux pas organiser cela comme ça puisque ma table assistances devient une table fille de conversations, or je ne peux pas créer de message dans assistances sans liens avec conversations (c'est un non-sens, une conversation ne peut pas exister sans message initial).

    Comment puis-je donc organiser mes relations pour répondre au points numéro 4 ?

    Cdlt, sam
    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2011 à 12:13:50

      Salut
      Si je comprend bien ton problème se pose lorsque tu supprimes un user. Dans ce cas, tu souhaites également supprimer toutes les conversations qui impliquent ce user.
      L’idéal est donc de supprimer le user de la table user puis de supprimer toutes les lignes de la table conversations via le user_id et également supprimer toutes les lignes de la table assistances via l'id (et donc l'assistance_id)

      Pour cela il suffit de faire les jointure entre les 3 tables impliqués avec une conditions where sur le user_id et de faire la suppression
      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2011 à 12:17:47

        Salut !

        Et en utilisant la fonction ON DELETE CASCADE cela ne serait pas plus simple ?
        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2011 à 12:37:07

          Merci de ta contribution angelo mais je ne souhaites pas appliquer de jointures sur mes requetes mais de créer un schéma relationnel avec des foreign key comme l'a re-suggérer valentin.

          Ce que je n'arrivais pas à faire c'est en supprimant un utilisateur, supprimé à la fois les messages contenus dans assitances et les conversation dans conversations. J'ai finalement solutionné mon problème en ajoutant un user_id dans assistances (la table user devient donc la mère de deux tables).

          Cdlt
          • Partager sur Facebook
          • Partager sur Twitter

          Relations entre 3 tables

          × 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