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