J’ai un ptit problème de modélisation, je vous explique :
J’ai dans ma base un table “personne”, avec des tables qui en hérite (employé,…).
J’aimerai rajouter une table “news” qui contiendrait donc des news avec un public ciblé en fonction du groupe auquel elles appartiennent.
Pour le moment le meilleur moyen que j’ai trouver, est de passer par une nouvelle table ACL qui contiendrai un id, ainsi qu’une désignation (la désignation correspondrait à toutes les tables héritée de personne). Donc quand un gulu se connecte, je dois regarder avec les metadonnées dans quelle table il se trouve, récupérer l’acl correspondant et afficher les news concernant ce groupe de personne. Je trouve ça assez moche, mais je voit rien de mieux pour le moment.
A mon avis, c’est un problème récurant en bdd, alors si vous avez trouvé une solution plus intéressante, je suis preneur. Merci.
lapin compris ^^
“la désignation correspondrait à toutes les tables héritée de personne” <= ??
Tu veux afficher les news correspondant au groupe de personnes, sachant qu’il y a autant de groupes que de tables spécifiques (employé, client, contact, etc.), c’est ça ?
Tu peux décrire les tables que tu as en notation simple, genre “News(NewsId, GroupId, Title, Body)” ?
c’est ca.
Ok, et dans ta table Person, tu n’as pas de colonne “Type” qui te renseigne sur le type de personne stockée ?
Si c’est le cas voilà une solution que je vois :
Person(PersonId, Type, Name, …)
News(NewsId, TargetPersonType, Title, …)
Type est de type byte par exemple, et correspond à une énumération (1 = Employé, 2 = Contact, 3 = Client, etc.) qui renseigne sur le type de personne. Dans ta table news, tu reprend cette info dans une colonne TargetPersonType qui renseigne sur le type de personnes à qui cette news est destinée.
Donc au login, tu charges les news pour cette personne en t’aidant de son type.
Parce que le coup d’une table contenant la liste des tables qui dérivent de personne, ça sent l’usine à gaz : tu n’as pas besoin, je pense, de tant de souplesse, c’est largement suffisant, je pense, d’avoir à rajouter un nouveau nombre aux valeurs possibles de Type.
Ou si une personne peut appartenir a plusieurs groupes tu fais une nouvelle table avec un idpersonne et un idgroupe, et derriere ta table news contient le groupe cible
le problème est -comme le suggère lucas- qu’une personne peut appartenir a plusieurs groupe. L’idée de lucas me plait pas parce que redondance des données.
Redondance ? Ca ressemble à une simple relation n-n entre tes personnes et leurs groupes, non ?
Déjà, si une personne est de plusieurs types, comment fais-tu à l’heure actuelle pour savoir à quelle table il appartient ? Tu fais un select sur chaque table ?
Je suis effectivement en train de faire un select par table. B)
Quand je disais redondance c’était pour le fait que je stocke dans une table des données qui peuvent être “calculées”. Et une table complète avec tous les id des personnes présente dans la table ça risque d’être énorme.
Euh, y’a un juste milieu entre “respect absolu de non-redondance des infos” et “fonctionnel” B)
T’as combien de groupes de personnes différentes ? J’imagine qu’en plus, étant donné qu’il y a des tables pour chaque groupe, tu ne vas pas en rajouter tous les jours.
Mon chef a opté pour une autre facon de faire, du coup ca tombe a l’eau. Merci quand même pour l’aide.
[quote=“DexterWard, post:10, topic: 31582”][/quote]
Moi chuis d’accord pour Cthulhu for president.