Freunde in der Datenbank für soziale Netzwerke speichern

8

Um Freunde in sozialen Netzwerken zu speichern, ist es besser, eine andere Tabelle mit den Spalten relationship_id, user1_id, user2_id, time_created, pending zu haben oder die User_id des bestätigten Freundes in eine einzige lange Zeichenfolge zu zerlegen und zusammen mit den anderen Benutzerdetails wie% co_de zu speichern % und begrenzen, um nur 5000 Freunde zu mögen, die Facebook ähnlich sind?

Gibt es bessere Methoden? Die erste Methode wird eine riesige Tabelle erstellen! Der zweite hat eine Spalte mit einer wirklich langen Zeichenfolge ...

Auf der Profilseite jedes Benutzers müssen alle seine Freunde aus der Datenbank abgerufen werden, um 30 Freunde zu zeigen, die Facebook ähnlich sind. Daher denke ich, dass die erste Methode der Verwendung einer separaten Tabelle eine große Menge an Datenbankabfragen verursacht / p>     

Nyxynyxx 08.07.2011, 00:29
quelle

2 Antworten

11

Der richtige Weg, dies zu tun, wäre, die Tabelle der Mitglieder (offensichtlich) und eine zweite Tabelle mit den Friend-Beziehungen zu haben.

Sie sollten niemals jemals Fremdschlüssel in einer solchen Zeichenfolge speichern. Was ist der Punkt? Sie können nicht an ihnen teilnehmen, nach ihnen sortieren, sie gruppieren oder andere Dinge, die eine relationale Datenbank rechtfertigen.

Wenn wir davon ausgehen, dass die Member-Tabelle wie folgt aussieht:

%Vor%

Dann sollte dein Freundschaftstisch wie folgt aussehen:

%Vor%

Dann können Sie die Tabellen zusammenfügen, um eine Liste von Freunden zu erstellen

%Vor%

(Dies ist speziell SQL Server-Syntax, aber ich denke, es ist ziemlich nah an MySQL. Die @MemberID ist ein Parameter)

Dies wird immer schneller sein als das Aufteilen einer Zeichenfolge und das Erstellen von 30 zusätzlichen SQL-Abfragen, um die relevanten Daten abzurufen.

    
Mike Caron 08.07.2011, 00:40
quelle
0

Separate Tabelle wie in Methode 1. Methode 2 ist schlecht, weil Sie sie jedes Mal unserialisieren müssen und nicht in der Lage sein werden, JOINS darauf zu machen; plus UPDATE wird ein Albtraum sein, wenn ein Benutzer seinen Namen, E-Mail oder andere Eigenschaften ändert.

Sicher, dass die Tabelle riesig sein wird, aber Sie können sie auf Member11_id indizieren, den Fremdschlüssel auf Ihre Benutzertabelle zurücksetzen und statische Zeilengrößen haben und vielleicht sogar die Anzahl der Freunde beschränken, die ein einzelner Benutzer haben kann. Ich denke, es wird kein Problem mit MySQL sein, wenn Sie es richtig machen; selbst wenn Sie ein paar Millionen Zeilen in Ihrer Beziehungstabelle treffen.

    
iHaveacomputer 08.07.2011 00:45
quelle