Я просматривал этот сайт для ответа, но я все еще немного не уверен, как планировать подобную систему в структуре и реализации базы данных.
В 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 выше?
Благодарим за чтение и сосредоточим внимание на масштабируемости желаемой системы (например, тысяч пользователей и 20-40 значков).
РЕДАКТИРОВАТЬ: для некоторых можно смутить некоторую путаницу, которую я назначил как дату/время, критерии для награждения значка лучше всего помещать внутри подготовленных запросов/функций для каждого значка, не так ли? (лучшая гибкость)