Pattern d'une relations de dépendance

Pattern d'une relations de dépendance - SQL/NoSQL - Programmation

Marsh Posté le 14-02-2010 à 11:10:36    

Salut,
 
Question de DB patterns : Je commence à avoir situations où les utilisateurs de mon applications ont des droits "imbriqués" :
 
Droit A peut être attribué à tout le monde.
Droit B peut être attribué seulement si doit A l'est aussi.
...
 
Vous gérez ça comment vous? J'ai pensé à 2 solutions mais je voudrais votre avis:
 
- Créer un/plusieurs champs "requires_role" dans ma table des droits. Chaque champ contenant l'id du droit requis. C'est simple à mettre en place mais y a toujours la question du nombre de champs et de l'espace gaspillé. Niveau possibilité d'évolution ça me semble aussi pas optimal.
- Créer une table "roles_requirements" où chaque ligne est du type "id_role", "id_required_role" . Cette solution me semble plus simple (d'autant plus qu'elle me permettrait par le futur de créer des situations genre "droit A demande droit B ou C" plus facilement). Mais je suis pas sûr de ce que ça donne niveau performances..
 
Vous avez un avis ?  
 
Je vous remercie d'avance


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-02-2010 à 11:10:36   

Reply

Marsh Posté le 14-02-2010 à 17:29:51    

Nested Tree, cash. :o
 
Mais bon... Tu vas te faire chier pour l'UI :D

Reply

Marsh Posté le 14-02-2010 à 17:55:21    

Mmm merci pour ta suggestion :o
J'ai jamais utilisé ça (et bien entendu, dans mon livre de patterns, ils en parlent pas :'( ).  
 
Merci en tous cas :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 14-02-2010 à 21:38:26    

C'est une structure de donnée, pas un pattern ?
 
Sinon, pour gérer un arbre de dépendance, à part un arbre, je vois pas :o

Reply

Marsh Posté le 16-02-2010 à 03:35:24    

La 2e solution est la plus propre incontestablement, et au niveau perfs, je vois pas trop où est le problème, ça ne fait que rajouter une ou deux jointures, rien d'insurmontable pour un SGBD digne de ce nom.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 16-02-2010 à 09:16:00    

D'accord. Maintenant plus difficile :o :
 
Dans mon appli, actuellement j'ai la relation suivante :
 
Users <-n:n-> Roles, implémenté via une table de jointure users_roles. C'est simple à maintenir mais ça me laisse peu de flexibilité niveau granularité des permissions, car soit une personne est admin, soit il l'est pas. Pas de possibilité de lui donner tous les rôles d'admin sauf un. Ou alors il faut créer un nouveau rôle et l'implémenter dans le code.
J'aimerais passer vers une structure qui me permettrait d'avoir une permission / tâche à effectuer sur le site (genre : peut_creer_utilisateurs). Ce qui me permettrait de pouvoir donner les permissions une à une aux utilisateurs. Rien de difficile me direz vous ? Par contre j'aimerais quand même me donner la possibilité de définir des Rôles afin de pouvoir donner/retirer les permissions plus rapidement.
 
Le problème c'est que je vois pas comment implémenter cette structure de données :s Vous pouvez m'aider?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed