Bonjour tout le monde,
Je développe actuellement un petit site internet, pour m'entraîner et éventuellement le mettre en ligne si j'en suis satisfait.
Le "problème" c'est que je me pose des questions sur l'organisation de ma BDD concernant les relations utilisateurs/groupes/pouvoirs.
Mon idée était la suivante, un utilisateur peut appartenir à plusieurs groupes, chaque groupe peut avoir plusieurs pouvoirs, soit 4 tables:
- "users" (qui contient les données de l'utilisateur l'id notamment)
- "groupes" (qui liste les différents groupes avec l'id et le nom de groupe notamment)
- "groupes_users" (qui fait le lien entre les 2 tables précédentes, contenant donc "user_id" et "groupe_id" en clés étrangères)
- "pouvoirs" (qui contient la liste des différentes pouvoirs, id et nom simplement"
En plus, j'ai voulu ajouter la possibilité qu'un utilisateur puisse avoir un ou plusieurs pouvoir(s) de manière isolée, sans passer par un groupe (qui s'ajouterai(en)t le cas échéant aux pouvoirs qu'il tirerait des groupes auxquels il appartiendrait).
Pour ce faire j'ai ajouté une 5ème table, "apouvoirs" qui contient donc en clés étrangères le "pouvoir_id", le "apouvoir_id" (donc soit l'id d'un utilisateur, soit l'id d'un groupe), et enfin "apouvoir_type" qui contient l'entité auquel est rattaché le pouvoir donc groupe ou utilisateur.
Je vous rassure tout ça est géré grâce à un ORM (je ne suis pas totalement fou non plus ), tout fonctionne a priori, mais avant d'aller plus loin dans le développement, je demande si cette organisation est optimale, si elle ne va pas conduire à générer trop de requêtes et/ou des requêtes trop lourdes, sachant qu'il y a des développeurs chevronnés parmi la communauté j'aurais souhaité obtenir des avis, idées, remarques.
P.S.: J'espère avoir explicité clairement les relations entre les tables parce que c'est un peu compliqué.