网站有一万个会员,在后台给会员发小短信,如果没有看信息的提示有“新信息”,如果看了的,就不提示。目前我的想法是这样:如果我在后台发了一条信息,就在表中写入一万条信息,分别表示每个会员有没有查看该信息。请问有没有更好的机制处理这个问题?
因为我发一条信息就要给写入一万条信息,如果我有一百万个会员就要写入一百万条信息了;如果我发100条信息,就要往数据库写入100×一百万条信息,感觉这种方法很不合理。

解决方案 »

  1.   

    我给个思路:建两个表,一个是短信息表mobileinfo,一个是短信息阅读表checkinfo
    用户第一次阅读短信息后向checkinfo表添加一笔记录,开始的时候判断某用户checkinfo有没记录,如没有就没读。
    就这样,很简单的
      

  2.   

    楼上的,我给个思路:建两个表,一个是短信息表mobileinfo,一个是短信息阅读表checkinfo
    用户第一次阅读短信息后向checkinfo表添加一笔记录,开始的时候判断某用户checkinfo有没记录,如没有就没读。
    就这样,很简单的这种思路可以,不过得考虑过一段时间要删除记录,否则数据量过大
      

  3.   

    请问有没有更好的机制处理这个问题? 
    因为我发一条信息就要给写入一万条信息,如果我有一百万个会员就要写入一百万条信息了;如果我发100条信息,就要往数据库写入100×一百万条信息,感觉这种方法很不合理。
    我觉100万条记录是必须的,可以优化的地方有两处:
    1) 为提高速度,在用户表建立冗余字段"短消息数量",当系统向会员发送时和会员查看时,修改该字段值,会员登录时可以看到“您有N条短消息”字样,再点击之后才能查看具体有哪些短消息
    2) 建立[已处理短消息表],把会员已经查看过的短消息移动到该表。
    3) 如果你觉得100万冗余太厉害,那就在[待处理消息表]的基础上,再建立消息内容表(sendUserID,msgID,msgText),把[待处理消息表]优化一下,字段: receiveUserID, msgID, sendTime