Comme krokodilko l'a écrit dans son commentaire, cela dépend du niveau de flexibilité dont vous avez besoin.
J'ai mis en place des autorisations basées sur les rôles pour l'un de mes clients comme suit :
- Utilisateur (identifiant utilisateur (PK), nom d'utilisateur (unique), mot de passe (salé et haché ! ), nom, prénom, téléphone etc')
- Rôle (identifiant du rôle (PK), nom du rôle (unique), description du rôle)
- Permission (permission id (PK), permission name (unique)) - les onglets/écrans/actions vont ici
- Utilisateur vers rôle (ID utilisateur, ID de rôle) - PK est les deux colonnes combinées
- Role to Permission (role id, permission id) - PK est les deux colonnes combinées
Mais mon exigence était d'être aussi flexible que possible, et c'est un système qui continue de croître (6 ans et plus).
Je suppose que de nombreuses applications peuvent avoir l'utilisateur à jouer le rôle d'une relation un à plusieurs, au lieu d'une relation plusieurs à plusieurs comme dans mon cas, mais je n'irais pas coder en dur les autorisations ou le rôle des autorisations dans n'importe quelle application.
Explication supplémentaire :Conception de base de données de sécurité basée sur les rôles sur Qu'est-ce que je sais ?