krisss11 Geschrieben 2. Juni 2014 Geschrieben 2. Juni 2014 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 Zitieren
MartinSt Geschrieben 2. Juni 2014 Geschrieben 2. Juni 2014 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. Zitieren
lilith2k3 Geschrieben 2. Juni 2014 Geschrieben 2. Juni 2014 Nur so nebenbei: Für sowas wurde u.a. Neo4j - The World's Leading Graph Database entwickelt ... </offtopic> Zitieren
pr0gg3r Geschrieben 3. Juni 2014 Geschrieben 3. Juni 2014 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. Zitieren
krisss11 Geschrieben 3. Juni 2014 Autor Geschrieben 3. Juni 2014 Das stimmt pr0gg3r! Aber irgendwie fehlt mir jetzt immernoch sie Verknüpfung zwischen den benutzern Gesendet von meinem C6603 mit Tapatalk Zitieren
Enno Geschrieben 3. Juni 2014 Geschrieben 3. Juni 2014 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? Zitieren
krisss11 Geschrieben 3. Juni 2014 Autor Geschrieben 3. Juni 2014 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 Zitieren
Enno Geschrieben 3. Juni 2014 Geschrieben 3. Juni 2014 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. Zitieren
pr0gg3r Geschrieben 3. Juni 2014 Geschrieben 3. Juni 2014 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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.