Wie speichere ich bidirektionale Beziehungen in einem RDBMS wie MySQL?

Angenommen, ich möchte Beziehungen zwischen den Benutzern meiner Anwendung an sich speichern, ähnlich wie bei Facebook.

Das heißt wennA ist ein Freund (oder eine Beziehung) vonB, dannB ist auch ein Freund vonA. Um diese Beziehungen zu speichern, plane ich derzeit, sie wie folgt in einer Tabelle für Beziehungen zu speichern

  UID      FriendID
 ------    --------
 user1      user2
 user1      user3
 user2      user1

Ich habe hier jedoch zwei Möglichkeiten:

Der typische Fall, in dem ich beides speichern werdeuser1 -> user2 unduser2->user1. Dies nimmt mehr Platz in Anspruch, erfordert aber (zumindest in meinem Kopf) nur einen Durchgang über die Zeilen, um die Freunde eines bestimmten Benutzers anzuzeigen.Die andere Option wäre entweder zu speichernuser1->user2 ODERuser2->user1 und wann immer ich alle Freunde von finden willuser1Ich frage in beiden Tabellenspalten nach, um die Freunde eines Benutzers zu finden. Es wird die Hälfte des Platzes in Anspruch nehmen, aber (wieder zumindest in meinem Kopf) doppelt so viel Zeit.

Ist meine Argumentation zuallererst angemessen? Wenn ja, gibt es dann irgendwelche Engpässe, die ich vergesse (in Bezug auf Skalierung / Durchsatz oder irgendetwas)?

Grundsätzlich gibt es keine Kompromisse zwischen den beiden, außer den hier aufgeführten. Auch in der Industrie wird eins dem anderen vorgezogen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage