先说一下需求和环境:
一个系统的站内信模块,有存在大量的按部门群发的可能,相对的个人对个人的群发是比较少的。
数据库是采用的mysql5.0。
最先的数据库设计如下:
两张表:
一张Msg表,字段如下:
id int 自增长id
senderid int 外键关联发送者id
title varchar(128) 短信标题
content varchar(512) 短信内容
createTime datatime 发信时间
status tinyint 发件箱中的状态:0--普通;1--删除
一张user_has_msg表,字段如下:
id
int
departmentid int 部门群发的时候外键关联部门id,可以为空
receverid int 外键关联收信人,可以为空
msgid int 外键关联短信息
status tinyint 收件箱状态:0--普通;1--删除
readStatus tinyint 阅读状态:0--未读;1--已读
这样设计是基于如下考虑的:
首先,msg表包含了发件箱所需要的所有信息,程序的时候写发件箱的时候可以只考虑操作一张数据库表。
第二,user_has_msg中,departmentid主要考虑的是存在大量的按照部门群发的可能,这样的话,群发给一个部门的时候之需要在两张表上个记录一条数据,而不需要在user_has_msg中记录该部门员工数条记录。
但是,后来这个方案被我自己和同事讨论后否决了,原因如下:
首先,departmentid的存在使得没有用户可以删除收件箱中的站内信,因为删除了,其他人的收件箱里也看不到。
第二,msg表不能保证显示完所有的发件箱所需要的数据,因为只有着一张表的是后读不出来收件人信息。
修改后的版本是:
将msg修改为只保纯粹的信息的表:
id int 自增长id
title varchar(128) 短信标题
content varchar(512) 短信内容
createTime datatime 发信时间
将user_has_msg修改为保存各种关系和状态的表:
id
int
senderid int 外键关联发送者id
receverid int 外键关联收信人
msgid int 外键关联短信息
sendStatus tinyint 发件箱中的状态:0--普通;1--删除
receveStatus tinyint 收件箱状态:0--普通;1--删除
readStatus tinyint 阅读状态:0--未读;1--已读
我记录这个的想法一方面想记录我自己的一些积累,另一方面是想像在网上找到更好的设计方法,尤其是解决群发这个问题。
分享到:
相关推荐
综上所述,"手机短信系统 数据库课程设计"项目涵盖了C#编程、SQL数据库管理、数据库设计与优化、用户界面开发、异常处理、安全性控制等多个IT领域的知识点,是学习和实践这些技术的一个良好平台。
企业短信系统的数据库设计是构建高效、稳定且适应业务需求的关键环节。本文档主要涉及系统数据库的概念结构设计和物理...设计时应充分考虑系统的实际需求,遵循数据库设计的最佳实践,以实现一个强大且灵活的短信系统。
### 短信验证的数据库设计 #### 需求规范与重要性 在现代互联网应用中,短信验证被广泛应用于用户身份验证的过程之中,尤其是针对注册、登录、找回密码等场景。为了确保系统的安全性和用户体验,短信验证的设计...
标题中的“多方发送短信及数据库”是一个Android应用开发的话题,主要涵盖了两个核心概念:短信的多用户发送功能和数据库操作。在Android系统中,开发者可以利用API来实现短信的发送,同时结合数据库来存储和管理收...
标题中的“短信猫发送服务端(数据库发送)”是指一种基于短信通信...以上是关于“短信猫发送服务端(数据库发送)”的详细解释,涵盖了短信通信、数据库集成、API设计等多个方面,希望对理解和构建此类服务有所帮助。
【MS短信数据库设计v1.0.doc】是一个关于短信分销业务系统的数据库设计方案,主要涉及到数据库表结构的设计。本文档详细阐述了各个表的设计及其关系,为短信发送、管理和跟踪提供了数据支持。 1. **数据类型** 在...
京东数据库设计是一个全面的系统架构,它涉及到多个关键的数据实体,包括账户管理、活动记录、活动结算、第三方支付结算以及咨询信息等。这份文档详细阐述了这些核心表的设计,为理解京东的业务流程和数据存储提供了...
【电信缴费数据库设计】是一个基于网页的数据库课程设计项目,主要关注的是如何有效地管理和处理电信用户的缴费信息。在这个设计中,我们可能涉及到多个关键模块,包括用户管理、账单记录、缴费历史、实时查询以及...
本设计主题聚焦于“短信办公的数据库设计”,使用的是SQL Server 2005作为数据库管理系统。这涉及到关系数据库理论、SQL语言、数据库建模以及系统集成等多个方面的知识。 首先,我们需要理解短信办公系统的功能。这...
再者,表分区是Oracle数据库中的一个高级特性,用以提升大规模数据的管理和查询性能。"分区表.rar"文件很可能是关于如何在短信平台的数据库中创建和管理分区的详细指导。表分区允许将大表划分为逻辑上独立的部分,每...
以上就是火车票预订系统数据库设计涉及的主要知识点,这些内容对于构建一个高效、安全、用户友好的预订系统至关重要。通过合理的数据库设计和软件工程实践,可以确保系统稳定运行,满足大量用户的订票需求。
在构建一个消息聊天系统时,数据库的设计是至关重要的,因为它决定了系统的稳定性和效率。以下是根据提供的文件信息解析出的关键知识点: 1. **平台信息表**(`platform_info`): - 此表用于存储与消息平台交互的...
在本文中,我们将深入探讨如何使用Java技术栈设计并实现一个美食食谱网站,结合Spring、SpringMVC和MyBatis框架,以及腾讯短信服务,为用户提供手机号注册和短信验证码功能。这个项目名为"lazy-food-network",它...
总结来说,企业短信系统的数据库设计涉及到多个层面,包括实体的定义、属性的配置、关系的建立以及物理存储的规划。这样的设计旨在优化数据的存储和查询效率,同时满足系统的功能需求和安全性要求。通过合理的设计,...
数据库课程设计旨在让学生将理论知识应用于实践,通过创建一个水费收费管理系统,加深对数据库、编程和系统设计的理解。在这个项目中,学生需要利用主流的DBMS(如SQL SERVER)和高级程序设计语言(如JAVA),构建一...
对于个人网上银行管理系统,可能是因为银行和金融服务的数字化趋势,需要一个安全、高效、用户友好的平台来处理客户的账户管理和交易。 2. **需求分析**:这是系统设计的第一步,涉及到了解系统必须完成的任务。这...
"Wavecom短信猫数据库接口"是一个专用于通过短信通信设备(短信猫)与数据库进行交互的技术。短信猫是一种硬件设备,通常使用GSM或CDMA网络,能够通过短信收发来实现远程数据传输。在本项目中,"数据库接口"指的是...
个人博客数据库设计需要考虑到用户信息、关注关系、聊天记录、短信记录、收藏信息、文章分类、文章信息、评论信息、回复信息、最近访客记录和相册信息等多方面的信息,通过合理的数据库设计,可以实现个人博客系统的...