我们网站的一个部分要求用户询问 20 个有关他们自己的多项选择问题(“个人资料”)。网站的这一部分将被频繁查看​​,并且偶尔会更新。该网站预计会产生大量流量,因此正在考虑尝试为性能问题做好准备。

我可以看到将其存储在数据库中的 3 种方法是:

  1. 为每个问题创建 1 个表,每个表有 QuestionID 和 Answer,然后创建一个 CustomerInfo 表来存储个人资料数据,外键映射到问题。

  2. 问题、问题类型和答案表。将所有内容都填充到这些构造中。我在这里特别关心的是更新配置文件所需的 20 个左右的插入。这会在高流量时影响性能吗?

  3. 非规范化的单个表,每个问题一个字段,将答案代码硬编码在 HTML 和/或 C# 对象中。

我倾向于#2 或#3。您认为最好的解决方案是什么?

有帮助吗?

解决方案

我将创建以下表格:

Survey (PK:SurveyID)
Question (PK:QuestionID, FK:SurveyID)
QuestionAnswer (PK:QuestionAnswerID, FK:QuestionID)
QuestionResponse (PK:QuestionResponseID, FK:QuestionAnswerID, FK:UserID)

您可以通过在一条语句中执行插入来最小化负载,例如:

insert into QuestionResponse
(QuestionAnswerID, UserID)
select 23, 3
union all
select 72, 3
union all
select 488, 3
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top