存储和显示问卷数据,更容易解决方案?

时间:2009-12-29 19:23:57

标签: php asp.net mysql xml asp.net-mvc

基本上这是一份调查问卷,但这不仅要求是/否问题。有问题以表格的形式提出。以下是调查问卷的一个步骤页面的示例:

调查问卷允许客户保存他们输入的内容,退出,稍后返回并继续填写其余内容,然后提交。管理员还将审核调查问卷,并允许供应商仅访问某些问题,以防需要进行任何更正。

以下文字描述了我存储数据的解决方案,但我想知道是否有更简单的方法来执行此操作。这里也是问题和答案表的Database Design,位于图像的右侧。

问题的列名也应该作为单独的问题存储,除了现在问题4.a,将有

4.a.1, "Standard"  
4.a.2, "Certifying Organization"  
4.a.3, "Date of Last Certification"

所以要显示这将非常简单。如果我们将问题的类型设置为新类型,例如TABLECOL,我们就会知道创建一个表和表列“。此外,由于数据将按升序拉出,因此它不应该是一个问题。为此创建html。无论如何,现在我认为我们可以将所有单元格作为文本输入类型。(也许将来,如果时间到了,表中的一列可能不是文本输入字段,例如可以是下拉列表,因此我们需要一种方法来描述要使用的内容。)

现在,当在html中显示表时,问题4.a默认有三行。其他问题有不同的数字。我也在考虑表格列的验证。所以对于所有这些,我正在考虑创建一个名为QuestionAttributes的新表。这将用作存储问题ID的许多属性的方法。所以这个用法的例子是,问题4.a是一个TABLE,应该显示3行。在属性表中会有一个条目,例如: idof 4.a,“MINROWS”,3

为了将数据存储在答案表中,我们必须在答案表中添加一个新字段,以便给出答案唯一性和排序能力。因此,我不想使用自动增量值,而是存储UTC时间戳,如果需要,还可以描述何时给出答案。这将允许排序以帮助我们在网页表格中以正确的顺序显示数据。基本上,在答案表中,我们应该为每个答案都有一个不同的整数值。

检索答案的查询应该在Questions表sort_order和Answers表utc_timestamp上排序。此查询的结果如下所示:

4.a.1, "Answer1", 9878921  
4.a.2, "Answer2", 9878923  
4.a.3, "Answer3", 9878925  
4.a.1, "Answer1", 9878926  
4.a.2, "Answer2", 9878928  
4.a.3, "Answer3", 9878929

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你可能会不同意,但我认为设计是过度设计的,特别是对于第一个版本。我会选择尽可能简单的设计:

QuestionaireId
Status           f.e. "Pre-Approval"
StatusDate
Answerer         f.e., "Mike Mayhem"
Question1        f.e., "Yes"
Question2        f.e., "Option6"
Question3        f.e., "Blah Blah Blah"
...

然后你可以有一个日志表,说明有人批准某个项目,回答问题等等:

LogId
QuestionaireId
LogDate
LogEntry         f.e., "Questionaire approved by Bill"

对于超过第一个版本的新迭代,只有在增加巨大的业务价值时才添加一对多或多对多关系。在复杂性方面,关系是昂贵的,并且将复杂性保持在最低限度是良好设计的本质。