Wie am besten und logisch einen Adressbuch realisieren?
undso
- datenbank
0 King^Lully0 undso0 King^Lully0 undso
Hallo Forum,
bin nochmal wegen einer Query Frage hier.
Hatte schon zwar maleine Frage bezüglich eines Adressbuches, ist aber paar Tage her.
Folgende Konstellation:
Tabelle Mitglieder:
UseriID Name Online Geschlecht
1 Peter 1 m
2 Udo 0 m
3 Ida 0 w
4 Robert 0 m
5 Paul 1 m
Nun meine Frage:
Ein Mitglied kann nun manuell Namen in eine Adressbuch eintragen. Beim eintragen im Formular kann das Mitglied explizit einen Usernamen angeben, dann wird die ID noch in die Tabelle "Adressbuch" eingetragen, ansonsten bleibt es leer.
Tabelle Adressbuch:
UserID FriendID Realame Notiz
1 3 Ida B. Mein Schatz
1 5 Paule Geschäftskollege
//Manuell eingefügter Kontakt
1 0 Hans Chef
Beim auslesen der Tabelle "Adressbuch" hole ich mit INNER JOIN noch den Onlinestatus und das Geschlecht von den Einträgen. Wenn jemand nun einen manuellen Eintrag vornimmt, sprich das Mitglied gibt es garnicht, funktioniert die Query nicht mehr.
1. Ist es mit einer Query möglich, das Adressbuch auszulesen, und falls FriendID nicht gleich 0 ist, dann mit einer Unterabfrage mehr Informationen von der Tabelle "Mitglieder" holt.
Sprich, dass die Ausgabe / das Ergebniss in etwa so aussieht:
FriendID Name Realname Geschlecht
3 Ida Ida B. w
5 Paul Paule m
0 0 oder NULL Hans 0 oder Null
Wenn das nicht geht, müsste ich wohl in der Tabelle "Mitglieder" einen Pseudonick erstellen mit der UserID=0, Online=0 und Geschlecht irgend etwas, so dass er bei manuellen Einträgen immer diesen Eintrag holt, bzw. mit INNER JOIN oder LEFT OUTER JOIN den Datensatz erhält.
Diesen Vorschlag hat "Rouven" schon in einem vorherhigen Thread gemacht.
2. Könnte man mein Vorhaben nicht etwas besser lösen?
Grüße
Welche Beziehung besteht zwischen "Mitglieder" und "Adressen"? Vielleicht "1:n" oder "1:1"?
1:1
Wobei ein Mitglied manuell etwas in die Tabelle "Adressbuch" eintragen kann, die es in der Tabelle "Mitglieder" überhaupt nicht gibt. Bzw. mit der FriendID=0.
Ansonsten können mehrere Mitglieder das gleiche Mitglied in die Tabelle "Adressbuch" übernehmen
1:1
Wobei ein Mitglied manuell etwas in die Tabelle "Adressbuch" eintragen kann, die es in der Tabelle "Mitglieder" überhaupt nicht gibt. Bzw. mit der FriendID=0.
Ansonsten können mehrere Mitglieder das gleiche Mitglied in die Tabelle "Adressbuch" übernehmen
Ich beobachte Dein Vorhaben ja jetzt schon seit ein paar Tagen, also Du hast die Entitäten "Nutzer", "Adressen" und "Buddies", wobei es zwischen Nutzer und Adressen ein "1:1" oder "1:n" gibt, Buddies ein "n:m" zwischen Nutzer und Nutzer darzustellen scheint, wobei auf die Kombination aus Nutzer und Nutzer_Buddy ein Index gesetzt werden sollte, der erzwingt, dass es nur einen Eintrag mit gleichen Werten geben darf.
Mach erst mal ein vernünftiges Datendesign und packe Adressinformationen nicht in die Buddies.
Ist alles Murks, oder?
Ja in der Tabelle "Mitglieder", bzw. Nutzer kann es auch nur einen gleichen Wert geben.
Also, wenn ich morgen mehr Zeit habe, mache ich eine kleine Grafik über die Struktur. Vielleicht könnte man das dann noch tunen, bevor ich es total falsch angehe.
Grüße
Also, wenn ich morgen mehr Zeit habe, mache ich eine kleine Grafik über die Struktur. Vielleicht könnte man das dann noch tunen, bevor ich es total falsch angehe.
Gute Idee, schauen wir uns mal an. Erst wenn das Datendesign genau das abbildet, was Du abbilden möchtest, kann der Datenzugriff korrekt analysiert werden, ansonsten wäre es ein Herumstochern.