search

Home  >  Q&A  >  body text

php - 数据库投票表设计

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

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

迷茫迷茫2828 days ago860

reply all(3)I'll reply

  • 天蓬老师

    天蓬老师2017-04-11 10:38:56

    Redis集合 比较适合

    reply
    0
  • ringa_lee

    ringa_lee2017-04-11 10:38:56

    可以使用Redis 简单计数器实战

    Redis常见七种使用场景(PHP实战)

    reply
    0
  • PHP中文网

    PHP中文网2017-04-11 10:38:56

    一、建议考虑使用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中文社区深圳用户大会开始报名啦!大神云集!

    reply
    0
  • Cancelreply