8 Stimmen

Datenbank-Design: Benutzerprofile wie bei Meetup.com

Wenn Du auf Meetup.com einer Meetup-Gruppe beitrittst, musst Du in der Regel ein Profil für die jeweilige Gruppe ausfüllen. Wenn Sie beispielsweise einer Meetup-Gruppe für Filme beitreten, müssen Sie möglicherweise die Filmgenres angeben, die Sie mögen, usw.

Ich baue eine ähnliche Anwendung auf, bei der Benutzer verschiedenen Gruppen beitreten und unterschiedliche Profildetails für jede Gruppe ausfüllen können. Nehmen Sie die 2 Möglichkeiten an:

  1. Benutzer können ihre eigenen Gruppen erstellen und festlegen, welche Details sie den Benutzern, die dieser Gruppe beitreten, mitteilen möchten (also etwas, das ein wenig dynamisch ist - was vielleicht darauf hindeutet, dass zumindest ein EAV-Design erforderlich ist)
  2. Der Entwickler entscheidet nun, welche Gruppen erstellt werden sollen, und legt fest, welche Angaben die Nutzer, die dieser Gruppe beitreten, erhalten sollen (d. h. die Profildaten werden vordefiniert und im System "fest einprogrammiert").

Wie lassen sich solche Daten am besten modellieren?

Ein ausführlicheres Beispiel:

Die Gruppe "Kinogänger" bittet ihre Mitglieder, Folgendes anzugeben:

  • Name
  • Geburtsdatum (wird zur Berechnung des Alters des Mitglieds verwendet)
  • Geschlecht (bitte wählen Sie zwischen "männlich" und "weiblich")
  • Bevorzugte Genres (wählen Sie 1 oder mehrere aus einer Liste bestimmter Genres aus)

Die Gruppe "Extremsportarten" fordert ihre Mitglieder auf, Folgendes anzugeben:

  • Name
  • Beschreibung der genossenen Aktivitäten (in Form einer Erzählung)
  • Postleitzahl

Unterm Strich kann jede Gruppe unterschiedliche Angaben von den Mitgliedern verlangen, die ihrer Gruppe beitreten. Im Idealfall möchte ich, dass jeder eine Gruppe erstellen kann (ala MeetUp.com). Ich muss aber auch die Möglichkeit haben, die Mitglieder ziemlich gut zu suchen (z. B. alle weiblichen Kinobesucher zwischen 25 und 30 Jahren).

0voto

ncank Punkte 896

Wenn Sie nicht an Mysql gebunden sind, empfehle ich Ihnen, Postgresql zu verwenden, das eine eingebaute Array Datentypen.

Sie können ein Array von varchar-Feldern definieren, um gruppenspezifische Felder in Ihrer Gruppentabelle zu speichern. Um Werte zu speichern, können Sie dasselbe in der Mitgliedschaftstabelle tun.

Im Vergleich zu String-Parsing-basierten Xml-Typen wird dieser Array-Ansatz wirklich schnell sein.

Wenn Sie den Array-Ansatz nicht mögen, können Sie sich xml Datentypen und eine optionale hstore Datentyp, der ein Schlüsselwertspeicher ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X