2016-04-22 7 views
0

Ich möchte Benutzern Punkte geben, wenn sie eine bestimmte Sache tun. Zum Beispiel:Datenbankschema für die Belohnung von Benutzern für ihre Aktivitäten

  • Zugabe Artikel
  • Zugabe Frage
  • beantworten Frage
  • mögen Artikel

usw.

Einige von ihnen können Bedingungen wie dort nur Punkte sind für die ersten 3 Artikel pro Tag, aber ich denke, dass ich das direkt in meiner Codebasis behandeln werde.

Das Problem ist, was wäre ein gutes Datenbank-Design, um damit umzugehen? Ich denke an 3 Tische.

  • user_activities - in dieser Tabelle I Ereignistypen speichern (ich benutze Laravel so dass es wahrscheinlich das Ereignis Klassennamen sein würde) und Punkte für bestimmtes Ereignis.
  • activity_user - Pivot-Tabelle zwischen user_activities und Benutzern.
  • und natürlich Anwender Tabelle

Es ist sehr einfach, so dass ich Sorgen einige Bedingungen gibt es Ich habe nicht gedacht, und es würde mich in der Zukunft kommen und beißen.

Antwort

0

Ich denke, Sie brauchen eine vierte Tabelle, die einfach "Aktivitäten" ist, das ist einfach eine Liste der Arten von Aktivitäten zu verfolgen. Dies wird eine ID-Spalte haben und dann in Ihrer user_activities-Tabelle eine 'activity_id' enthalten, die darauf verweist. Du findest hier haben Zweifel eindeutige Informationen für jede Art, zum Beispiel eine Tätigkeit Tabellenspalten wie

ID haben: eindeutige ID pro Laravel ACTIVITY_CODE: mehr Name: Kurzcode als Teil der Anmeldung/Geschäftslogik ACTIVITY_NAME zu verwenden das ist für Anzeigenamen wie „eine Frage beantwortet“ EVENT: was tut der Benutzer die Aktivität Auszeichnung POINT_VALUE zu tun haben auszulösen: wie viele Punkte für diese Veranstaltung

etc

Wenn Sie denken, dass die Punkte können Änderung in der Zukunft (z. B. um bestimmte Benutzeraktivitäten zu ermutigen), dann ' Ich möchte den tatsächlichen Punkt verfolgen, der zu der Zeit in der Tabelle der Benutzeraktivitäten vergeben wurde, oder irgendeine Art und Weise, um zu verfolgen, was die Punkte zu jeder Zeit waren.

Während ich vierte Tabelle vorschlage, was Sie wirklich brauchen, ist eine sorgfältig formulierte Liste von Features, die implementiert werden müssen, bevor Sie irgendwelche Design-Arbeit machen. Mein Beispiel für das Erlauben von Punkten, die im Laufe der Zeit geändert werden, ist eine solche Funktion, die Sie nicht erwähnen, die Sie jedoch entwerfen müssen, wenn diese Funktion benötigt wird.

Verwandte Themen