总公司有发文功能。
向下面的所有的子公司进行发文。
子公司接收发文后要有即时提醒功能,在子公司看过这条发文后,将不再做提醒。而且要求,总公司那里可以看到各个子公司是否已经阅读过了这条发文。有点类似于论坛的短消息群发功能,如何建表?
谢谢。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【joejoe1991】截止到2008-07-18 10:53:48的历史汇总数据(不包括此帖):
    发帖的总数量:231                      发帖的总分数:6602                     每贴平均分数:28                       
    回帖的总数量:1807                     得分贴总数量:903                      回帖的得分率:49%                      
    结贴的总数量:221                      结贴的总分数:6042                     
    无满意结贴数:5                        无满意结贴分:140                      
    未结的帖子数:10                       未结的总分数:560                      
    结贴的百分比:95.67 %               结分的百分比:91.52 %                  
    无满意结贴率:2.26  %               无满意结分率:2.32  %                  
    值得尊敬
      

  2.   

    joejoe mm
    :)
    这个问题你上次不是问过了么
      

  3.   

    关注下 
    我也正要做joejoe说的功能
      

  4.   

    那用两张表关联啊一张消息表,一张子公司的表,一对多关联Message(id pk, message, ...)
    SubCompany(companyId, messageId, isRead)总公司发消息给 1 万个公司(不知道是有选择性的发,还是全发啊?)如果是有选择性的话,那只能在发消息时在子公司表插入多条子公司数据
    Message(1, 'hello')
    SubCompany(S01, 1, 0)
    SubCompany(S03, 1, 0)
    SubCompany(S05, 1, 0)
    SubCompany(S07, 1, 0)如果是全发的话,那就只增加消息表
    Message(1, 'hello')子公司在检查是否有消息时,只看看在 SubCompany 中不存在的 Message ID 这时就显示该消息
    (但是这样的话,如果消息很多,SQL 估计不好写,没有上一种一次插入 N 条数据好)。如果打开
    消息后就在 SubCompany 表中插入一条记录。
      

  5.   


    或者建个字段用来存消息查阅者的 ID,如果字段值为 null 表示消息未读过,不为 null 则取出 ID 就知道谁读的消息了,能省一个字段。
      

  6.   

    发表一下个人意见.
    数据库当中,应该有一个用户表,记录用户的信息,它肯定有个user_id.
    其次,应该有一个消息表,记录消息的内容的,它也应该有个msg_id.如果想记录用户与消息的关系,那么建一个桥表就可以了.
    比如,你想记录用户是否读过这个消息,那么,桥表可以这样建:一共三个字段就可以,分别是user_id,msg_id和msg_state.
    其中msg_state,当其为0时表示未读这个消息,当它为1时表示已经读过了.群发的时候,你将这种记录插入到表里,就可以了.那么,现在会出现一个问题,就是,当用户很多的情况下,每发一条消息,要插很多条记录.
    这个可以换一种思维方式来解决.因为,最好理解的方法,就是,每个用户都查这个桥表,如果又为0的记录,就将其内容显示出来,如果为1的就标明已经读过了.这样做的优点是所有的记录状态简单明了,便于管理,以及功能的扩展.但是,由于消息的时效性,会有大量的垃圾数据要定时清理或做表数据的迁移.下面提供一个新思路,上面说的那三个表不变.最后的那个桥表,只插入已经读过的消息,也就是说msg_state为1的记录(当然该字段也可以不使用,只要记录存在就表示已经读过了),那么,所有用户在查询自己的群发消息的时候,从消息表里面找出有效的消息,然后再过滤一遍桥表,把不存在的消息显示出来就可以,桥表中存在的,就是读过的消息.(注意,若保留msg_state字段,可以扩展其他功能,比如该消息在阅读后被删除至垃圾箱了,用2表示就可以了)
      

  7.   

    将用户分组,建个 UserGroup 表,记录用户分组信息。发信息到一组只记录组ID,消息阅读历史另建表存储。