Organisation BDD d'un système de Follow

Par FactureHero.com, il y a 10 ans


Base de données MySQL

Hello,

J'ai mis en place un système de follow (oui comme twitter :) ) sur un de mes sites.
J'ai opté à l'origine pour une structure de BDD qui me semble la plus évidente :

exemple de fonctionnement : lorsque l'utilisateur qui a l'id 1 suit l'utilisateur qui a l'id 2,
une entrée se crée dans la table comme suit :
id => 1
follower_id => 1
following_id => 2

Cette méthode fonctionne, cependant y aurait une autre façon (plus performante) d'organiser un système de follow en BDD ?

5 réponses

FactureHero.com, il y a 10 ans

J ai mis un id pour une question de logique : On n a qu une entrée si un user suit un autre user (il ne peut pas le suivre 2 fois). et je m en sers pour supprimer cette entrée lors d un unfollow.

Merci de la piste que tu donnes @arnish , Je vais y réfléchir.

En revanche Ce ne serait pas plutôt sur le following_id (le suivi) qu il faudrait mettre l index ? sachant que la requête sera le plus souvent de chercher tous les followers_id associés à un following_id (en clair afficher les followers d une personne)

Laznet, il y a 10 ans

Déjà tu pourrais (pour vraiment faire comme Twitter ou Facebook) utiliser de l'Ajax.
Histoire de rendre les requêtes PHP asynchrone.
Tu évite donc un rechargement de la page à chaque "Follow".
Graf' a fait un tuto (dispo ici) sur le sujet.

FactureHero.com, il y a 10 ans

heuuu oui c'est déjà fait @mika445 (le follow se passe déjà en Ajax sur mon projet :) ) , mais c'est pas la question : On n'est bien sur l'organisation en BDD, pas sur une question de requête sinon j'aurai posté sur le forum JS ou PHP ;)

arnich, il y a 10 ans

salut

Dans la table follow je ne vois pas l'intérêt de mettre un id.
Ta clef primaire serai le couple id_follower, following_id.

Le plus important celon moi est de mettre un index sur l'id_follower.

Pour commencer je pense que c'est déjà pas mal. Par la suite il y a d'autres optimisations de bdd qui existent mais je ne sais pas si c'est implémenté dans MySQL et je ne connais pas le nom

kewai, il y a 10 ans

Je rejoins Arnich,

Vu que tu es sur du mysql, tu n'as pas non plus 36.000 solutions :)