Я занимаюсь разработкой инструмента тестирования, который будет включать в себя различные модули / категории вопросов и учитывать различные типы вопросов / проблем (т. Е. Множественный выбор, множественный выбор со звуком, аудио плюс форма и т. Д.).Тест (викторина) будет включать в себя вопросы с несколькими вариантами ответов с различным количеством вариантов.
Ниже представлена моя исходная схема:
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)
Я подумал, что лучший способ учесть разные типы вопросов / проблем - это создать таблицу для каждого подтипа, которая будет содержать дополнительные поля, определенныена этот тип вопроса.Я получил эту идею из этой статьи о моделировании данных: Шаблоны типов, подтипов и категорий в моделировании логических данных
Тест состоит из разных категорий, и каждая категория будет состоять из случайного выборавопросы в этой конкретной категории.Каждый тест, выполненный пользователем, сохраняется в базе данных.
Как вы думаете, я на правильном пути?Как мне сопоставить мои таблицы с классами, используя ORM, такой как EntityFramework.
Другая схема, которая мне показалась, показалась мне слишком общей и сложной для запроса.
Content (Id, Name)
ContentMeta (Id, ContentId, MetaKey, MetaValue)
Как бы я отобразилТест, который является иерархическим составным типом?Можно ли по-прежнему использовать привязку модели в ASP .NET MVC 3 (Razor).