您的位置:澳门新葡8455最新网站 > 数据库管理 > 有关站内信的数据库设计

有关站内信的数据库设计

发布时间:2019-11-04 10:57编辑:数据库管理浏览(160)

    站内信:网址运转职员能够向单个(单发卡塔 尔(阿拉伯语:قطر‎或多个(群发卡塔 尔(英语:State of Qatar)顾客推送音信,站内信其实就是向数据库中插入一条条记下。

      前日,发表了博客“群发“站内信”的实现”,获得广大网民呼应,在这里表示多谢。

    数据库设计:

    澳门新葡萄京娱乐场,message【站内信发件箱表】{每趟运转人士发送一条站内信(无论是单发或是群发卡塔 尔(阿拉伯语:قطر‎就能够在发件箱表中增添一条记下}

     澳门新葡萄京娱乐场 1

     表字段:ID、SendID、RecID、MessageID、Statue、DateTime

    messagetext【站内信发件内容表】{每回运转职员发送站内信的从头到尾的经过就能保留到站内信发件内容表中}

    澳门新葡萄京娱乐场 2

    表字段:ID、Title、Message、PData

    messageuserinfo【站内信接受箱表】{客户站内信收件箱}

    澳门新葡萄京娱乐场 3

    表字段:ID、SendID、RecID、MessageID、Statue、DateTime

     

      看了网络好朋友的留言。发掘大家对文中的前两种景况并未有啥样争论,对第几种方案纠纷颇多。小编在这里再把小编的第三种情状详细的演讲一下,和贵宗交换。其余,本文的重头戏首要放在“群发”(也等于点到面卡塔 尔(阿拉伯语:قطر‎,至于“单发”(点到点卡塔 尔(英语:State of Qatar),不在本文的座谈之列。

    政工逻辑:在营业人士发送了一条站内信后,当顾客再度登入时就能够刷新历史站内信,而那个不活跃的顾客就不会更新站内信。

    此情此景:运转人士向有些(单发卡塔尔国或三个(群发卡塔 尔(英语:State of Qatar)客户发送站内信

    增多发件内容:向messagetext站内信发件内容表中增加一条内容记录 {这里先增多messagetext站内信发件内容表发出一条记下,前面message站内信发件箱表中才有MessageID能够提到}

    增多发件人发件记录:向message站内信发件箱表中增添一条发送记录 {备注:假设是单发RecID则是点名顾客的UserID,即使是群发RecID则是0。(0代表全数客商卡塔 尔(英语:State of Qatar)}

    客商登陆时刷新与和煦有关的站内信,并将数据拉长到messageuserinfo站内信选拔箱表

    1. 查询条件:【发件人不是友好】并且【收件人是投机依旧收件人是全体人】况兼【自个儿收件表中不设有的笔录】

      select m.id from Message as m where (m.recid='所有人' or m.recid='自己的ID') and m.sendid!='自己的ID' and m.MessageID not in (select u.messageid from MessageUserInfo as u  where u.recid='自己的ID')
      

        

    2. 将相关的站内信音讯增加到本身的收件表中,并标记未读。

      1.   将方面【查询条件】中查询出来的id消息用做查询message站内信发件箱表的条件

        select * from message  where id=上面的m.id
        

          

      2. 将赢获得message站内信发件箱表数据拉长到messageuserinfo站内信接收箱表

    3. 查询出本身的站内信记录

      select u.ID,u.RecID,m.Title,m.Message,u.Statue,m.PDate from messageuserinfo as u join messagetext as m on u.MessageID = m.ID where u.RecID='自己的ID'
      

        

       

      先看看,第三种意况。站内的顾客是多量级的(上百万卡塔 尔(英语:State of Qatar)。

      经过考虑,表设计改正如下

     

      表名:Message

      ID:编号;RecID:选拔者编号;MessageID:站内信编号;Statue:站内信的查阅情状;

      表名:MessageText 

      ID:编号;SendID:发送者编号;Message:站内信的源委;PDate:站内信发送时间;

     

      那样,管理员(假使ID=1卡塔 尔(英语:State of Qatar)给具有的顾客产生龙活虎封站内信。就在MessageText表中插入一条记下。例如:

      ID:4;SendID=1;Message=Good;PDate:2010-4-9

     

      某些顾客(假使ID=7卡塔 尔(阿拉伯语:قطر‎,登入系统后,发以往MessageText的表中,有ID=4的记录,并且在Message中从不RecID=7且MessageID=4的记录,表达那条记下那么些客商未有读过,给个提醒音信给客商,提醒客户看站内信。注意,这时候照例未有在Message中插入记录。意气风发旦该客户点击查阅该站内信的时候,在Message中插入一条记下,如:

      ID:55;RecID=7;MessageID=4;Statue=已读

      如若该顾客删除那条站内信,则实在是改正上面那条记下:

      ID:55;RecID=7;MessageID=4;Statue=删除

      那样一来,那些客商下一次登入的时候,由于Message表中有对应的笔录,也不会提示客商看站内信。

     

      有网络老铁疑忌,为什么删除的时候,只是标志“删除”,那样,经过了非常长的时间,不是荒凉多量的上空吧?那一个网络基友说的也是有道理。可是,我们如故要深入分析现实的情形。

      当网址的客户高达百万级的时候,个中的“活跃客户”(参看上文的介绍卡塔尔国或然只占在这之中的一小部分。

      借使,网站客户200万,个中活跃顾客40万。

      生机勃勃封站内信,在MessageText中有一条记下,40万活跃客户都看了站内信(其实,那也非常的小大概,有无尽的人是不看站内信的卡塔尔。在Message中插入了40万条记下。今后,不管是阅读也许是删除,在Message中保留了那40万条记下。

     

      好,借使不接收这种方法,在群发的时候,往Message中陈设200万记下,40万活泼顾客都看了信,况且都努力的去除了站内信(那是非常小大概的卡塔尔,Message中仍旧封存了160万条记下。因为,那么些不活跃的客商或然永世都不会登录了。那40万条记下(最坏的场所,因为只要有人不看站内信,就不会变动记录卡塔尔国和160万条记下(最佳的情事,因为不是各种客户都会删除站内信。卡塔 尔(阿拉伯语:قطر‎相比较,那几个尤其节省空间吗?

     

      站内信的宏图,要基于你的受众群的具体意况而定,假若您的受众群活跃度相近百分百,何况每人都很费力,笔者的统筹当然有题目。可实际中这几个理想图景大约是不可能现身的。

      

      有网络好友提议,借使站内信的靶子不是百分百而是风姿洒脱部分吧?抱歉,这几个也不在本文商讨之列,你能够对本身的表展开扩大,以完结你的必要。

     

      多谢各位网民的调换。我在那想说的是,我们规划三个连串,必得得结合实际意况,依据实际处境来制订,比能达到多少个相比优异的现象。

    本文由澳门新葡8455最新网站发布于数据库管理,转载请注明出处:有关站内信的数据库设计

    关键词:

上一篇:大面积难点

下一篇:没有了