christian: wie realisiere ich eine Freundesliste?

Hallo,
ich versuche gerade eine einfache kleine community auf Grundlage von php und mysql zu schreiben. Nun will ich eine Freundesliste realisieren, bin mir aber nicht wirklich sicher, wie ich das am besten anstelle.
Meine Idee: alle Freunde einer Person (bzw. deren id), speichere ich in EINEM Feld, trenne sie durch Komma und löse sie bei Bedarf jeweils mit der explode-Funktion auf. Das Problem dabei ist, dass ich die Daten in diesem Array anschließend nicht (nach Anfangsbuchstaben) ordnen kann.
Wie realisiseren große Communitys ihre Freundeslisten???

  1. Wie realisiseren große Communitys ihre Freundeslisten???

    Indem sie die Daten in einer Datenbank speichern und bei Bedarf abrufen..

    1. Wie realisiseren große Communitys ihre Freundeslisten???
      Indem sie die Daten in einer Datenbank speichern und bei Bedarf abrufen..

      Ja, schon klar. Mich interessiert aber WIE sie das machen. In einem Array oder gibt es für jedes Mitglied auf der Freundesliste ein extra-Feld oder werden die Daten für eine Freundesliste in einer extra-Tabelle gespeichert?

      1. Ja, schon klar. Mich interessiert aber WIE sie das machen.

        Da gibt es viele Varianten.
        Man könnte beispielsweise eine Tabelle nehmen, mit der ID des Users verknüpfen und die Freunde eintragen:

        Tabelle User:

        ID | User
        1  | John
        2  | Doe

        Tabelle Freunde:

        ID | NameDesFreundes
        1  | Bla
        1  | Blubb
        2  | Foo
        3  | Bar

        etc..

        1. Servus,

          Man könnte beispielsweise eine Tabelle nehmen, mit der ID des Users verknüpfen und die Freunde eintragen:

          Streich das "beispielsweise". Es ist die einzig sinnvolle Möglichkeit ;)

          ID | NameDesFreundes

          Wobei man hier doch besser die ID des Freundes speichert.

          Zur besseren Veranschaulichung
          Tabelle User:
          id | user
          1  | John
          2  | Doe
          3  | Foo
          4  | Bar
          etc.

          Verknüpfungstabelle
          user_id | friend_id
          1       | 2
          1       | 4
          2       | 1
          4       | 3
          etc.

          Gruss
          Patrick

          --
          sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
          1. Wobei man hier doch besser die ID des Freundes speichert.

            Wobei man dann alle Daten doppelt hat, weil man eine Tabelle User und eine Tabelle Friends braucht, in denen dann das gleiche steht.
            Dann lieber nur die User_ID nehmen:

            Zur besseren Veranschaulichung
            Tabelle User:
            id | user
            1  | John
            2  | Doe
            3  | Foo
            4  | Bar
            etc.

            Verknüpfungstabelle
            user_id | user_id_vom_freund
            1       | 2
            1       | 4
            2       | 1
            4       | 3
            etc.

            Gruss
            Patrick

            1. Servus,

              Wobei man dann alle Daten doppelt hat, weil man eine Tabelle User und eine Tabelle Friends braucht, in denen dann das gleiche steht.

              Nein. die friend_id bezieht sich natuerlich auch auf die id des users in der user-Tabelle. Ausgehend von...

              Tabelle User:
              id | user
              1  | John
              2  | Doe
              3  | Foo
              4  | Bar
              etc.

              Verknüpfungstabelle
              user_id | friend_id
              1       | 2
              1       | 4
              2       | 1
              4       | 3
              etc.

              ...hat also John sowhol Doe als auch Bar in der Friendslist, Doe hat John in der FL, Foo niemanden und Bar hat Foo als Freund.

              Gruss
              Patrick

              --
              sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  2. ich versuche gerade eine einfache kleine community auf Grundlage von php und mysql zu schreiben. Nun will ich eine Freundesliste realisieren, bin mir aber nicht wirklich sicher, wie ich das am besten anstelle.
    Meine Idee: alle Freunde einer Person (bzw. deren id), speichere ich in EINEM Feld, trenne sie durch Komma und löse sie bei Bedarf jeweils mit der explode-Funktion auf.

    Ja, das wird gerne gemacht, ist aber mangelhaft. Besser wäre eine zweite Tabelle "Beziehungen" (können ja auch Blacklists sein, die zusammen mit den Whitelists in der genannten Tabelle verwaltet werden), die die IDs des Listenden und des Gelisteten speichert. Auf die Kombination der beiden IDs zusammen mit dem Beziehungtyp (black, white, etc.) könntest Du einen Index setzen, der verhindert, das ein und dieselbe Information (bspw. bedingt durch einen Programmfehler) in der datenhaltung landet.