Quickie-Question:
To summarize, I'm a little confused as to how I would design such a database that allows indefinite badge-rule creation without requiring structural changes to the previously existing user-tables in the database.
Storing Badge Title, Criteria, etc. What would that Table look like?
- badge_id (1)
- badge_title (10K Badge)
- badge_image (10k.jpg)
- badge_criteria ([posts] >= 10000)
...
Winded-Question:
I would like to implement a badge-system on my own personal projects, but am seeking a bit of advice as to how one would best do such a thing. I've been reading some of the questions here about badge-systems, but don't see the database-architecture getting much attention.
Badges that are based on user-points (Hypothetical "10k Badge") would seem pretty straight forward. Any event that affects the users reputation (upvotes, downvotes, answer-accepted, etc) would invoke a method to review the users new reputation, and potentially award a badge.
That system sounds pretty straight forward, but what does that look like as a database for the administrator who wants to create innumerable amounts of badges with little-effort down the road - some of which may be based on different criteria, and not simply the user reputation.
User-reputation is likely a value within the user-record itself. But ideally, wouldn't you want to avoid having to add new fields to the user table when you create new badges? For instance the "Edited 100 Entries" badge - you wouldn't create a new column "entries_edited" within the Users Table, would you? And then increment that after each entry-edited...
Any hints?
Stackoverflow Archive:
- Best way to Store Badge Criteria (Not a duplicate)
- Designing a Badge System: Where to fire business-logic?
Note: I'm NOT asking how to associate badges with users. I'm NOT asking how to award badges (that will be done programmatically)