Система достижений / значков

Я просматривал этот сайт для ответа, но яЯ все еще немного неуверен, как спланировать подобную систему по структуре и реализации базы данных.

В 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 в качестве даты / времени, критерии для присвоения значка будут лучше всего помещены в подготовленные запросы / функции для каждого значка не будет 'не так ли? (лучшая гибкость)

Ответы на вопрос(4)

Ваш ответ на вопрос