0

トピックが私が望むものを正しく意味するかどうかはわかりませんが、説明する方法がわかりません。私はオンライン試験アプリを構築しています。問題を簡単に説明するために、6つの表に焦点を当てます。

  1. コース:has_manyトピック
  2. トピック:belongs_toコース
  3. 質問:belongs_toトピック、has_manygeneral_exams、スルー:: general_questions
  4. GeneralExams :has_many質問、through:general_questions、belongs_touser、belongs_tocourse、has_manyexam
  5. GeneralQuestions:belongs_to質問、belongs_togeneral_exam

  6. 試験:belongs_to一般試験、belongs_toユーザー

これは、テーブルGeneralExamの列です。

name,description,semester,number_question,duration,used, user_id, course_id

私が今やりたいのは、一般的な試験を作成することです。もちろん、トピックごとにいくつかの質問を指定できます。たとえば、「データベース」という名前のコースには、A、B、Cの3つのトピックがあります。次に、 「データベース」コースの一般試験を作成します。一般的な試験を作成するときに具体的にしたい:

  • トピックAの5つの質問
  • トピックBの6つの質問
  • トピックCの7つの質問

これらの質問は、これらのトピックからランダムに得られます。一般試験を作成するためのフォームを作成しましたが、もちろんフォームでトピックを取得する方法がわかりません。また、トピックごとに入力番号の質問のフィールドを作成します。それで、新しい形式の一般試験のトピックをリストする方法はありますか?各トピックには、そのトピックに対してランダムに取得される番号の質問を入力するためのフィールドがありますか?または、その情報を格納するために新しいテーブルを作成する必要がありますか?

4

2 に答える 2

1

これが私がすることです...

データベースは、その「柔軟性」を考慮する必要があります。そのためには、すべての情報が異なるテーブルに格納されます。次に、データを取得する速度のために、情報を表示するための関係テーブルを作成します。(システムを使用する人の数によって異なります)

だから....フォームトップダウン....

教師用テーブル(1人の教師が多くのコースを教えることができます)..すべてがここから始まります)->コーステーブル(これは他のすべてのベースです)-----------------以下が始まる場合があります相互参照..->トピックテーブル--->g-examテーブルBigQuestionテーブルは同じレベルにある可能性があります
->g-questionテーブルは最下位レベルにある必要があります(g-examおよびBig-Qに戻る可能性があります)

(2レベル上なので、教師情報やトピック情報を保存する必要はありません。ただし、データをすばやく取得するためにこれらの情報を保存することはできます。ただし、情報の保存後に情報を変更する必要がある場合は、覚えておいてください。 ..シンプルな方がいいです...

于 2012-11-18T17:08:18.463 に答える
0

私はちょうど私の答えを調べます...私が言った1つの間違いを見つけました..私は言うべきでした:あなたはg-質問テーブルに教師やトピックの情報を保存する必要はありません..g-質問テーブルは質問キーのみを保存します. g-exam-key と question table と g-exam table はトピックキーを保存します ...そしてトップレベルに戻る参照..

高速アクセス用の高速検索テーブルを作成します。これは毎日更新される可能性があります (例: 教師の名前、トップネームなどを表示するため)。これらのテーブルは名前ではなく「キー」でリンクされているためです。

すみません、正しく言えませんでした

于 2012-11-19T02:19:34.080 に答える