民意调查响应的唯一ID

时间:2012-10-05 15:19:00

标签: c# asp.net

在我的系统中,管理员创建一个民意调查并将其发布到全世界,因此拥有该民意调查链接的用户可以回答它。

有一些问题旨在接收多个答案,因此用户可以在一个答案中选择多个分心。

数据库中的响应表结构

  • ID
  • ActivityID - 投票ID
  • 值 - 区值
  • TimeResponse

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

我会举个例子 让我们说在民意调查中有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

因此,如果我尝试计算身份证,我会得到数字3,代表所回答的地区数量是给定的民意调查。

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

到现在为止,我想到了以下解决方案,但它们都不是很好。

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

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

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

1 个答案:

答案 0 :(得分:1)

我可以看到两种方法。

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

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

希望这有帮助!