Ben cevap için bu siteyi gezen olmuştur ama hala veritabanı yapısı ve uygulanması konusunda benzer bir sistem planı nasıl biraz emin değilim.
SO güncelleştirmeleri bilmek ve belli bir süre sonra rozetleri atar rağmen: PHP ve MySQL o (tüm profil alanları dolu özel bir eylem SO durumda alındığında) bazı başarıları hemen kazanılır açık olacaktır. Pek çok kullanıcı ve ile rozetleri bu (: kullanıcıları ve rozetleri hem de yüksek sayıda ölçek açısından) performans sorunları oluşturabilir olmaz.
Yani varsayalım veritabanı yapısı gibi basit bir şey olur:
Badges | Badges_User | User
----------------------------------------------
bd_id | bd_id | user_id
bd_name | user_id | etc
bd_desc | assigned(bool) |
| assigned_at |
Fakat bazı insanlar bunun bir artan tarzı bir yaklaşım için daha iyi olacağını belirtti kadar 1.000.000 forum mesajlarını sahip bir kullanıcı alışkanlık herhangi bir işlevi yavaşlatabilir.
O zaman yukarıdaki badges_user tabloda artışlı ya da sadece bir 'ilerleme' alanı olabilir rozetleri için başka bir tablo olurdu?
Okuma ve için teşekkürler (SO binlerce kullanıcı ve 20 ila 40 rozetler gibi) istenen sistemin ölçeklenebilirlik odaklanın lütfen.
EDIT: Bazı karışıklık dışarı bazı demir bir Tarih / Saat gibi, rozeti ödüllendirilmesi için kriterleri en iyi her rozeti olmaz bunun için hazır sorgular / fonksiyonları içine yerleştirilmiş olacaktır assigned_at vardı? (Daha iyi esneklik)