在我的系统中,管理员创建一个民意调查并将其发布到全世界,因此拥有该民意调查链接的用户可以回答它。
有一些问题旨在接收多个答案,因此用户可以在一个答案中选择多个分心。
数据库中的响应表结构
在数据库中,我目前正在单独保存每个响应。
我会举个例子 让我们说在民意调查中有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,代表所回答的地区数量是给定的民意调查。
但我需要在一个给定的民意调查中每个用户的回复数量,所以我需要以某种方式将这两个结合起来......
到现在为止,我想到了以下解决方案,但它们都不是很好。
仅供参考,回答民意调查的用户是匿名的。
系统要求之一是允许用户多次回答民意调查
答案 0 :(得分:1)
我可以看到两种方法。
一个是每次用户回答民意调查时生成UUID。在数据库中创建一个列,例如 AnswerID ,并在为每个响应创建行时使用相同的UUID。在C#中,您可以使用Guid.NewGuid()
创建UUID。然后,您可以通过查询不同的 AnswerID 值来计算响应数。
第二种方法是对给定问题的每个集使用单行。例如,如果用户回答了A,B和C,则将响应存储为“A / B / C”。这会使查询某个答案的总数变得更加困难,尽管某些数据库系统可能会使这更容易(例如,PostgreSQL具有可索引的数组类型)。
希望这有帮助!