Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Балловая система действий пользователя, оптимальное решение 
V
    Опции темы
ruX
Дата 9.10.2009, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 8.9.2006
Где: г.Гатчина

Репутация: 1
Всего: 3



Всем доброго времени суток.

Мне нужно вести счёт(баллов/поинтов) пользователя. Этот счёт несколько похож на карму - за исключением, что списываются и добавляются баллы системой за различные действия(просмотр, коммент, заход на сайт). Практически, как это сделанно в ВиО.
Там:
  •  заход на сайт(раз в сутки) +5
  •  голос ответа +1
  •  ответ +2
  •  создание вопроса(-10, -20... сколько сам укажешь)
  •  ответ заминусовали - баллы убираются.

думаю идея ясна.

Я думаю завести таблицу(user_id, action_id, points, timestamp) в которую записывать изменение счёта в размере points для юзера user_id, которое произошло в timestamp и причина изменения баллов - action_id. В свою очередь создать таблицу(action_id, describe) в которой номер действия action_id связан с его описанием describe.
Также хранить в таблице пользователя текущий счёт, ну это понятно, не пересчитывать же.

Предполагается очень много действий пользователя(практически любое открытие страницы вызывает изменение баллов). 
Узнать текущий счёт будет не проблемма - он лежит в отдельной таблице. 
А просмотр действий? Идеально - это join'ить 2 таблицы по полю action_id и получается лог действий.
Ещё, стоимость одного из действий может меняться. Т.е. (например) сохранил, что человек просмотрел 2 фото, спустя день он вернулся к альбому и продолжил просматривать его, за что ещё баллы начисляются(а вернее надо добавить к тому что записал в бд!)

Оптимально?

Или стоит ежедневно/недельно/месячно "консервировать" текущую таблицу действий? Или причину изменения баллов вынести в файл например?

Может какие-нибудь глобальные изменения в идее есть?
--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
youri
Дата 12.10.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(ruX @  9.10.2009,  18:25 Найти цитируемый пост)
Я думаю завести таблицу(user_id, action_id, points, timestamp) в которую записывать изменение счёта в размере points для юзера user_id, которое произошло в timestamp и причина изменения баллов - action_id

почему points в этой таблице, а не в таблице actions?

Цитата(ruX @  9.10.2009,  18:25 Найти цитируемый пост)
Ещё, стоимость одного из действий может меняться. Т.е. (например) сохранил, что человек просмотрел 2 фото, спустя день он вернулся к альбому и продолжил просматривать его, за что ещё баллы начисляются(а вернее надо добавить к тому что записал в бд!)

как это стоимость действий должна меняться? Вместо добавления новой записи ты собираешься существующую изменять?

PM   Вверх
ruX
Дата 13.10.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 8.9.2006
Где: г.Гатчина

Репутация: 1
Всего: 3



Цитата(youri @  12.10.2009,  18:22 Найти цитируемый пост)
почему points в этой таблице, а не в таблице actions?

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


Цитата(youri @  12.10.2009,  18:22 Найти цитируемый пост)
как это стоимость действий должна меняться? Вместо добавления новой записи ты собираешься существующую изменять?

Думаю да, а не стоит?
Пусть юзер просматривает всего лишь 1 альбом - 500фото. тогда нужно записывать 500 строк в таблицу!

--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
Hellka
Дата 13.10.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.2.2006

Репутация: нет
Всего: нет



Цитата(ruX @  9.10.2009,  18:25 Найти цитируемый пост)
Ещё, стоимость одного из действий может меняться. Т.е. (например) сохранил, что человек просмотрел 2 фото, спустя день он вернулся к альбому и продолжил просматривать его, за что ещё баллы начисляются(а вернее надо добавить к тому что записал в бд!)

а зачем такой геморрой? не думаешь, что юзеры накручивать будут?
делай всё четко и сурово. зашел в альбом +1, зашел еще раз - фиг, т.к. уже смотрел его.
по своему опыту знаю, что изголяться начнут
PM MAIL   Вверх
ruX
Дата 14.10.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 8.9.2006
Где: г.Гатчина

Репутация: 1
Всего: 3



Цитата(Hellka @  13.10.2009,  19:34 Найти цитируемый пост)
а зачем такой геморрой?

Это ТЗ а не геморрой )

