0

在我的系统中,管理员创建一个投票并将其发布到全世界,以便拥有投票链接的用户可以回答它。

有一些问题旨在接收多个答案,因此用户可以在一个响应中选择多个分散注意力。

DB中的响应表结构

  • ID
  • ActivityID - 投票 ID
  • 价值——地区价值
  • 时间响应

在数据库中,我目前正在分别保存每个响应。

我给你举个例子 假设投票中有 4 个区 (a,b,c,d) 用户选择以下区 (a,b,c)

响应表将如下所示:

   ID       ActivityID      Value    TimeResponse
    1           234            a        01/01/2012 
    2           234            b        01/01/2012
    3           234            c        01/01/2012

因此,如果我尝试计算 ID,我将得到数字 3,它代表已回答的地区数是给定的民意调查。

但是我需要给定民意调查中每个用户的响应数量,所以我需要以某种方式将这两者结合起来......

到目前为止,我考虑了以下解决方案,但它们都不是很好。

  • 第一个解决方案是添加一列用户的IP,但有时我无法获取用户的IP。
  • 第二种解决方案是使用 sessionIDManager 添加用户的 sessionID 列,但如果用户回答两次(2 个响应),它将存储相同的会话 ID。

仅供参考,回答民意调查的用户是匿名的。

并且系统要求之一是允许用户多次回答民意调查

4

1 回答 1

1

我可以看到两种方法。

一种是在每次用户回答投票时生成一个 UUID。在数据库中创建一个列,例如AnswerID,并在为每个响应创建行时使用相同的 UUID。在 C# 中,您可以使用Guid.NewGuid(). 然后,您可以通过查询不同的AnswerID值来计算响应数。

第二种方法是为给定问题的每组答案使用一行。例如,如果用户回答了 A、B 和 C,您会将响应存储为“A/B/C”。这将使查询某个答案的总数变得更加困难,尽管某些数据库系统可能会使这更容易(例如,PostgreSQL具有可索引的数组类型)。

希望这可以帮助!

于 2012-10-05T15:53:52.253 回答