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 ?
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
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.
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 ;)
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)