2016-04-22 1 views
0

Я хотел бы предоставить пользователям точки, когда они делают определенную вещь. Например:Схема базы данных для награждения пользователей за их действия

  • добавления статьи
  • добавление вопроса
  • отвечая на вопрос
  • симпатий статьи

т.д.

Некоторые из них могут иметь условия, как есть только точки для первые 3 статьи в день, но я думаю, что я обработаю это прямо в моей базе кода.

Проблема в том, что было бы хорошим дизайном базы данных, чтобы справиться с этим? Я думаю о трех таблицах.

  • user_activities - в этой таблице я хранить типы событий (я использую Laravel так, вероятно, будет имя класса событий) и указывает на конкретного события.
  • activity_user - сводная таблица между user_activities и пользователями.
  • и конечно же таблицы пользователей

Это очень просто, так что я волнуясь, что есть некоторые условия, я не подумал, и он придет и укусить меня в будущем.

ответ

0

Думаю, вам понадобится четвертая таблица, которая представляет собой просто «деятельность», которая представляет собой просто список видов деятельности для отслеживания. У этого будет столбец идентификатора, а затем в вашей таблице user_activities включите ссылку «activity_id», чтобы связать это. Вы не будете, без сомнения, имеете уникальную информацию для каждого вида, например, таблица деятельности может иметь столбцы как

ID: уникальный идентификатор каждого Laravel ACTIVITY_CODE: короткий код, чтобы использовать как часть приложения/бизнес-логику ACTIVITY_NAME: больше имен то есть на имя дисплея, как «ответил на вопрос» EVENT: что делает пользователь должен сделать, чтобы вызвать награду активности POINT_VALUE: сколько очков для этого события

и т.д.

Если вы думаете, что точки могут изменения в будущем (например, для поощрения определенных действий пользователя) Я хочу отслеживать фактический момент, присвоенный в то время в таблице действий пользователя, или каким-то образом отслеживать, какие точки были в любой момент.

В то время как я предлагаю четвертый стол, то, что вам действительно нужно, - это более тщательно составленный список функций, которые будут реализованы до выполнения любой проектной работы. Мой пример разрешения очков, присуждаемых за изменения во времени, - это такая функция, о которой вы не упоминаете, но вам нужно будет разработать, если эта функция необходима.

Смежные вопросы