[SQL] DB Tabelle- Kontakte

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Atkaz, 1. Dezember 2011 .

Schlagworte:
  1. 1. Dezember 2011
    DB Tabelle- Kontakte

    Hallo Leute,

    Ich stehe wieder mal vor einem kleinen Problem. Ich bin dabei eine tabelle zu erstellen, die Benutzer mit einander verknüpft. Genauer gesagt User A ist freund mit User B, wie bei facebook. Ich wollte nun fragen, wie eine solche DB Tabelle am besten gestaltet werden soll?

    Beispiel:
    user_1|user_2 ???

    ...hmm irgendwie ist es nicht das, was es sein sollte. Kann man denn so etwas überhaupt effizient/schnell auslesen?

    mfg
    atkaz
     
  2. 1. Dezember 2011
    AW: DB Tabelle- Kontakte

    ID der Freunde als Spalte
    mit folgendem Inhalt
    1;2;3;4;5;6;7;8;

    Danach bei ; splitten.
     
  3. 1. Dezember 2011
    AW: DB Tabelle- Kontakte

    Das ist Möglichkeit a..
    Oder Möglichkeit b (ist dann Normalisierungs-technisch auch richtig)
    Das ist eine n:m-Beziehung..
    Sprich du brauchst eine eigene Tabelle für diese Beziehung..

    Code:
    +---+---+------+
    | a | b | date |
    +---+---+------+
    | 1 | 2 | time |
    | 2 | 3 | stamp|
    +----+--+------+
    
    Somit kannst du zB auch evtl interessante Infos mitspeichern.. zum Beispiel seit wann die Personen befreundet sind und wodurch sie befreundet wurden etc..

    MfG
     
  4. 1. Dezember 2011
    AW: DB Tabelle- Kontakte

    Hmm..was ist, wenn ich jedem user erlauben will, dass er seine Kontakte in Kategorien Unterteilen kann(privat, geschäftlich etc.)

    Eigentlich könnte man das ganze ja wie folgt umsetzen:

    Tabelle:

    user_id|friend_id|kategorie_id|setting|status

    wenn nun ein Benutzer dem anderen einen Freundschaftantrag sendet und dieser dann zustimmt, würde das ganze wie folgt aussehen:


    Code:
    User A:
    user_id|friend_id|kategorie_id|setting|status
     1 2 1(privat) .... 1(zugestimmt) 
    
    -- nach dem zugestimmt-- 
    User B:
    user_id|friend_id|kategorie_id|setting|status
     2 1 1(geschäf.) .... 1(zugestimmt) 
    
    
    oder gibt es einen besseren Weg???

    Irgendwie denke ich, dass ich so wie oben beschrieben die tabelle unnötig überfülle, aber geht das überhaupt anders?

    Über vorschläge freue ich mich

    mfg
    atkaz
     
  5. 1. Dezember 2011
    AW: DB Tabelle- Kontakte

    Das was du beschreibst ist das exakt das, was ich in meinem Post darüber beschrieben habe?!
    Du hast eine Tabelle wo du 2 User-IDs aufführst..
    Einerseits die User-ID von User-A und dann die von seinem Freund.. Und dazu speicherst du dann Infos, wie kategorie etc..

    Und nein du kannst es nicht anders lösen.. (afaik)
    Zumindest nicht schön..
     
  6. 1. Dezember 2011
    AW: DB Tabelle- Kontakte

    Hallo zusammen,

    ich bin auch stark für die Lösung mittels Intersection-Table (siehe Beiträge von EraZoR).
    Aber kurz meine Meinung zur Lösung von DerEntscheider:
    Das ist möglich, natürlich. Aber ich rate eindringlichst von dieser Lösung ab.

    Warum?
    Rechne immer damit, dass Deine Anwendung groß raus kommen kann.

    Ich nehme an, die User-ID ist ein autoincrement-Feld. Und die char-separierte Liste der IDs wird evtl ein VARCHAR(XY).
    Früher oder später hast Du sehr große User-IDs im System (z.B 4032 reicht schon). Je mehr Stellen die ID hat, desto mehr Platz nimmt ein einzelner Eintrag in der Liste weg.
    Und desto weniger IDs kannst Du in der Liste speichern.

    Ergo: Irgendwann wirst Du Dich wundern, warum User X zB nur genau 306 Freunde haben kann, User Y kann nur genau 160 Freunde haben und User Z zB gar nur 50 Freunde. Und dann auf die Idee zu kommen, dass die DB Schuld ist: Viel Spaß
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.