Antworten auf deine Fragen:
Neues Thema erstellen

Mysql - Freunde "system"

Blackout289

Nicht mehr ganz neu hier

Joo hallo Leute,
ich arbeite gerade an einer eigenen Community.
Jetzt wollte ich fragen, ob Ihr eine Idee hättet, wie ich das mit den Freunden regeln könnte.
Man soll bspw sehen,
freunda
freundb
... ist online

Ich hab mir zunächst überlegt einfach einfach eine Tabelle zu erstellen mit Freunda und Freundb und dann
"Select * From Freunde WHERE freunda = $nick(nickname) OR freundb = $nick (AND stat = online)(erstmal unwichtig^^)"

Jedoch wird dann doch auch der eigene Nick mit aufgelistet oder?
Dann hab ich überlegt einfach zwei einträge pro "beziehung" zu erstellen. Dann könnte man einfach sagen:
"Select freundb from freunde WHERE freunda = $nick"

Wäre dies dann aber nicht zu äähm Ressourcenverbratend?! :D:D

Ach ja: Es sollen Beziehungen sein, nicht wie es in manchen Forensystemen der Fall ist, dass man einfach drückt als Freund hinzufügen oder so, und dann ist die "beziehung" nur einseitig...

Hoffentlich versteht jmd was ich möchte :D
MFG Black
 

lachender_engel

Aktives Mitglied

AW: Mysql - Freunde "system"

Ich hab mir zunächst überlegt einfach einfach eine Tabelle zu erstellen mit Freunda und Freundb und dann
"Select * From Freunde WHERE freunda = $nick(nickname) OR freundb = $nick (AND stat = online)(erstmal unwichtig^^)"

Jedoch wird dann doch auch der eigene Nick mit aufgelistet oder?

...dann schließe den eigenen Nick aus der SQL-Abfrage aus.
Nach Deinem Beispiel kann die Query - erweitert- dann so aussehen:
Code:
Select * From Freunde WHERE freunda = $nick(nickname) OR freundb = $nick  (AND stat = online) AND nickname <> $nick(nickname)

Das heißt, Du schließt den Datensatz aus, der als Nickname den eigenen Namen enthält.
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

Stimmt schon.
Aber der Nickname kann bei in beiden Spalten stehen, je nach dem wer den FA stellt.
freunda|freundb
---------------
ich |du //ICH hat einen FA an DU gestellt
er |ich //ER hat einen FA an ICH gestellt

Beziehungen: Ich+du und Ich+er bzw DU +ICH und ER + ICH

DAS ist das große Problem :D
trotzdem danke =)
 

lachender_engel

Aktives Mitglied

AW: Mysql - Freunde "system"

Stimmt schon.
Aber der Nickname kann bei in beiden Spalten stehen, je nach dem wer den FA stellt.
freunda|freundb
---------------
ich |du //ICH hat einen FA an DU gestellt
er |ich //ER hat einen FA an ICH gestellt

Beziehungen: Ich+du und Ich+er bzw DU +ICH und ER + ICH

Ist das eine Tabelle von Beziehungen? Dann solltest Du schon beim Reinschreiben prüfen, ob die Beziehung schon besteht. Denn nach Deinem Beispiel habe ich zwei mal die selbe Beziehung, oder?
Mein Tipp ist die Tabelle so aufzubauen:

Spalte 1: ID
Spalte 2: nick
Spalte 3: freund

Dann machst Du eine 1:n-Beziehung.
So hast Du eine Liste welcher Nick welche Freunde hat.

Code:
SELECT freund FROM tabelle WHERE nick=$nick;

Du bekommst so ein Array aller Freund zu $nick.

P.S.: Mein Tipp ist zudem nicht mit Nicknamen sondern IDs der Namen zu arbeiten - so stimmen die Beziehungen noch, wenn sich der Nickname mal ändern (soll/kann).
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

also dann so wie meine zweite möglichkeit?
Freunda | Freundb
Ich Du //Ich hat DU als Freund
Du ich //Du hat ich als Freund
Also für jede beziehung zwei Einträge?

Dankschön^^
 

lachender_engel

Aktives Mitglied

AW: Mysql - Freunde "system"

