Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Freundschaft o.ä. in relationalen Datenbanken abbilden

Diskussion: Freundschaft o.ä. in relationalen Datenbanken abbilden im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo! Ich habe folgendes Problem: Ich möchte (nur ein Beispiel) eine Freundschaft zwischen zwei Benutzern (also wie z.B. bei ...

Antwort
Alt 25.11.10, 21:36   #1 (permalink)
 
Benutzerbild von rami
 
Registriert seit: 09.02.08
rami Leistung: Facit NTK
rami eine Nachricht über ICQ schicken rami eine Nachricht über Skype™ schicken
Likes: 0
Standard Freundschaft o.ä. in relationalen Datenbanken abbilden

Anzeige

Hallo!

Ich habe folgendes Problem: Ich möchte (nur ein Beispiel) eine Freundschaft zwischen zwei Benutzern (also wie z.B. bei Facebook) in meiner MySQL-Datenbank speichern. Derzeit finde ich keine bessere Lösung als eine Tabelle 'friendship' mit den Feldern 'user_a' und 'user_b'. Gibt es eine Möglichkeit, die beiden User irgendwie "gleichwertig" zu speichern? Gibt es eine elegante Möglichkeit, solche Beziehungen abzubilden oder bin ich hier an eine Grenze des relationalen Datenbankmodells gestoßen?

Bin über anregungen sehr dankbar.

Gruß
Raphael

__________________
rami ist offline   Mit Zitat antworten
Alt 25.11.10, 21:47   #2 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Naja, so wie du es beschreibst, wird typischerweise eine n:m Relation abgebildet.
Code:
PK | MemberA | Member B
---+---------+---------
 1 | 127     | 25
 2 | 11      | 25
 3 | 21      | 31
...
Wenn du großen Wert darauf legst, dass die Verbindung "gleichwertig" ist, kannst du einen Hypergraphen konstruieren. D.h., du gibt einer Verbindung eine zusätzliche ID, über die du zwei (oder mehr) Partner zusammenfügen kannst.
Code:
PK | ConnID | Member
---+--------+---------
 1 | 1      | 127
 2 | 1      | 25
 3 | 2      | 11
 4 | 2      | 25
 5 | 3      | 21
 6 | 3      | 31
...
Natürlich kannst du auf diese Weise auch mehr als zwei Teilnehmer zu einem Team zusammenfassen. Eine Verbindung hat dann immer so viele Zeilen, wie Teilnehmer zu diesem Team gehören.
Um alle Teams zu erhalten, musst du nach der ConnID gruppieren ("select ... group by ConnID"). Um alle Teams zu erhalten, zu denen ein Teilnehmer gehört, kannst du alle ConnIDs suchen, die zu dem Member gehören.
Und so weiter...

mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter

Geändert von metax. (26.11.10 um 16:15 Uhr)
metax. ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Freundschaft o.ä. in relationalen Datenbanken abbilden
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61