Avis, conseil organisation BDD

Relations utilisateurs/groupes/pouvoirs

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 :p ), 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é.

+0 -0

Si j'ai bien compris, il y a 3 relations many to many, entre users et groupes, entre groupes et pouvoirs, et entre users et pouvoirs. Personnellement je vois pas trop comment faire quelque chose de meilleur au niveau des perf, sauf au détriment de l'organisation et de la maintenabilité (et là, tu perds plus que tu ne gagnes). Cela dit c'est pas trop mon domaine d'expertise, si il y a mieux ça m'intéresse aussi.

Édité par Antho

Auteur du sujet

Concernant les relations, sur le principe c'est effectivement ça, c'est rassurant de voir que ma démarche logique n'est pas totalement incohérente. :)
Je vais quand même attendre un peu des fois que des avis différents émergent.

H.S.: Au passage je viens de découvrir ton projet (Sinapps), c'est assez impressionnant, pour le coup il doit y avoir des relations dans tous les sens.
En tous les cas chapeau bas à tes collaborateurs et toi-même pour le travail réalisé sur ce projet ambitieux et plutôt innovant.
Par contre pour les "CGU" et les conditions relatives à la vie privée c'est ennuyeux, surtout par les temps qui courent…

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte