2012-04-23 5 views
5

Ich woking auf ein Projekt und ich denke über den Follower und folgende System wie twitter.Ich habe Mitglieder Tabelle auf Datenbank.Wie kann ich Follower System.Whats ist die Logik? Ich arbeitete über so etwas: Ich schuf neue Tabelle, der Name folgt und ich habe 3 rows.Diese Zeilen sind id, user_id, follower_id. Ist das genug für mich? Ich habe keine Ahnung, wie dieses System funktionieren kann. Kannst du mir helfen?Was ist die Logik der Following- und Follower-Systeme?

+1

Dies scheint ein vollkommen akzeptables Design. Sie können Follower eines Benutzers finden, indem Sie in 'user_id' nach diesem Benutzer suchen und herausfinden, wem ein Benutzer folgt, indem Sie in 'Follower_ID' nach diesem Benutzer suchen. Möglicherweise möchten Sie zusätzliche Metadaten wie einen Zeitstempel hinzufügen, damit Sie wissen, wann die Beziehung zuletzt aktualisiert wurde. Je nach Anwendungsfall können Sie auch verfolgen, wann die Beziehung begonnen oder beendet wurde. – Ina

+0

_ "Ich habe eine neue Tabelle erstellt, der der Name folgt und ich habe 3 Zeilen" _ - du meinst "3 ** Spalten **"? –

Antwort

5

Ja, das Design für eine einfache folgendes System ausreichend ist wie das von Twitter. Natürlich können einige zusätzliche Daten (wie der Zeitstempel, wie von @Ina vorgeschlagen) nützlich sein und Sie brauchen nicht unbedingt die id darin.

würde ich so etwas empfehlen:

userID INT PRIMARY, 
followID INT PRIMARY, 
creationTime DATETIME 
0

Angenommen, Sie haben eine einzelne Entität von People, müssen Sie eine Viele-zu-Viele-Beziehung von People zu People erstellen. In Ihrer Verknüpfungstabelle haben Sie zwei Spalten: PeopleID und Following.

Um nach Followern eines Benutzers zu suchen, suchen Sie in der Spalte Following nach der ID dieses Benutzers. Suchen Sie in der Spalte PeopleID nach, wem ein Benutzer folgt.

5

"Folges" (oder "wird gefolgt von") ist eine Beziehung zwischen zwei Benutzerentitäten, die Ihre Tabelle widerspiegelt.

Dies bedeutet, dass Sie nicht einmal die id benötigen, es sei denn, Sie planen mehrere Folgen und Abfolgen zwischen den gleichen Benutzern als separate Einträge zu behandeln.

Machen Sie den user_id und follower_id Referenz user mit einem FOREIGN KEY, machen sie sowohl einen zusammengesetzten Primärschlüssel und erstellen Index auf follower_id (eine Liste der Benutzer zu erhalten folgt man schnell):

CREATE TABLE 
     follows 
     (
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 
     PRIMARY KEY 
       (user_id, follower_id) 
     KEY follower_id (follower_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 

Sie können andere hinzufügen Attribute auch.

Wenn Sie verfolgen möchten, folgt und unfollows zwischen den gleichen Benutzer dann müssen Sie diese zu einer Einheit fördern, ein Surrogat Primärschlüssel hinzu:

CREATE TABLE 
     follows 
     (
     id INT NOT NULL PRIMARY KEY, 
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 

     -- These are additional attributes 

     follows_from DATETIME NOT NULL, 
     follows_till DATETIME, 

     -- 

     KEY follower_id (follower_id), 
     KEY user_id (user_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 
0

Angenommen, Sie haben bereits eine Website, wo sich Benutzer anmelden, werden Sie eine Tabelle in der Datenbank mit zwei Spalten hinzufügen möchten, entweder ‚Friend1‘ und ' friend2 '(unter der Annahme, dass Freundschaft eine bidirektionale Beziehung ist) oder' leader 'und' follower '(für die unidirektionale Beziehung eines Abonnements). Dann werden Sie ein kurzes PHP-Skript benötigen, das friend1 und friend2 als Eingaben akzeptiert (z. B. als POST- oder GET-Variablen) und dieses Paar in die Datenbank eingibt. Fügen Sie schließlich eine Schaltfläche auf Ihrer Website hinzu, die entweder einen AJAX-Aufruf an dieses PHP-Skript oder Teil eines HTML-Formulars, dessen Ziel das PHP-Skript ist.

Verwandte Themen