Userprofile wie in Datenbank abbilden?
Sophie
- datenbank
0 Steel2 Sven Rautenberg
Hallo hallo!
Ich möchte für meine Nutzer die Möglichkeit schaffen ein Profil anzulegen (wie diverse Social Networks). Wie bilde ich das am besten in der Datenbank ab?
Es gibt ca. 20 Dinge die der User angeben kann. Jede Angabe ist optional!
Wie würdet ihr diese angeben?
Also normalisiert wären das ja 20 Tabellen aber das sehe ich nun als völligen Schwachsinn an. Ich muss ja nicht 20 Tabellen joinen um ein Profil anzuzeigen.
Bei einer Tabelle die so aufgebaut ist:
userid option1 option2 option3...usw.
Dort würden bei 200 Usern ein Angabe von durchschnittlich 10 Angaben, 1000 Felder leer sein. Und bei 1 Millionen Usern? 10 Millionen!
Ich tendiere dazu, diese Angaben in ca. 4 Kategorien unterzuteilen und dann 4 Tabellen zu machen.
Lieben Gruß, Sophie
Hi!
Bei einer Tabelle die so aufgebaut ist:
userid option1 option2 option3...usw.Dort würden bei 200 Usern ein Angabe von durchschnittlich 10 Angaben, 1000 Felder leer sein. Und bei 1 Millionen Usern? 10 Millionen!
Ja und? Ich wuerde es u.U. wohl genau so umsetzen.
Natuerlich koenntest Du verschiedene Bereiche erstellen. Kontakt (E-Mail, ICQ Nummer, ...), Aussehen (Groesse, Gewicht, ...)
Nun geben also die meisten User aus den meisten Kategorien eine Angabe ein. Dann Hast Du Kontakt (EMail: leer, ICQ: 12345xxx, ...) Aussehen (Groesse 1,85, Gewicht: leer, ...)
Macht das nen grossen Unterschied? Ausser dass Du jetzt x Bereiche verknuepfen musst, um das Profil auszulesen.
Solange die Angaben bei Usern nicht automatisch identisch sind (selectboxen) oder mehrfach moeglich (Lebenslauf mit Jahr und Taetigkeit) musst Du meiner bescheidenen Meinung nach gar nichts aufteilen und kannst alles in eine Tabelle packen.
Eventuell macht es Sinn Daten nach Art der Benutzung aufzuteilen. Die Userdaten (ID, Passwort, evtl Anschrift - wichtig fuer dich als Betreiber) z.B. von den Details (Hobbies, Lieblingsfarbe, ...) zu trennen. Keine Ahnung, was alles in Deinem Profil drin steht. Da Du schreibst, dass jede Angabe optional ist, handelt es sich aber hoechst wahrscheinlich schon um letzteres.
Moin!
Bei einer Tabelle die so aufgebaut ist:
userid option1 option2 option3...usw.Dort würden bei 200 Usern ein Angabe von durchschnittlich 10 Angaben, 1000 Felder leer sein. Und bei 1 Millionen Usern? 10 Millionen!
Ich tendiere dazu, diese Angaben in ca. 4 Kategorien unterzuteilen und dann 4 Tabellen zu machen.
Vier Tabellen mit genausovielen Spalten, wie die eine Tabelle? Was spart das denn?
Vernünftiger wäre aus Speicherplatzsicht, genau eine Tabelle mit 3 Spalten zu haben: User-ID, Angaben-ID und Wert. Die Angaben-ID identifiziert, was der User da eingetragen hat. Wenn ein User nix einträgt, taucht er in der Tabelle gar nicht auf.
Wenn tatsächlich sehr unterschiedliche Werte, auch hinsichtlich der Datenmenge, eingetragen werden sollen, dann sollte man dies durch die Nutzung von zwei Tabellen, eine für kurze Werte und eine für sehr große, hinkriegen.
Auf der anderen Seite: Alles, was Speicherplatz spart, verbraucht mehr Zeit beim Zusammensammeln der Informationen, weil der Zugriff und das aufdröseln aufwendiger ist.
- Sven Rautenberg