Bonjour.
Pour une fois, c'est moi qui pose un problème !
D'un côté, nous avons des utilisateurs :
- de type "membre" qui peuvent déposer des infos et commenter les infos des autres membres.
De l'autre côté, nous avons des utilisateurs :
- de type "modérateur" qui peuvent entreprendre certaines actions sur les infos et les membres ;
- de type "administrateur" qui peuvent faire les mêmes actions que les modérateurs et qui doivent valider certaines actions des modérateurs.
Pour commencer, j'ai modélisé un héritage des utilisateurs, en considérant que puisque les administrateurs peuvent faire les mêmes actions que les modérateurs, les administrateurs sont des modérateurs avec plus de pouvoir :
Administrateur -(1,1)----Etre----0,1- Modérateur -(1,1)----Etre----0,1- Utilisateur
Membre -(1,1)----Etre----------------------------------------------------------------------|
Ensuite, modélisons le premier côté du ring :
Membre -0,n----Déposer-----------------------------------------------------------1,1- Info
|-------------0,n----Poster----(1,1)- Commentaire -(1,1)----Concerner----0,n---|
De l'autre côté du ring, nous souhaitons enregistrer les actions entreprises. Je peux commencer à modéliser de cette façon :
Modérateur -0,n----Lancer-------1,1- Action -1,1----Typer----0,n- Type_action
Administrateur -0,n----Valider----0,1----|
Le problème est que l'action pouvant concerner soit un membre, soit une info, soit un commentaire, si j'associe l'entité Action aux trois autres entités Membre, Info et Commentaire, il faut faire trois associations en (0,1 - 0,n), ce qui multipliera les tables associatives :
Action -0,1----Concerner----0,n- Membre
|----------0,1----Concerner----0,n- Info
|----------0,1----Concerner----0,n- Commentaire
Je trouve ça lourd et je voudrais modéliser ça correctement pour n'avoir que la table issue de l'entité Action qui aurait cette structure :
Action (act_id, act_id_type_action, act_id_objet, act_ref_objet, act_date, act_id_modérateur, act_validee)
Avec act_id_objet qui serait une clé étrangère faisant référence à l'identifiant d'une table des objets modérables (Membre, Info, Commentaire, potentiellement d'autres plus tard) et act_ref_objet qui contiendrait l'identifiant du membre ou de l'info ou du commentaire (potentiellement d'autre chose plus tard) modéré. Autrement (et mal) dit, actref_objet serait une clé étrangère faisant référence à une parmi trois tables (potentiellement plus de 3). Le couple {act_id_objet, act_ref_objet} est en quelque sorte une méta-donnée sur ce qui est modéré par l'action.
Comment modéliser ça correctement et le plus simplement côté implémentation ?
Partager