Jag tror att strukturen du har föreslagit (utan "tilldelad" fältet enligt kommentarerna) skulle fungera, med tillägg av en extra tabell, säg "Submissions_User", som innehåller en referens till user_id &ett ökande fält för att räkna inlämningar. Då behöver du bara en "evenemangslyssnare" enligt det här inlägget och tror att du skulle vara redo.
EDIT:För prestationsmärken, kör evenemangslyssnaren vid varje inlämning (endast för användaren som skickar in såklart), och tilldela alla relevanta märken på plats. För de tidsbaserade märkena körde jag ett CRON-jobb varje natt. Gå igenom hela användarlistan en gång och tilldela märken efter behov.