2012-04-05 15 views
16

私はstackoverflowバッジに似たようなことを実装しようとしています。それらをゲームの成果と見なすこともできます。バッジ/アチーブメント

データベース/コード/トラッキングを設計する方法

私はのようなバッジのために何をすべきかを取得

:彼らは1回限りのイベントですが、どのようにするので、手動で他の人の質問

に授与1456まず恵み×

利他主義1783年には600への投票
有権者は×よくある質問の各セクションを訪問

分析×16389次のような他の人を扱います質問と総投票数の25%以上が

それらをどのように処理するか、どのように維持するために...質問に10人の異なるユーザー

などで主演したチャット中188の投稿者10件のメッセージ× 率直ですそれぞれの進捗状況を追跡する、など...チュートリアルや、それらのデザインパターンを理解するのに役立つものがありますか?

答えて

17

上記の例では、必要とする基本的に2つのメカニズムがあります。

これはどのように処理されたのかわかりませんが、これは単なるソリューションの提案です。

最初に「分析」を見てみましょう。ユーザーがFAQの特定の領域を訪れると、単純なフラグで記録する必要があります。各FAQセクションのフィールドとユーザーIDを持つDBテーブルを想定しましょう。これは "N"(または0、またはあなたのフラグを表現したい)として始まります。ユーザーがそのエリアにアクセスすると、そのフィールドを「Y」にするコードを呼び出します。すべてのフィールドが「Y」の場合、そのバッジを賞品にすることができます。

'electorate'と 'Outspoken'に関しては、クエリがあまりにも負担にならないと仮定して、既存のデータに対するクエリによってこの情報を取得できます。これらのチェックをいつ実行するかを検討する必要があります。これは基本的に2つの選択肢があります。アクションはバッジが授与されてしまうかもしれませんその行われた場合

1)(FAQのすなわち訪問セクションでは、投票は質問に、質問は、定期的に(他の誰か)

2)で主演毎時間、毎日、など)現在のデータに対するすべてのバッジをチェックしてください。

バッジはStackoverflowで片方向であることを覚えておいてください。同等のものにしたい場合は、ロジックを「un-award」バッジに考慮する必要はありません。

+0

私は今それを得ると思います。 Pの問題は1つだけです - dbテーブルを使用するために '分析的な'と言いますが、そのような類似のバッジが多数あり、それぞれについてどうやって行くのでしょうか?私はバッジごとに別のテーブルを使うべきですか、あるいはこれを単一のテーブルに統一する方法がありますか?それ以外の場合は、各バッジタイプごとに1つずつ、多くのdbテーブルが作成される可能性がありますが、答えはthnxです。正しい方向に私を開始させるのに多くの手助けをします。 btw、あなたの2は、バッジが達成された瞬間にバッジが授与されないことを意味します。はい、賞金を受け取ることはありません。 – b0x0rz

+1

テーブルの実装方法はあなた次第です。user_id、badge_id、badge_acheivement_id、flagという4つの列テーブルを持つことができます。これにより、複数のバッジにスケーラブルになります。そして、そうです、彼らは彼らが達成された瞬間に授与されることはないと言います。 –

+0

もちろんありがとうございます。私はこれがすべての私の問題を解決すると思う。私は、チェックをスケジュールすることは、バッジを「稼ぐ」とバッジが表示されるまでの時間のギャップを少なくする可能性が高いと思います。 – b0x0rz