数据库投票表设计

如果是采用mysql数据库做投票统计,方法一:会采用text类型的字段存放用户的user_id,但是不好拓展,用户量大了之后或者用户id大了之后字段就容纳不了了,只适合用户量小的时候
clipboard.png

方法二:也会采用多对多的设计[id,teacher_id,day,user_id],一次投票就是一条记录,这样比较方便拓展,但是数据量会比较大
请问还有没有更好的方法?或者还能用其他数据库方便做投票统计的

阅读 5.5k
3 个回答

Redis集合 比较适合

一、建议考虑使用MongoDB;MongoDB提供了极限性能以及强大的功能:

1、极限性能:分布式系统,横向扩展能力强;

2、强大的功能方面,例如在NoSQL领域中领先的统计分析能力,MongoDB的aggregation做的很优秀。

MongoDB是在性能扩展和强大功能两个价值取向上平衡做的领先的NoSQL数据库。

二、同时,MongoDB的数据模型设计是一件令人愉悦和简单易行的事情,直接面向您的查询/增/删/改的需求来设计您的数据模型。

1、中小应用设计的collection的数量不需要太多,以满足业务需求为主,不需要过度担心数据冗余;

2、MongoDB的数据模型设计主要是两种思路:

1)嵌入思路embedding;
   
   大部分情况下,使用嵌入思路建模;
   
2)关联思路referencing;

   一般在担心单个文档过大(超过16M)的时候考虑;
   或者有对嵌入的文档有单独查询/操作等需求的时候,才考虑;

三、针对您的需求:

您可以考虑将投票的信息保存在数组中,并设置field记录总数;

大概情形如下:
{_id:
 xxx:
 xxx:
 count:(记录总数)
 Voter:[{id:
          xxx:
          time:}]
 }

您具体开始数据模型设计时,可以进一步交流。

Love MongoDB!Have Fun!


戳我<--请戳左边,就在四月!MongoDB中文社区深圳用户大会开始报名啦!大神云集!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题