Zum Inhalt springen

Normalisierung "Freunde"


krisss11

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...