ユーザーがオンライン試験を受けることができる Web アプリがあります。
試験管理者がアンケートを作成します。アンケートには多くの質問を含めることができます。各質問は複数選択質問 (MCQ) です。
管理者が 10 個の質問を含むアンケートを作成するとします。ユーザーはそれらの質問を試みます。現在、実際の試験とは異なり、ユーザーは 1 つの質問票を複数回試すことができます。そして、彼のすべての試みを追跡する必要があります。
例えば
User_id Questionnaire_id question_id answer attempt_date attempt_no
1 1 1 a 1 June 2013 1
1 1 2 b 1 June 2013 1
1 1 1 c 2 June 2013 2
1 1 2 d 2 June 2013 2
ユーザーが同じアンケートを 2 回試行した後、管理者は同じアンケートから質問を削除できますが、ユーザーの試行履歴には引き続き参照が必要であり、管理者が削除したにもかかわらず、ユーザーは自分の試行履歴でその質問を見ることができます。その質問。
ユーザーがこの変更されたアンケートを試みると、1 つの質問のみが表示されます。
User_id Questionnaire_id question_id answer attempt_date attempt_no
1 1 1 a 3 June 2013 3
また、このユーザーが問題の一部を変更した後、ユーザーの試行履歴には変更前の質問が表示され、新しい試行には変更された質問が表示されます。
これをデータベース レベルでどのように管理するのでしょうか。
私の最初の直感は、
削除の場合は、物理的な削除は行わず、質問を非アクティブにして、履歴がユーザーの試行を引き続き追跡できるようにします。
変更するには、問題のバージョンを作成し、新しい試行ごとに各問題の最新バージョンを参照し、履歴を試行時の問題のバージョンへの参照を保持します。