Sistema de conquistas / crachás

Eu tenho navegado neste site para a resposta, mas ainda estou um pouco inseguro sobre como planejar um sistema semelhante em sua estrutura de banco de dados e implementação.

Em PHP e MySQL, ficaria claro que algumas conquistas são obtidas imediatamente (quando uma ação especializada é executada, no caso SO: preenchido todos os campos de perfil), embora eu conheça as atualizações SO e atribua emblemas após um determinado período de tempo. Com tantos usuários e crachás, isso não criaria problemas de desempenho (em termos de escala: alto número de usuários e crachás).

Então, a estrutura do banco de dados que eu suponho seria algo tão simples como:

Badges     |    Badges_User      |    User
----------------------------------------------
bd_id      |    bd_id            |  user_id
bd_name    |    user_id          |  etc
bd_desc    |    assigned(bool)   |  
           |    assigned_at      |

Mas, como algumas pessoas disseram, seria melhor ter uma abordagem de estilo incremental para que um usuário com 1.000.000 de postagens em fóruns não diminua nenhuma função.

Seria então outra tabela para crachás que poderia ser incremental ou apenas um campo 'progresso' na tabela badges_user acima?

Obrigado pela leitura e, por favor, foque na escalabilidade do sistema desejado (como SO, milhares de usuários e 20 a 40 crachás).

EDIT: para alguns iron out alguma confusão que eu tinha atribuído_at como uma data / hora, os critérios para a concessão do crachá seria melhor colocado dentro de consultas preparadas / funções para cada crachá não seria? (melhor flexibilidade)

questionAnswers(4)

yourAnswerToTheQuestion