9

私は現在、1 つの教育サイトを設計しています。

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

そのためのフレームワークを探していました。どのようにこれを行うことができますか?テーブルデザインなど

これで考えられる問題は次のとおりです。

  1. 多数のバッジが存在する可能性があるため、ユーザーのアクションごとにすべてのバッジをチェックして、割り当て可能なバッジがあるかどうかをチェックすることはできません
  2. これに新しいバッジと基準を追加する際に、これを処理するために既存のコードを変更したくありません (一般的な解決策はありますか?)
  3. どのデータベースを選択する必要がありますか (私のフレームワークが似ている場合、1 つのバッジの基準が満たされ、これらのルールが DB (SQL など) で作成されたときにイベントが発生します) または nosql db (残りの mongodb など) を選択できますか?プロジェクトはmongodbにあります)

私の最初の検索では、次のことがわかりました

  1. ルール エンジン -> 非常に面倒なタスクが発生します 「バッジ」システムおよび任意の基準のためのデータベース アーキテクチャ (MySQL/PHP)
  2. 1 つのプロジェクト -> http://drupal.org/project/user_badges (正しく理解できていません)
  3. 人々は、あなたのテーブル構造はこれとこれのようであるべきだと言っています..そしてすべて.. バッジ基準を保存する最良の方法は? サイトの「バッジ」を作成する、ユーザー バッジを保存する最良の方法は? PHP の使用
4

1 に答える 1

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

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

妥協して基本的なロジックに取り掛かる必要があるよりも、そこに何があるのか​​わからない場合は、データベースエントリ(主に数値データ)で測定できるタスクに対してのみバッジを授与するのが最善の策です。または、学習(および髪の毛を抜く)により多くの時間を費やします。

于 2012-02-02T17:01:58.917 に答える