Цитата(Hellka @  13.10.2009,  19:34 Найти цитируемый пост)
не думаешь, что юзеры накручивать будут?

Об этом я также не должен думать

Цитата(Hellka @  13.10.2009,  19:34 Найти цитируемый пост)
делай всё четко и сурово. зашел в альбом +1, зашел еще раз - фиг, т.к. уже смотрел его.по своему опыту знаю, что изголяться начнут

Да, просмотренные фото при повторном просмотре конечно не будут "тарифицироваться". А вообще здесь "фото" и "альбомы" это абстрактно - по факту может быть много чего.

--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
youri
Дата 14.10.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



а где будут храниться текущие points?
PM   Вверх
Hellka
Дата 15.10.2009, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.2.2006

Репутация: нет
Всего: нет



Цитата(youri @  14.10.2009,  22:57 Найти цитируемый пост)
а где будут храниться текущие points? 


Цитата

Также хранить в таблице пользователя текущий счёт, ну это понятно, не пересчитывать же.


profit?

PM MAIL   Вверх
youri
Дата 15.10.2009, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



я про points, которые модераторы назначают и которые меняются
PM   Вверх
Hellka
Дата 15.10.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.2.2006

Репутация: нет
Всего: нет



Цитата(youri @ 15.10.2009,  08:12)
я про points, которые модераторы назначают и которые меняются

да это можно и в файле конфига, и в таблице и в массиве хранить
PM MAIL   Вверх
ruX
Дата 15.10.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 8.9.2006
Где: г.Гатчина

Репутация: 1
Всего: 3



Цитата(youri @  14.10.2009,  22:57 Найти цитируемый пост)
а где будут храниться текущие points?

Один из вопросов моих, где лучше хранить, я же подумал что хорошо бы:
Цитата(ruX @  9.10.2009,  18:25 Найти цитируемый пост)
В свою очередь создать таблицу(action_id, describe) в которой номер действия action_id связан с его описанием describe.


Цитата(Hellka @  15.10.2009,  09:46 Найти цитируемый пост)
да это можно и в файле конфига, и в таблице и в массиве хранить

Вторая мысль была как раз такая же - хранить в сериализированном массиве, где есть соответствия (ид_действия->поинты,описание)

Сейчас подумал ещё над тем, что возможно лучше не менять количество баллов за действие, а создавать копию действия, соответственно с другим айди, таким же описанием и другим кол-вом количеством  баллов.
--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
youri
Дата 15.10.2009, 14:29 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(ruX @  15.10.2009,  11:16 Найти цитируемый пост)
Сейчас подумал ещё над тем, что возможно лучше не менять количество баллов за действие, а создавать копию действия, соответственно с другим айди, таким же описанием и другим кол-вом количеством  баллов.

это нужно, если у тебя будут запросы типа "а какие баллы назначались пользователям, когда действие ... было в ... баллов" ;)

Цитата(ruX @  15.10.2009,  11:16 Найти цитируемый пост)
Один из вопросов моих, где лучше хранить, я же подумал что хорошо бы:

храни в actions

Цитата(Hellka @  15.10.2009,  09:46 Найти цитируемый пост)
да это можно и в файле конфига, и в таблице и в массиве хранить

надо будет только рассказать модератором, в каком каталоге файлик этот лежит...
PM   Вверх
ruX
Дата 16.10.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 8.9.2006
Где: г.Гатчина

Репутация: 1
Всего: 3



youriHellka, спасибо за ответы

решил как и посоветовали хранить actions в бд и
Цитата(ruX @  15.10.2009,  11:16 Найти цитируемый пост)
Сейчас подумал ещё над тем, что возможно лучше не менять количество баллов за действие, а создавать копию действия, соответственно с другим айди, таким же описанием и другим кол-вом количеством  баллов.


тема закрыта )
--------------------
Случайность - внезапно наступившая неизбежность.
PM MAIL WWW ICQ   Вверх
youri
Дата 16.10.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



на всякий случай, повторюсь: текущие points лучше хранить в actions и не создавать новую запись при изменении points. Тебе вряд ли эта дополнительная информация понадобиться. Создавать новую запись имеет смысл, если нужно будет выдавать историю изменения points для action'а или выдавать историю назначения пользователям points для некотрого action'а, когда у него было некоторое значение points

Это сообщение отредактировал(а) youri - 16.10.2009, 18:01
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0825 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.