Ik denk dat de structuur die je hebt voorgesteld (zonder het "toegewezen" veld volgens de opmerkingen) zou werken, met de toevoeging van een extra tabel, zeg "Submissions_User", met een verwijzing naar user_id &een ophogend veld voor het tellen van inzendingen. Dan heb je alleen een "event listener" nodig volgens dit bericht en ik denk dat je klaar bent.
BEWERKEN:Voor de prestatiebadges moet je de gebeurtenislistener bij elke inzending uitvoeren (uiteraard alleen voor de gebruiker die de inzending doet) en elke relevante badge ter plaatse toekennen. Voor de op tijd gebaseerde badges zou ik elke nacht een CRON-taak uitvoeren. Loop één keer door de volledige gebruikerslijst en ken waar van toepassing badges toe.