我有一个项目来创建一个asp.net mvc网站来生成一个测验。 这是规范:
我能想到的最简单的模型如下:
public class Problem
{
public int ProblemId { get; set; }
public string Question { get; set; }
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
public string E { get; set; }
}
我不确定这是好事。 你能给我一个更好设计的建议吗?
答案 0 :(得分:4)
属性A到E?不,谢谢!我按如下方式布置表格:
Quiz (int QuizId, ...)
Problem (int ProblemId, int QuizId, string Question)
Answer (int AnswerId, int ProblemId, int Index, string Answer)
字段名称应该是不言自明的(索引是单个问题答案的排序索引,如果它们的顺序很重要)
答案 1 :(得分:3)
简单直观的设计总是最好的,因为它们非常简单,我们开始怀疑自己;-)。你做得很好,除了你也可以用问题本身存储正确的答案。那么它不再仅仅是一个问题。所以现在是ProblemAndAnswer或QuizItem。
所以这可以作为多列存储在单个表中。 但你还需要了解它的含义。这意味着你正在做一个假设,一个问题总是会有5个选择。如果你将少于5,那么你可以存储空值。但是,如果你想要更多呢?这是单表模型开始分崩离析的时候。你现在开始认为一个问题真的可以有一个或多个选择,并且想要分成父子表......现在你做出了明智的决定; - )
答案 2 :(得分:3)
表格Question
有一个id
和一个description
,这是问题的文字(“猫是秘密狗吗?”)。
编辑:此外,Question
表格有一个correct_answer_id
,对应Answer
表格中的正确行。
表Answer
有一个question_id
,将其链接回Question
,另一个description
,这是答案的文字(“这取决于你的猫的颜色。“)。
使用此架构,问题没有硬编码的答案数。
答案 3 :(得分:1)
我正在研究相同类型的数据库结构。最好有一个选择表来根据特定的问题ID插入选项。测验ID是一个单独的表,其中包含问题和测试持续时间。