2012-04-12 6 views
2

Ich mag würde, damit Benutzer andere Benutzer folgen, wie mit Twitter, Instagram usw. Bin denken, dass dies sollte Tabellenstruktur so etwas wie folgenden Angaben enthalten:PHP/MYSQL/social network besten pracice Tabellenstruktur für die Anhänger

Benutzer mit Benutzer-ID, Passwort, E-Mail, fname, lname

Verfolger mit userid1 (INT), followstatus (TINYINT), usererid2 (INT)

neue Zeile erstellt wird, wenn user1 user2 zu folgen entscheidet. Der spätere Follow-Status kann deaktiviert werden, wenn Benutzer1 entscheidet, user2 nicht mehr zu folgen. Es gäbe einen separaten Eintrag, wenn user2 dem Benutzer 1 folgt

Ich kann Benutzer1, die er folgt mit Abfrage zu dieser Tabelle sagen. Und sagen Sie den Benutzern, wie viele Personen sie mit der Count-Abfrage verfolgen. Dann, abhängig von dieser Beziehung, drucken Sie die Informationen zu user2s Aktionen (followee) zu user1 (Follower) aus.

Ist das die beste Vorgehensweise? Oder ist da mehr dran .... Gibt es noch andere Felder, Tabellen?

Hinweis: Benutzer haben eine andere Tabelle von Menschen, nicht unbedingt Benutzer, aber ich denke, Follower-Status sollte in separaten Tabelle sein.

Antwort

4

Das sieht gut aus. Eine Anmerkung: Wenn Ihr Projekt wirklich abhebt, werden Sie bald aus einem einzigen Computer herauswachsen und müssen shard werden. Das bedeutet, dass Sie Ihre Benutzer- und Relationstabellen in kleinere aufteilen müssen. Es ist ein großes Thema und außerhalb des Geltungsbereichs.

Sobald Sie sie brechen, wird eine bestimmte Art von Abfragen schwierig oder unmöglich.

Zum Beispiel, jetzt ist es einfach abzufragen, "wer folgt mir".

select * from followers where user2 = me; 

oder "wem folge ich?"

select * from followers where user1 = me; 

Sobald Sie den Anhänger Tisch zu brechen, eine dieser Abfragen wird unmöglich sein (da die Daten können mehrere Tabellen/Datenbanken/Server überspannen). Um dies zu vermeiden, möchten Sie möglicherweise zwei Tabellen erstellen:

und fügen Sie entsprechende Datensätze für jede neue Beziehung ein.

Dies ist nur die Spitze des Eisbergs. Begeben Sie sich auf diese Reise und Sie werden viele interessante Probleme zu lösen finden :)

+0

Ihr zweiter Punkt macht Sinn für mich, und ich denke, es ist eine gute Richtung. Vielen Dank. –

0

Ich denke, Sie sind auf dem richtigen Weg. Eine Tabelle mit Benutzern ist ein Muss. Die zweite Tabelle ist das, was die Anhänger mit den Folgern verbindet. Dadurch können Sie festlegen, wer wem folgt, Beziehungen für beide Benutzer in beiden Richtungen zulassen und Abfragen vereinfachen. Außerdem speichern Sie wichtige Informationen nicht zweimal. Das Entfernen einer Beziehung ist auch mit einer einzigen Löschabfrage einfach.