2

我已经编程一年了,但从那以后我再也没有在任何地方问过问题。我有一个架构问题。我有 78 个问题和答案,这些问题在 html 代码中是静态的,除了问题 40 和 41 之外,所有问题都可以回答为是、否、n/a。我将答案存储在一个表格中,每个表格都有一个列问题。例如,表格答案:

userid (unique)
companyid (unique)
q1
q2
q3
...
q100

答案表将只有每个公司的唯一行。如果用户编辑问卷,则该行将被转移到历史表并再次插入新行。如果我使用表格来回答问题或答案,那么对于每个公司,我将有 78 或 100 行带有答案的数据(在这种情况下,答案将来自下拉列表,其中只有是、否和 n/a 作为唯一选项.

我想知道是否有更好的方法来实现这一点,因为我需要实现 3 个不同的 sql 语句(问卷不完整、完整或至少一个答案设置为“否”的问卷),而不是使用语句来识别每个问卷我应该添加一个带有状态的新列并使用后面的代码吗?

我试图尽可能清楚,任何建议都会被欣赏。

4

2 回答 2

1

您需要规范化您的数据。标准化有多个级别,但通常以第 3 范式为目标是一个好主意。这是关于前 3 个范式的教程

在您的情况下,您可能不希望问题成为列,因为问题可能具有诸如“问题文本”和“问题类型”之类的属性,并且因为人们可能希望稍后添加和编辑问题。

考虑制作一个问题表,每个问题都是该表中的一条记录。

例如,Answers 可能是另一个表,其中有一个外键指向正在回答的问题,以及一个用于实际答案的列。也可能会有外键返回给用户和公司。

于 2013-01-09T03:37:33.287 回答
1

我更喜欢创建一个存储 userid、questionid 和 answerid(或答案本身)的表。这样,您可以轻松地将新问题引入系统,而无需修改表结构。它还应该更容易确定是否有人至少回答了一个问题。

有一些潜在的缺点,只是取决于情况。

于 2013-01-09T02:41:35.873 回答