Как я должен хранить уровни пользователей для системы точек сайта?в БД?или на лету? - PullRequest
0 голосов
/ 28 мая 2011

Я нахожусь в процессе создания системы пользовательского опыта / уровня на моем сайте.Эффект, которого я пытаюсь достичь, аналогичен эффекту популярного игрового сайта Kongregate, когда пользователь выполняет определенные действия на сайте, ему начисляются очки.Как только количество очков достигнет определенной суммы, пользователь повысит уровень.Это дает сайту ощущение игры, а также привлекает внимание пользователя.

Проблема, с которой я столкнулся, заключается в том, чтобы выяснить, лучше ли ... 1. Сохранять каждый уровень в таблице базы данных, а затем сопоставлять пользователя с этим уровнем с помощью идентификатора?2. ИЛИ сохранить опыт пользователя для выполненных действий, а затем суммировать это число каждый раз, когда мне нужно позвонить на уровне?

Следует также отметить, что уровень будет использоваться для выяснения других аспектов этогосистема.т. е. пользователь на уровне 10 получит дополнительный шваг за свой профиль, дополнительные функции на сайте и т. д ... A LA Stack O.

Есть ли какие-либо указатели на правильное направление?

Ответы [ 2 ]

3 голосов
/ 28 мая 2011
  • Сохранить уровни и связанные с ними "swag" / "привилегии" в базе данных.
  • Сохранить текущий уровень пользователя в его профиле в базе данных.
  • Хранить действия пользователя, которые приводят к точкам в базе данных

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

Это делает все проще:

  • когда вы хотите увидеть, какие привилегии у них есть, нужно просто сравнить их общее значение со следующим наименьшим (или равным) уровнем «свэга»
  • когда вы хотите получить их общее количество, это один вызов, а не куча запросов и математика
  • когда вы хотите показать список того, что они сделали, у вас есть это прямо в базе данных
  • Вы не будете дублировать код, суммируя их общее количество на страницах разных типов, которые должны отображать общее количество.
  • ... вероятно, множество других причин. data находится в названии инструмента по причине.
0 голосов
/ 28 мая 2011

Я думаю, что лучше определять «уровень» каждый раз, когда пользователь получает больше очков. Поэтому, когда он / она делает что-то, чтобы получить больше очков, сделайте расчет тут же. Если точка требует повышения уровня, измените level_id в профиле пользователя. Таким образом вы минимизируете вычисления на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...