私はオンライン試験アプリケーションを作成しています。このアプリの目的は、教師がコース、コースのトピック、および質問を作成できるようにすることです(すべての質問にマークが付いています)。教師は学生向けの試験を作成でき、学生はオンラインで試験を行うことができます。多くの単語examination
とを使用するexaminations
ので、それexam
をexams
短くします。
私のアプリのビジネスについて:
- 教師はトピック、質問、およびすべてのトピックを作成できます。質問は1人の教師にのみ属します。
- 教師は
general exam
コースのを作成できます。それはから質問のコレクションを取得しquestion bank
ます。 - それから
general exam
、教師が生成し、コースの試験を行う必要があることにnumber of exams
対応します。number of students
試験は、生成された後、自動およびランダムに学生に割り当てられます。 生成される試験は異なります
number of questions
が、total mark of questions
すべての試験で同じになります。例、試験が生成された後:Student A take exam with 20 questions, student B take exam only has 10 questions, it means maybe every question in exam of student A only has mark is 1, but questions in exam of student B has mark is 2.
つまり、20 = 10 x 2、これが私が意味することです
total mark of questions in every examination will be the same.
私は次のテーブルを設計しました:
- ユーザー(学生と教師のアカウントを含む)
- コース
- トピック
- 質問
- 答え
学生が試験をするとき、私はそれがテーブルを持っていると思います:
- 結果、列:user_id、exam_id、mark
これは私が作成すると思うテーブルですgeneral examination
:
- GeneralExamination、列:name、description、dateStart、dateFinish、numberOfMinutes、maxMarkOfExam
しかし、今はユーザー(学生)、質問、試験、一般試験の間の関連付けを設定する方法がわかりません。関連付けを要約するには:
- 学生は多くの試験を行うことができます。
- 学生は自分に割り当てられた試験のみを行うことができます。
- A
general exam
には多くの質問があり、質問バンクから取得しますが、すべての試験はgeneral exam
生成された質問から取得します。 general examination
試験は、それらを生成するために使用された1つに属しています。
これらの関連付けを設定するにはどうすればよいですか?