我有一个项目来创建一个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; }
}
Run Code Online (Sandbox Code Playgroud)
我不确定它是好的.你能给我一个更好设计的建议吗?
属性 A 到 E?不,谢谢!我会按如下方式布置我的表格:
Quiz (int QuizId, ...)
Problem (int ProblemId, int QuizId, string Question)
Answer (int AnswerId, int ProblemId, int Index, string Answer)
Run Code Online (Sandbox Code Playgroud)
字段名称应该是不言自明的(索引是单个问题答案的排序索引,如果它们的顺序很重要)
简单直观的设计总是最好的,因为它们真的很简单,我们开始怀疑自己;-)。除了您还可以将正确答案与问题本身一起存储之外,您做得很好。那么它就不再只是一个问题了。现在是 ProblemAndAnswer 或 QuizItem。
因此,将其作为多个列存储在单个表中就可以了。但您还需要了解它的含义。这意味着您假设一个问题总是有 5 个选择。如果少于 5 个,那么没关系,因为您可以存储空值。但如果你想要更多怎么办?这是单表模型开始崩溃的时候。您现在会开始认为一个问题确实可以有 1 个或多个选择,并且希望拆分为父子表......现在您已经做出了明智的决定;-)