Veröffentlicht 2. Juni 201411 j Hallo Leute, Ich habe momentan gerade die totale Denkblockade! Bin dabei für ein Projekt die Tabellen auf Papier zu bringen! Ich habe eine Tabelle für Benutzer und ich möchte gerne das diese Nutzer untereinander befreundet sein können. Leider fehlt mir gerade jeglicher Denkansatz um eine Beziehung zwischen den Nutzern darzustellen. Es soll im Prinzip so aussehen, User1 & User 2 sind Freunde User2 & User 3 sind Freunde User1 & User 3 kennen sich nicht Wie stelle ich das in der Datenbank da? Ich brauch keine Befehle sondern nur die mögliche Darstellung. Ihr habt doch sicherlich eine Idee oder? Gesendet von meinem C6603 mit Tapatalk
2. Juni 201411 j Wenn du die Tabelle der Benutzer schon hast benötigst du noch eine 2. Tabelle mit den verfügbaren Beziehungstypen (befreundet, unbekannt usw.) und eine 3. Tabelle deren Sätze auf 2 Benutzer und einen Beziehungstyp referentiert.
2. Juni 201411 j Nur so nebenbei: Für sowas wurde u.a. Neo4j - The World's Leading Graph Database entwickelt ... </offtopic>
3. Juni 201411 j Wenn du die Tabelle der Benutzer schon hast benötigst du noch eine 2. Tabelle mit den verfügbaren Beziehungstypen (befreundet, unbekannt usw.) und eine 3. Tabelle deren Sätze auf 2 Benutzer und einen Beziehungstyp referentiert. Wobei "unbekannt" auch sein kann, wenn einfach keine Beziehung besteht. Dann hat man nicht das Problem, dass man einen neuen Benutzer erst einmal mit jedem anderen verknüpfen muss.
3. Juni 201411 j Autor Das stimmt pr0gg3r! Aber irgendwie fehlt mir jetzt immernoch sie Verknüpfung zwischen den benutzern Gesendet von meinem C6603 mit Tapatalk
3. Juni 201411 j Fang mal einen Schritt weiter vorne an. Darf jeder Benutzer jeden als Freund eintragen können und das ist dann so. Oder muss erst die andere Seite die "Freundschaft" bestätigen?
3. Juni 201411 j Autor Soweit hab ich garnicht gedacht :-D Aber stimmt! Irgendwo muss ich das ja auch unterkriegen! Wäre nur logisch wenn die Freundschaft beiderseits wäre! Brauch ich also doch ne tabelle für die möglichen Beziehungen Gesendet von meinem C6603 mit Tapatalk
3. Juni 201411 j Nö. Würde ich dann so machen. Tabelle 1 = User (UserID) Tabelle 2 = Freundschaftsanfragen (UserID1, UserID2) Tabelle 3 = Freundschaften (UserID1, UserID2) Wenn UserA eine Anfrage an UserB stellt: 1.) select Tabelle2 where UserID1 = UserB AND UserID2 = UserA -> Dann hat nämlich User B die Anfrage schon gestellt Wenn select positiv weiter mit 3 Wenn select negativ weiter mit 2 2.) insert Tabelle2 UserID1 = UserA AND UserID2 = UserB -> quasi die Anfrage an UserB in die Tabelle schreiben -> ENDE 3.) delete from Tabelle 2 where UserID1 = UserB AND UserID2 = USERA Insert Tabelle 1 USerID1 = UserA AND UserID2 = UserB Insert Tabelle 2 UserID1 = UserB AND UserID2 = UserA (Damit beide Richtungen existieren) -> Ende Du kannst dann bei den User ja noch einbauen das so ne Übersicht kommt: Freundschaftsanfragen. Dann musst du alle anzeigen mit select Tabelle 2 where UserID2 = (eigene UserID) Du brauchst also nur 2 Tabelle mit gleichem Aufbau. Jeweils 2 Spalten mit der UserID.
3. Juni 201411 j Nö. Würde ich dann so machen. Tabelle 1 = User (UserID) Tabelle 2 = Freundschaftsanfragen (UserID1, UserID2) Tabelle 3 = Freundschaften (UserID1, UserID2) Wieso lässt du nicht die Tabelle Freundschaftsanfragen weg und setzt ein Flag, ob diese bestätigt wurde?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.