Je souhaite concevoir une base de données pour une application Web dans laquelle l'utilisateur peut accéder à des onglets particuliers en fonction des autorisations accordées à un rôle.
Ce que j'ai fait jusqu'à présent, c'est que j'ai créé deux tables SER_TABLE et SER_ROLES.
SER_TABLE a les champs ci-dessous:
SER_ROLES a les champs ci-dessous:
id (clé primaire)
nom_rôle (par exemple ADMIN, TAB1_USER, TAB2_USER)
date_crée
Ici, l'utilisateur ayant role_name " ADMIN " peut voir tous les onglets, les autres utilisateurs peuvent accéder uniquement à des onglets spécifiques.
Ma question est de savoir si j'ai besoin de créer une table SER_PERMISSIONS ayant une clé étrangère dans SER_ROLES table avec les champs ci-dessous:
ou dois-je gérer cela au niveau de mon code? Quels seraient les inconvénients et les avantages des deux approches?
Comme l'a écrit krokodilko dans son commentaire, cela dépend du niveau de flexibilité dont vous avez besoin.
J'ai implémenté les autorisations basées sur les rôles pour l'un de mes clients comme suit:
Mais mon exigence était d'être le plus flexible possible, et c'est un système qui ne cesse de croître (6 ans et plus).
Je suppose que de nombreuses applications peuvent faire en sorte que l'utilisateur joue le rôle de relation un à plusieurs, au lieu de plusieurs à plusieurs comme dans mon cas, mais je n'irais pas avec des autorisations de codage en dur ou un rôle vers des autorisations dans n'importe quelle application.