2012-02-02 10 views
7

現在、1つの教育サイトを設計中です。バッジ割り当てシステムのフレームワークを設計するための最善のアプローチ

このためには、ユーザーのアクティビティ(stackoverflowなど)に基づいてバッジを割り当てる必要があります。

私はこれのためのフレームワークを探していました。いずれにしても、これはどうやってできますか?私はこれで考えることができ、表のデザインなど

の問題は、以下のとおりです。私たちはすべてのバッジをチェックし、いずれかのバッジができるかどうかを確認することはできません、ユーザーの各アクションのように、我々は、バッジの数が多いこと

  1. 割り当てられる
  2. これに新しいバッジと基準を追加すると、私はこれを処理する既存のコードを変更したくないのですか?
  3. どのデータベースを選択すればいいですか?それは、1つのバッジの基準が満たされ、これらのルールがDB(SQLのような)で作成されたときにイベントを発生させるか、n

    プロジェクトの私の残りの部分はMongoDBの中にあるようongodb)

私の最初の検索では、物事

  1. ルールエンジン以下くれた - >非常に面倒な作業Database Architecture for "Badge" System & Arbitrary Criteria (MySQL/PHP)
  2. 一つのプロジェクトになります - >http://drupal.org/project/user_badges
  3. )それを正しく理解することができない人は、あなたのテーブル構造は、このようにする必要があり、これがすべてを..and言っている.. Best way to store Badge criteria? Creating "Badges" for my site, best way to store user badges? Using PHP
+0

先ほどの主題に関するSOの作業は、http://stackoverflow.com/questions/9835321/designing-a-pluggable-points-and-badges-systemへの回答に要約されています。 –

答えて

1

このアプローチでは、nosqlデータベースでリレーショナルデータベースを選択することは間違いありません。

最初に必要なのは、バッジの基本構造です。

ID (int) 
Title (Varchar 255) 
Image (Varchar 255) - would hold location to image 
Points (int) 

これで、ユーザーが獲得したバッジをすべて保存する必要があります。だからあなたのユーザーのセクションで:

Badges (Varchar) - holds a serialized array of badge IDs 
Badge_count (int) - So you can get the total without parsing through Badges. 
Point_count (int) 

今、あなたはまた、各アクションのエントリを保存する必要がありますので、それぞれが、アクションを実行したため、すべてのバッジに対して照会することはできませんと言います。ですから、例えばあなたの「投稿」の表で言う:

Possible_badges (Varchar 255) - serialized array of Badge ID's 

あなたは、あなたのルールエンジンに特定のタスクに関連する唯一のバッジを正規化して与えることができます。

あなたが妥協する必要があり、基本的なロジックのために行くよりも何かを理解していない場合は、データベースエントリで測定できるタスクのバッジを授与するだけですデータ)。または、より多くの時間を学習に費やす(そして、あなたの髪を引き出す)。