Система достижений / значков
Я просматривал этот сайт для ответа, но яЯ все еще немного неуверен, как спланировать подобную систему по структуре и реализации базы данных.
В PHP и MySQL было бы ясно, что некоторые достижения зарабатываются немедленно (когда предпринимаются специальные действия, в случае SO: заполняются все поля профиля), хотя я знаю, что SO обновляет и назначает значки через определенное время. С таким количеством пользователей и значки бы неЭто создает проблемы с производительностью (с точки зрения масштаба: большое количество пользователей и значки).
Таким образом, структура базы данных, как я полагаю, будет такой простой, как:
Badges | Badges_User | User
----------------------------------------------
bd_id | bd_id | user_id
bd_name | user_id | etc
bd_desc | assigned(bool) |
| assigned_at |
Но, как утверждают некоторые люди, было бы лучше использовать поэтапный подход, чтобы пользователь, имеющий 1 000 000 сообщений на форуме, не замедлял работу любой функции.
Будет ли это еще одна таблица для значков, которые могут быть добавочными или простопрогресс' поле в таблице badges_user выше?
Спасибо за чтение и, пожалуйста, обратите внимание на масштабируемость желаемой системы (например, SO тысяч пользователей и от 20 до 40 значков).
РЕДАКТИРОВАТЬ: чтобы сгладить некоторую путаницу, которую я назначил_at в качестве даты / времени, критерии для присвоения значка будут лучше всего помещены в подготовленные запросы / функции для каждого значка не будет 'не так ли? (лучшая гибкость)