`
baiyuxiong
  • 浏览: 178294 次
  • 性别: 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

    站内信系统数据库设计是构建在线平台不可或缺的一部分,它允许用户和管理员在系统内部进行通信。与电子邮件不同,站内信完全在系统内部处理,通过数据库记录消息来实现。站内信系统通常包括两种基本功能:一是点对点...

    站内信设计方案.pdf

    本文旨在介绍站内信系统的设计方案,分析其背景、需求、系统设计和数据库架构,以实现一个高效且实用的内部通讯工具。 一、站内信系统背景 在当前的运维平台使用中,用户通常依赖于微信、邮件等外部通讯工具进行...

    网吧管理系统数据库设计

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

    4-软件数据库设计文档模板.docx

    软件数据库设计文档模板 software database design report document" 在软件开发项目中,数据库设计是非常重要的一步骤,它直接影响到软件系统的性能、安全性和可维护性。本文档提供了一份软件数据库设计文档模板...

    数据库课程设计:长途汽车信息管理数据库设计

    数据库课程设计:长途汽车信息管理数据库设计 数据库课程设计:长途汽车信息管理数据库设计 数据库课程设计:长途汽车信息管理数据库设计 数据库课程设计:长途汽车信息管理数据库设计 数据库课程设计:长途汽车信息...

    支付交易平台数据库设计文档

    标题“支付交易平台数据库设计文档”表明本文档详细介绍了构建银行支付交易平台时所需设计的数据库架构。数据库设计是信息技术领域中极为重要的一环,尤其是在金融行业,其准确性、完整性和安全性的要求尤为严格。本...

    教务管理系统 数据库设计

    ### 教务管理系统数据库设计详解 #### 一、引言 随着信息技术的发展,教育领域的信息化建设也变得日益重要。教务管理系统作为学校信息化建设的重要组成部分,对于提高学校的管理水平和服务质量具有重要意义。本篇...

    网上购物商城数据库设计

    网上购物商城数据库设计 数据库设计是网上购物商城的核心组件之一,涉及到整个系统的数据存储和管理。以下是网上购物商城数据库设计的相关知识点: 1. 数据库概念设计 在数据库设计中,需要遵守一定的命名规则和...

    学生选课系统数据库设计

    "学生选课系统数据库设计" 学生选课系统数据库设计是指根据学生选课系统的需求,设计和实施一个高效、可靠的数据库系统,以满足学生选课的需求。该系统涉及到多个方面,包括可行性分析、系统分析、逻辑设计、数据库...

    数据库设计说明书

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

    浅谈数据库设计技巧

    浅谈数据库设计技巧.mht

    数据库课程设计案例:学生信息管理系统

    数据库课程设计案例:学生信息管理系统 数据库课程设计案例:学生信数据库课程设计案例:学生信息管理系统息管理系统数据库课程设计案例:学生信息管理系数据库课程设计案例:学生信息管理系统统数据库课程设计案例...

    需求分析+概要设计+详细设计+数据库设计模板

    需求分析、概要设计、详细设计和数据库设计模板 需求分析是软件开发的第一步骤,是指确定软件需求的过程。需求分析的目的是确定软件的功能和性能,以便满足用户的需求。需求分析的输出是软件需求规格说明书(SRS)...

    38个数据库课程设计(大全)+SQLServer.zip

    数据库课程设计_大作业_超市管理系统设计与开发超市管理系统设计与开发_docx_ 数据库课程设计_大作业_学生选课管理系统_-2_docx 数据库课程设计_大作业_学生选课管理系统_docx_ 数据库课程设计_大作业_人事管理信息...

    数据库设计文档大全经典

    数据库设计是IT行业中至关重要的一个环节,它直接影响到系统的性能、稳定性和可扩展性。"数据库设计文档大全经典"这个压缩包文件集成了丰富的数据库设计知识,是学习和参考的宝贵资源。以下将从多个方面详细阐述其中...

    数据库设计大作业(完整版 )

    "数据库设计大作业(完整版)" 本资源为大连理工大学软件学院的数据库设计大作业,背景为某一农产品网上商城系统的数据库设计。该系统有居民、销售商两个身份,他们各自所具有的操作描述如下: 业务规则 1. 角色...

    数据库设计开发规范-阿里.pdf

    ### 数据库设计开发规范知识点概览 #### 一、数据库设计开发规范概述 《数据库设计开发规范-阿里.pdf》是一份由阿里巴巴云数据库服务部门编制的技术文档,旨在为数据库设计和开发提供一套全面且规范化的指导原则。...

Global site tag (gtag.js) - Google Analytics