`
baiyuxiong
  • 浏览: 174969 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

谈站内信的数据库设计

    博客分类:
  • php
阅读更多
看到一个关于站内信设计的文章:http://www.cnblogs.com/grenet/archive/2010/03/08/1680655.html
受些启发,刚好自己也需要这样一个功能,就分享一下我的设计。
需要注意的点:
1、站内信可以是点对点发,也可以是群发,但发件人永远只有一个。
2、发件人不需要知道信是否已读
3、删除的时候,如果发件人把信删了,收件人的信不能丢失

综合分析,设计表如下:
message_sender 发件人信息表
mid from_uid from_username title content from_deleted date

mid:信息ID,自增
from_uid from_usernam:发件人的ID和用户名
title content:信息标题和内容
from_deleted:发件人是否删除

message_receiver 收件人信息表
rid mid to_uid to_username is_readed is_deleted

rid:id 自增
mid:信息ID,与message_sender表中MID对应
to_uid to_username:收件人信息
is_readed is_deleted:收件人是否已读是否删除

使用:
查发件箱:只需要查message_sender表
查收件箱:需要同时查两个表
群发邮件:message_sender表只需要插入一条数据,message_receive表重复插入。
删除邮件:只需要修改状态值

对于删除邮件,可能时间长了,会有一些收、发件人都删除的无用邮件存在。可以定期运行一断脚本来清理无效邮件,或者直接在删除的时候判断是否双方都删除了邮件,这样对群发实现相对复杂点。

当然,如果网站想记录所有的邮件往来,即使用户删除了,管理员还想看到,那只改一下状态就好了。

建表SQL
CREATE TABLE `message_sender` (
  `mid` int(11) NOT NULL auto_increment,
  `from_uid` int(11) NOT NULL COMMENT '发信人',
  `from_username` varchar(32) NOT NULL,
  `title` varchar(200) NOT NULL COMMENT '信息标题',
  `content` text NOT NULL COMMENT '信息内容',
  `from_deleted` tinyint(4) NOT NULL,
  `date` int(10) NOT NULL COMMENT '发送日期',
  PRIMARY KEY  (`mid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='用户站内信' AUTO_INCREMENT=4 ;

CREATE TABLE `ar_message_receiver` (
  `rid` int(11) NOT NULL auto_increment,
  `mid` int(11) NOT NULL,
  `to_uid` int(11) NOT NULL,
  `to_username` varchar(32) NOT NULL,
  `is_readed` tinyint(4) NOT NULL,
  `is_deleted` tinyint(4) NOT NULL,
  PRIMARY KEY  (`rid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
分享到:
评论
2 楼 baiyuxiong 2011-06-23  
kimble 写道
这个有个致命的设计问题,如果想查看垃圾箱的短信,则需要操作2个表。

这个不算是致命问题,收件人看信,也是操作两个表。这个很正常。
你要用一个表解决这个问题的话,表里面的数据重复就太多了。
1 楼 kimble 2011-06-22  
这个有个致命的设计问题,如果想查看垃圾箱的短信,则需要操作2个表。

相关推荐

    站内信的数据库设计

    “站内信”有两个基本功能 一:点到点的消息传送。用户给用户发送站内信,管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息。 但根据不同的情况,有不同的设计模式

    数据库设计经验谈 数据库设计经验 数据库设计经验总结谈

    数据库设计经验谈 数据库设计经验谈 数据库设计经验 数据库设计经验总结

    站内信系统数据库设计.pdf

    站内信系统数据库设计 站内信系统数据库设计 站内信系统数据库设计 很多⽹站系统(cms系统、sns系统等),都有站内信的功能。 站内信不同于电⼦邮件,电⼦邮件通过专门的邮件服务器发送、保存。⽽站内信是系统内的消息...

    分享网站群发站内信数据库表设计

    而“站内信”是系统内的消息,说白了,“站内信”的实现,就是通过数据库插入记录来实现的。  “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息...

    网吧管理系统数据库设计

    网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档以及相关报表网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关...

    站内信-类似于邮箱

    而“站内信”是系统内的消息,其实就是通过数据库插入记录来实现的。 “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信,管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定...

    浅谈数据库设计技巧-程序员应该读的

    浅谈数据库设计技巧,里面详细解说数据库设计方面的技巧,让程序员做数据库设计更灵活处理.

    twitter 数据库 设计 微博数据库 设计

    twitter数据库 twitter数据库设计 微博数据库设计

    微博数据库设计 设计网站数据库

    微博 数据库 设计,数据库详细设计,网站数据库设计

    crm数据库设计文档crm数据库设计文档

    crm数据库设计文档crm数据库设计文档

    数据库设计经验谈,比较详细的数据库设计经验(doc文档),

    比较详细的数据库设计经验(doc文档),对于即将毕业设计的同学看过来。。。一共十页

    录信数据库技术白皮书.pdf

    录信数据库是为探索性分析与即席分析而设计的数据库,使用索引+大数据技术,可以对万亿级别的数据做到秒级数据检索及统计分析服务。 录信数据库支持万亿秒查;数据规模超大,数据时效性高,可节约千倍IO,可对接外部...

    自己动手设计数据库

    《自己动手设计数据库》主要讲述数据库的设计,讨论了如何建立表结构、确定主键、设置字段说明、建立表关系、确立业务规则、建立视图和各层次的数据完整性,以及如何避免不好的设计等问题。《自己动手设计数据库》...

    数据库设计的5个步骤

    数据库设计 数据库设计 数据库设计 数据库设计 数据库设计

    数据库设计说明书

    本数据库设计说明书是关于寝室管理系统数据库设计,主要包括数据逻辑结构设计、数据字典以及运行环境、安全设计等。 2、本数据库设计说明书读者:用户、系统设计人员、系统测试人员、系统维护人

    浅谈数据库设计技巧

    浅谈数据库设计技巧.mht

    工资管理系统数据库设计

    工资管理系统数据库设计,内有具体的sql输入项等

    收费停车场管理系统数据库设计_数据库课程设计论文

    收费停车场管理系统数据库设计_数据库课程设计论文

    数据库设计指南.pdf

    数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf数据库设计指南.pdf...

Global site tag (gtag.js) - Google Analytics