Comment représenter une relation de soi à soi en rdbms?
-
07-07-2019 - |
Question
J'espère que c'est une question idiote, mais mon cerveau est frit et je ne vois pas comment le faire maintenant.
Je déconne d'essayer de créer un truc de réseau social et devra garder la trace des "suiveurs" d'une personne. J'ai déjà créé une table d'utilisateurs, mais comment puis-je représenter l'idée d'associer des utilisateurs les uns aux autres? C’est une relation à sens unique, donc si une personne aime / aime personne b, l’inverse n’est pas forcément vrai.
La seule chose à laquelle je puisse penser est un tableau qui ne contient qu'une liste de relations individuelles, donc:
user a -> user b
user a -> user c
user a -> user d
user b -> user d
user b -> user c
...
mais cela me semble.
Merci
Simon
modifier: peut-être qu'un suiveur sur Twitter est plus analogue à ce que j'essaie de faire
La solution
Créez une table contenant uniquement les informations sur l'ID suiveur, comme suit:
id_utilisateur | follower_id
Cela devrait être ça. alors prenons par exemple l'utilisateur # 56.
il aurait probablement des lignes comme celle-ci dans la table suivante:
56 | 53453
56 | 323
56 | 463
Ajoutez simplement une contrainte unique sur les deux colonnes afin qu'il ne puisse pas contacter deux fois quelqu'un.
Autres conseils
Peut-être un tableau qui ressemble à:
RelationshipId Follower Target
Int Int Int
Où Follower est l'identifiant de l'utilisateurA, et cible est l'identifiant de l'utilisateurB, et l'utilisateurA suit l'utilisateurB.