also dann so wie meine zweite möglichkeit?
Freunda | Freundb
Ich Du //Ich hat DU als Freund
Du ich //Du hat ich als Freund
Also für jede beziehung zwei Einträge?

Dankschön^^

Mit dieser Möglichkeit kann immer nur ein Freund einen anderen Freund haben.
Mit meinem Vorschlag kann ein Freund x Freunde haben:

ID | nick | freund
01 ich du
02 ich er
03 ich sie
04 du ich
05 du er
06 ich es
07 du sie
.
.
.

Ok?
 

Duddle

Posting-Frequenz: 14µHz

AW: Mysql - Freunde "system"

Das ist eine n:m-Beziehung. Ein Nutzer kann n Nutzer als Freunde haben, ein Nutzer kann Freund von m Nutzern sein. Die Beziehung besteht also von der Nutzertabelle zu sich selbst. Diese Relation löst man mit einer Zwischentabelle.

Beispiel:
Code:
Nutzertabelle:
id | name
1  | klaus
2  | steffen
3  | maria

istFreund-Tabelle:
nutzer1 | nutzer2
1           | 3
3           | 2

Dann sind Klaus und Steffen jeweils mit Maria befreundet (und andersrum), aber Klaus und Steffen kennen sich nicht.


Duddle
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

so hab ichs ja gemeint :D also bei beiden (jaa klaaar :D:D)
@Duddle
Wie les ich dann bspw die Freunde von maria aus?
 

Duddle

Posting-Frequenz: 14µHz

AW: Mysql - Freunde "system"

Entweder kannst du mit nem zweifachen JOIN jeweils die Paarungen rausholen, dann müsstest du aber wohl in der Anwendung jeweils einen davon rausfiltern.
Oder du machst zwei Anfragen (jeweils einfacher JOIN) und fügst die über UNION zusammen (ich gehe von MySQL aus), dann musst du nicht mehr in der Anwendung selbst aufpassen.


Duddle
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

okayyyy...äähm kannst du mir vlt helfen :D
Braucht man überhaupt einen Join? Ich trag nämlich einfach die Namen direkt ein
also :
istFreund-Tabelle:
nutzer1 | nutzer2
Klaus | Maria
Maria | Steffen
Dann würde ich so wie oben vorgehen..einfach select * where...

Oder ist das Falsch?! Iwie steh ich auf dem Schlauch :D

DANKE schonmal =)
 

Duddle

Posting-Frequenz: 14µHz

AW: Mysql - Freunde "system"

Oder ist das Falsch?!

Ja, ist es.

Lies dich in die Grundlagen zur Normalisierung von Datenbanken ein, wie man Inkonsistenzen vermeidet, wann/warum eine Datenbank überhaupt relational heißt.

Mir scheint es allgemein gewagt, ohne echte Datenbankgrundlagen eine komplette Anwendung schreiben zu wollen - aber das ist nur eine persönliche Meinung. :rolleyes:


Duddle
 

saila

Moderatorle

AW: Mysql - Freunde "system"

Und zu Duddel's Tipp gleich dazu foreign key wie: . Damit kann man sich z.B. einiges sparen. Ausschlaggebend hierfür ist aber Duddel's Tipp zur Normalisierung!
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

okay dankeschön..werde ich mir bei gelegenheit mal anschauen....Also bissher bin ich recht gut mit meinem bissherigen Wissenstand zurecht gekommen =)
 

saila

Moderatorle

AW: Mysql - Freunde "system"

Gut - ich komme mit meinem Wissensstand auch sehr gut zurecht und dennoch nehme ich gerne Neues Wissen auf, zumal man in diesem Themenbereich nicht genug wissen kann. Und ob letztlich der Wissensstand auch der Performance dient oder genau das Gegenteil bewirkt - ist immer in Frage gestellt :)
 

Blackout289

Nicht mehr ganz neu hier

AW: Mysql - Freunde "system"

jo der Meinung bin ich auch.
Das mit der Performance hab ich mir auch schon überlegt :D
Kommtnochkommtnoch :D Vielen Dank mal für eure Hilfe.
Ich werde mich auf jedenfall weiter reinlesen/lernen
*top*
MFG Black
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben