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

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

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

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

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

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

    教务管理系统 数据库设计

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

    系统设计规范和模板word+pdf版(架构设计、概要设计、详细设计和数据库设计)

    在IT行业中,系统设计是软件开发过程中的关键环节,它涉及到架构设计、概要设计、详细设计和数据库设计等多个步骤。这些步骤都是确保项目成功、高效且可维护的关键。以下是对这些知识点的详细阐述: 1. **架构设计*...

    数据库设计教程(第二版)pdf

    1. **数据库的概念**:数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。 2. **数据库管理系统(DBMS)**:用来管理和维护数据库的一系列软件程序集合。DBMS提供给用户一种方便的方式来创建、更新、管理...

    网上购物商城数据库设计

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

    学生选课系统数据库设计

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

    OA 协同办公系统 数据库设计说明书(附数据库关系表)

    本文将对 OA 协同办公系统数据库设计的各个方面进行详细的介绍,包括数据库设计的目的和作用、数据库设计的步骤和方法、数据库设计的技术和工具、数据库设计的难点和解决方案等。 1.1 预期的读者 本文的预期读者是...

    数据库设计说明书

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

    浅谈数据库设计技巧

    浅谈数据库设计技巧.mht

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

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

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

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

    数据库设计说明书评审检查表

    软件开发过程中,用于评审数据库设计文档的检查表。

    PowerDesigner的数据库设计与实现 PowerDesigner数据库建模技术

    PowerDesigner是一款强大的数据库建模工具,它在IT行业中被广泛用于设计复杂的数据库系统。这款工具提供了数据建模、业务流程建模、系统架构设计等多种功能,使得数据库的设计和实现过程更为高效和规范。 首先,...

    数据库设计入门经典 完整版

    数据库设计是IT行业中至关重要的一个领域,特别是在构建大型信息系统时,良好的数据库设计是系统稳定、高效运行的基础。本文将深入探讨数据库设计的基本概念、过程和关键要素,旨在为初学者提供一个全面的入门指南。...

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

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

Global site tag (gtag.js) - Google Analytics