基本上这是一份调查问卷,但这不仅要求是/否问题。有问题以表格的形式提出。以下是调查问卷的一个步骤页面的示例:
调查问卷允许客户保存他们输入的内容,退出,稍后返回并继续填写其余内容,然后提交。管理员还将审核调查问卷,并允许供应商仅访问某些问题,以防需要进行任何更正。
以下文字描述了我存储数据的解决方案,但我想知道是否有更简单的方法来执行此操作。这里也是问题和答案表的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
非常感谢任何帮助。
答案 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"
对于超过第一个版本的新迭代,只有在增加巨大的业务价值时才添加一对多或多对多关系。在复杂性方面,关系是昂贵的,并且将复杂性保持在最低限度是良好设计的本质。