Архитектура базы данных для системы «Badge» и произвольные критерии (MySQL / PHP)

Quickie-Question:

Подводя итог, я немного сбит с толку относительно того, как бы я спроектировал такую базу данных, которая бы позволяла создавать неопределенные правила для значков, не требуя структурных изменений ранее существующих пользовательских таблиц в базе данных.

Сохранение названия значка, критериев и т. Д. Как будет выглядеть эта таблица?

badge_id (1) badge_title (10K Badge) badge_image (10k.jpg) badge_criteria ([posts] >= 10000)
... Winded-Question:

Я хотел бы внедрить систему бейджей в свои личные проекты, но мне нужно несколько советов о том, как лучше всего это сделать. Я читал здесь некоторые вопросы о бейдж-системах, но не вижу, чтобы архитектура баз данных привлекала к себе большое внимание.

Значки, основанные на пользовательских баллах («Гипотетический», значок 10 тыс.), Могут показаться довольно простыми. Любое событие, которое влияет на репутацию пользователя (положительные, отрицательные, принятые ответы и т. Д.), Будет вызывать метод проверки новой репутации пользователей и потенциального присвоения значка.

Эта система звучит довольно прямо, но как она выглядит как база данных для администратора, который хочет создавать бесчисленное количество значков без особых усилий в будущем - некоторые из которых могут основываться на других критериях, а не просто на пользователе репутации.

Репутация пользователя, вероятно, является значением в самой записи пользователя. Но в идеале, не хотите ли вы избегать добавления новых полей в пользовательскую таблицу при создании новых значков? Например, «Отредактировано 100 записей» значок - вы не будете создавать новый столбец "records_edited" в таблице пользователей, не так ли? И затем увеличивать это после каждой записи редактировать ...

Есть намеки?

Архив Stackoverflow:

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)

Ответы на вопрос(7)

Ваш ответ на вопрос