Как мне создать схему для движка тестов? - PullRequest
1 голос
/ 09 октября 2011

Я занимаюсь разработкой инструмента тестирования, который будет включать в себя различные модули / категории вопросов и учитывать различные типы вопросов / проблем (т. Е. Множественный выбор, множественный выбор со звуком, аудио плюс форма и т. Д.).Тест (викторина) будет включать в себя вопросы с несколькими вариантами ответов с различным количеством вариантов.

Ниже представлена ​​моя исходная схема:

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).

1 Ответ

1 голос
/ 10 октября 2011

Как насчет:

Обзор Я бы название Описание

QuestionType Я бы название Описание

Вопрос Я бы QuestionTypeId Дисплей

У опроса есть вопросы, а у вопросов есть типы. Когда дело доходит до хранения ответов, это другая история. Если у вас будет десятки тысяч ответов, и вам придется запрашивать эти данные по отдельности, то я бы написал динамический SQL, чтобы создать таблицу для каждого из ваших опросов, в противном случае я бы сохранял ответы в одном таблица.

...