jakkob: Anfangerfrage zu Datenbakstruktur

Hallo,
ich habe eine kleine Frage zur korrekten Implementierung einer Datenbank. "Angenommen" ich will so etwas wie eine von diesen Facebook-Klonen machen. Ich speichere jetzt in meiner DB in einen table zu jeder Person Name, Addresse usw. Aber wie speichere ich die Freundschaftsverknüpfungen?

1.Ich speichere in den einen großen table in ein Feld Freunde alle Freunde als String durch Komma getrennt -> werde ich wahrscheinlich von Leuten die sich mit sowas auskennen standesrechtlich erschossen...

2.Ich erstelle einen table "freunde" und füge für JEDE Freundschaft einen Eintarg hinzu. Hierzu nehme ich jeweils die IDs der Personen. Das wird wohl eher der richtige Weg sein, aber wenn ich jetzt 10.000 Leute hätte, und jeder hätte 100 Freunde, dann hat table "Freunde" ja 10.000*100 = 100.000 Einträge, die nun bei JEDER Abfrage allesamt durchsucht werden müssen, richtig? Das wäre ja auch nicht gerade effizient...

Wie macht man es nun richtig?

Danke
jakkob

  1. Hello,

    10.000*100 = 100.000 Einträge

    <überheblich>und?</überheblich>
    100.000 Einträge sind für eine Datenbank ein Alltagszustand. Im Alltagsumfeld handhaben Datenbanken gerne mal etliche Millionen Einträge pro Tabelle.

    die nun bei JEDER Abfrage allesamt durchsucht werden müssen, richtig? Das wäre ja auch nicht gerade effizient...

    jein. Wenn man sie wirklich durchsuchen müsste wäre das tatsächlich nicht effizient. Aber genau aus diesem Grund gibt es Indizes. Wenn du ein Fachbuch nimmst und einen Begriff suchst, durchsuchst du ja auch nicht das ganze Buch - das wäre nicht gerade effizient. Du schaust in den Index, da steht genau der relevante Teil des Buchs...

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Because good guys need a break every once in a while.  --  Morty in "Click" (Columbia Pictures, 2006)