2011-10-09 3 views
1

Je suis en train de développer un outil de test qui inclura différents modules/catégories de questions et permettra différents types de questions/problèmes (choix multiple, choix multiple avec audio, audio plus un formulaire, autres). Un test (quiz) comprendra des questions à choix multiples avec un nombre variable de choix.Comment créer un schéma pour un moteur de test?

Ci-dessous mon schéma initial:

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) 

Je pensais que la meilleure façon de permettre différents types de questions/problèmes était de créer une table pour chaque sous-type qui contiendrait les champs supplémentaires propres à ce type de question . J'ai eu cette idée de cet article sur la modélisation de données: Type, Subtype, and Category Patterns in Logical Data Modeling

Un test se compose de différentes catégories et chaque catégorie consistera en une sélection aléatoire de questions dans cette catégorie particulière. Chaque test effectué par un utilisateur est enregistré dans la base de données.

Pensez-vous que je suis sur la bonne voie? Comment mapper les tables à des classes en utilisant un ORM comme EntityFramework.

Un autre schéma auquel je pensais me semblait trop générique et difficile à interroger.

Content (Id, Name) 

ContentMeta (Id, ContentId, MetaKey, MetaValue) 

Comment afficher le test qui est un type composite hiérarchique? Serait-il encore possible d'utiliser Model Binding dans un ASP .NET MVC 3 (Razor).

Répondre

1

Que diriez-vous:

Enquête Id Nom Description de

questiontype Id Nom Description de

Question Id QuestionTypeId Affichage

Le sondage comporte des questions et des questions. Quand il s'agit de stocker des réponses, c'est une histoire différente. Si vous avez des dizaines de milliers de réponses et que vous devez interroger ces données de manière ad hoc, j'écrirais un SQL dynamique pour créer une table pour chacune de vos enquêtes, sinon je stockerais les réponses en une seule fois. table.

Questions connexes