0

ちょっとしたオンライン クイズ/ゲームを作成しています。一意の auto-increment 、フィールド、フィールド、およびフィールド (作成元)をusers含む -table があります。idusernamepasswordip

それはログインなどを処理します。

次に、ユーザーのプロセスを追跡する必要があります。ユーザーはいくつかのタスクまたはレベルを完了する必要があります。しかし、あなたはそれを見たいと思っています。

各タスクの要件は次のとおりです。

  1. ユーザーが特定のタスクに対して何回試行したかを追跡する
  2. 彼の最後の試みを追跡する
  3. 彼がどこで失敗したかを追跡する
  4. 彼の最短の成功した試みを追跡する
  5. 彼の最近の成功した試みを追跡します。

私が求めているのは、基本的に、これができるだけスムーズに機能し、迷惑な SQL クエリとコードをできるだけ少なくするために、テーブルをどのように構築する必要があるかということです。

上記のリストに対応するユーザー名とフィールドに各行がバインドされた、タスクごとに 1 つのテーブルが必要ですか? または、どのタスクと上記のリストに対応するすべてのフィールドを示すユーザー名にバインドされた行を持つ 1 つの大きなテーブルですか?

わからないので質問させていただきます。

言及する価値があります: 私が現在持っているものは何も決まっていないので、あなたが望むものは何でも変えることができます.

どんな助けや提案も大歓迎です。

前もって感謝します。


編集:タスクごとに 1 つのテーブルも作成します: tasks(id, name, description, finish_message)

それに伴い、上記で説明したユーザーとタスクと同様のタスク用の新しいテーブル構造が必要になりますが、タスクとテスト用です。

4

1 に答える 1

1

あなたの質問を完全には理解できませんでしたが、次の構造が役立つと思います。

    1. users(userid, username, password, ipaddress)
    2. tasks(taskid, task_description,...)--any other details you want
    3. task_attempted(userid, taskid, last_successful_attempt, shortest_successful_attempt, last_attempt, last_failed_testid);
    4. tests(testid, taskid, ...)--other details

3 番目の要件を明確にしてください。

Keep track of where he failed

間違っていない場合、ユーザーは現在のテストが正常に終了するまでタスクの次のテストに進むことができない可能性があるため、特定のタスクで失敗した test_id を追跡するために test_id のフィールドをもう 1 つ追加できます。

于 2012-08-25T09:24:33.013 に答える