1

さまざまなモジュール/カテゴリの質問を含み、さまざまな質問/問題の種類 (つまり、複数選択、音声付き複数選択、音声とフォーム、その他) を許可するテスト ツールを開発しています。テスト (クイズ) には、選択肢の数が可変の多肢選択問題が含まれます。

以下は私の初期スキーマです:

Category(Id, Name)

Question (Id, CategoryId)

MultipleChoiceQuestion (Id, QuestionId, Text)

MultipleChoiceWithAudioQuestion (Id, QuestionId, Text, AudioFile, Transcript)

AudioQuestion (Id, QuestionId, AudioFile, Transcript)

Answer (Id, QuestionId, Correct)

MultipleChoiceAnswer (Id, AnswerId, Text)

AudioQuestionAnswers (Id, AnswerId, Field, Value)

Test (Id, UserId, TestDate)

TestQuestions (Id, TestId, QuestionId)

TestAnswers (Id, TestId, QuestionId, AnswerId)

さまざまな質問/問題タイプを許可する最善の方法は、その質問タイプに固有の追加フィールドを含むサブタイプごとにテーブルを作成することだと思いました. このアイデアは、データ モデリングに関する次の記事から得ました:論理データ モデリングにおけるタイプ、サブタイプ、およびカテゴリ パターン

テストはさまざまなカテゴリで構成され、各カテゴリはその特定のカテゴリの質問をランダムに選択して構成されます。ユーザーが実施した各テストは、データベースに保存されます。

私は正しい軌道に乗っていると思いますか?EntityFramework のような ORM を使用してテーブルをクラスにマップするにはどうすればよいですか。

私が考えた別のスキーマは、一般的すぎてクエリが難しいように思えました。

Content (Id, Name)

ContentMeta (Id, ContentId, MetaKey, MetaValue)

階層複合型である Test を表示するにはどうすればよいですか? ASP .NET MVC 3 (Razor) でモデル バインドを使用することは可能ですか?

4

1 に答える 1

1

どうですか:

調査 ID 名 説明

QuestionType ID 名前 説明

質問 ID QuestionTypeId 表示

アンケートには質問があり、質問にはタイプがあります。答えを保存することになると、それは別の話です。何万もの回答があり、そのデータをアドホックにクエリする必要がある場合は、動的 SQL を記述して各調査のテーブルを作成します。それ以外の場合は、回答を 1 つのテーブルに格納します。テーブル。

于 2011-10-10T08:21:00.617 に答える