PHP と MySQL を使用して Web ベースのクイズ アプリケーションを作成中です。特に詳細を説明して退屈させたくないので、知っておく必要がある (と私が思う) ことを以下に示します。
質問はすべて多肢選択式であり、いくつかの列を持つ単純なテーブルに格納できます。
- ID: 質問番号 (プライマリ インデックス)
- カテゴリ: この質問が該当するカテゴリ (動物、野菜、鉱物など)
- テキスト: 質問の語幹 (例: What is 1+1?)
- Answer1: 考えられる答え (例 2)
- 回答 2: 考えられる回答 (例: 3)
- 回答 3: 考えられる回答 (例: 4)
- CorrectAnswer: 質問に対する正解 (1、2、または 3 (この場合は 1))
ユーザーは、ユーザー名とパスワードを作成してサインアップし、カテゴリから質問を試みることができます。
問題は、私が書いている質問が複数回試行されるように設計されていることです。ただし、ユーザーには進捗状況に関する詳細なフィードバックを提供する必要があります。質問に対する最初の試行は重要であり、ユーザーの全体的な「初めて回答された質問」スコアに貢献します。したがって、問題が何回試行されたかを追跡する必要があります。
アプリケーションは柔軟に設計されているため、何千もの質問を試みる何百ものユーザーをサポートしたいと考えています。したがって、この情報をユーザー テーブルまたは質問テーブルに統合しようとすることは不可能に思えます。この問題に取り組みたい方法は、ユーザーがサインアップしたときに、さまざまな列を使用して、ユーザーごとに新しいテーブルを作成することです。
- テーブル名: ユーザーの個別のテーブル (例: TableForUser51204)
- QuestionID: ユーザーが試行した質問の ID。
- CorrectFirstTime: 質問が最初に正しく回答されたかどうかを示すブール値。
- 正解: 質問が正しく回答された回数。
- 不正解: 質問の回答が不正解だった回数。
ですから、私が聞きたいのは、このようにデータベースを整理することが賢明であるかどうかということです。ユーザーごとに新しいテーブルを作成するよりも良い方法はありますか? たとえば 500 人のユーザーと 2000 の質問がある場合、パフォーマンスはどの程度低下しますか?
ありがとう。