位置: 编程技术 - 正文

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

编辑:rootadmin
“站内信”不同于电子邮件,电子邮件通过专门的邮件服务器发送、保存。而“站内信”是系统内的消息,说白了,“站内信”的实现,就是通过数据库插入记录来实现的。

  “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息。点到点的消息传送很容易实现,本文不再详述。下面将根据不同的情况,来说说“站内信”的群发是如何实现的。

  第一种情况,站内的用户是少量级别的。(几十到上百)

  这种情况,由于用户的数量非常少,因此,没有必要过多的考虑数据库的优化,采用简单的表格,对系统的设计也来的简单,后期也比较容易维护,是典型的用空间换时间的做法。

  数据库的设计如下:表名:Message

  ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);Message:站内信内容;Statue:站内信的查看状态;PDate:站内信发送时间;

  如果,某一个管理员要给所有人发站内信,则先遍历用户表,再按照用户表中的所有用户依次将站内信插入到Message表中。这样,如果有个用户,则群发一条站内信要执行个插入操作。这个理解上比较简单,比较耗损空间。

  某一个用户登陆后,查看站内信的语句则为:

  Select * FROM Message Where RecID=‘ID' OR RecID=0

  第二种情况,站内的用户中量级别的(上千到上万)。

  如果还是按照第一种情况的思路。那发一条站内信的后果基本上就是后台崩溃了。因为,发一条站内信,得重复上千个插入记录,这还不是最主要的,关键是上千乃至上万条记录,Message字段的内容是一样的,而Message有大量的占用存储空间。比方说,Message字段有个汉字,占用个字节,那么5万条,就占用×=个字节=M。简单的一份站内信,就占用M,这还让不让人活了。

  因此,将原先的表格拆分为两个表,将Message的主体放在一个表内,节省空间的占用

  数据库的设计如下:

  表名:Message

  ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);MessageID:站内信编号;Statue:站内信的查看状态;

  表名:MessageText 

  ID:编号;Message:站内信的内容;PDate:站内信发送时间;

  在管理员发一封站内信的时候,执行两步操作。先在MessageText表中,插入站内信的内容。然后在Message表中给所有的用户插入一条记录,标识有一封站内信。

  这样的设计,将重复的站内信的主体信息(站内信的内容,发送时间)放在一个表内,大量的节省存储空间。不过,在查询的时候,要比第一种情况来的复杂。

  第三种情况,站内的用户是大量级的(上百万),并且活跃的用户只占其中的一部分。

  大家都有这样的经历,某日看一个网站比较好,一时心情澎湃,就注册了一个用户。过了一段时间,由于种种原因,就忘记了注册时的用户名和密码,也就不再登陆了。那么这个用户就称为不活跃的。从实际来看,不活跃的用户占着不小的比例。

  我们以注册用户2百万,其中活跃用户只占其中的%。

  就算是按照第二种的情况,发一封“站内信”,那得执行2百万个插入操作。但是其中的有效操作只有%,因为另外的%的用户可能永远都不会再登陆了。

  在这种情况下,我们还得把思路换换。

  数据库的设计和第二种情况一样:

  表名:Message

  ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为所有人);MessageID:站内信编号;Statue:站内信的查看状态;

  表名:MessageText 

  ID:编号;Message:站内信的内容;PDate:站内信发送时间;

  管理员发站内信的时候,只在MessageText插入站内信的主体内容。Message里不插入记录。

  那么,用户在登录以后,首先查询MessageText中的那些没有在Message中有记录的记录,表示是未读的站内信。在查阅站内信的内容时,再将相关的记录插入到Message中。

  这个方法和第二种的比较起来。如果,活跃用户是%。两者效率是一样的。而活跃用户的比例越低,越能体现第三种的优越来。只插入有效的记录,那些不活跃的,就不再占用空间了。

  以上,是我对群发“站内信”的实现的想法。

作者:万仓一黍出处:

推荐整理分享分享网站群发站内信数据库表设计(群发网址),希望有所帮助,仅作参考,欢迎阅读内容。

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

文章相关热门搜索词:分享群发是什么意思,群发站内信,站群发布,8222群发网址,群发网址链接需要注意什么,群组分享网站,网站群发软件,群发网址,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL数据库的高级sql注入的一些知识 [概要]这篇文章讨论常用的"sql注入"技术的细节,应用于流行的MsIIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的

SQL批量插入数据几种方案的性能详细对比 公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问。技术方案一:压缩时间下程序员写出的第一个版本,仅仅为了完成任务

mysql 数据库中索引原理分析说明 下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查安字,就会很自然地

标签: 群发网址

本文链接地址:https://www.jiuchutong.com/biancheng/349804.html 转载请保留说明!

上一篇:SQL高级应用之使用SQL查询Excel表格数据的方法(sql高级写法)

下一篇:SQL数据库的高级sql注入的一些知识(sql语句的高级用法)

  • 员工买东西自己垫付的钱怎么做账
  • 税控盘网上申请解锁
  • 商誉在资产负债表中如何体现
  • 新公司成立需要刻哪些章
  • 佣金开什么发票内容
  • 资产几百亿真的有那么多钱吗?
  • 出口无法收汇怎么办
  • 哪些企业可以享受加计抵减政策
  • 建筑安装工程怎么缴税
  • 员工离职的补偿金怎么入账
  • 企业清算未分配利润不分配要交个税吗
  • 公司代缴的社保个人账户能不能查到
  • 自产的产品无偿赠送职工
  • 企业赔款可以抵税吗
  • 用支票结清运杂费的会计分录
  • 独生子女保健费发到孩子多大年纪
  • 哪些公司可以开咨询费发票
  • 审计风险可控吗
  • 金税盘费用如何抵扣
  • 哪些项目可以免征个人所得税
  • 纸巾可以开专票吗
  • 自购销售和委托代购
  • 未开发的土地被司法查封,自然资源局可以收回吗
  • win7系统管理员密码忘了怎么办
  • 桌面图标间距特别大
  • 屏幕颜色怎么变
  • Linux系统中怎么开机自动运行拍摄文件
  • php做
  • php语言设计模式之单例模式
  • 交易性金融资产的入账价值怎么算
  • 企业购厂房会计分录
  • 清算期间会计分录
  • android_app.intro
  • 微信小程序从零
  • 债务重组收入属于什么科目
  • vue.$el
  • springboot基本结构
  • promise的几种状态
  • 公司总人数和上社保人数
  • 物权变动的原因是什么
  • 其他综合收益 综合收益
  • 开票显示税收分录怎么办
  • 小规模纳税人的条件
  • 零售药店可申请纳入医保定点
  • 福利用品可以抵增值税吗
  • 个税申报逾期罚款怎么算
  • 印花税每个月都要申报吗
  • 口罩属于什么经济分类
  • 用友软件操作流程图片
  • 房地产行业扣税标准
  • 销项税计提多了
  • 增值税出口退税款缴纳企业所得税吗
  • 投资性房地产与持有待售资产的区别
  • 购买材料没开票怎么做账
  • 押金可不可以抵房租
  • 会计实务操作中错误的是
  • 09年前的固定资产
  • 税务局退以前年度的税款怎样记账
  • 发生的销货退回费用应计入
  • 加盟创业成功案例分析
  • 新手学会计怎么学
  • windows安装在何处
  • win7系统打开软件就停止工作
  • win10打开cad出现致命错误
  • Win10预览版拆弹
  • linux 软件 安装
  • 开机f8显示英文字母
  • linux中cat命令的用法含义
  • Linux系统中Squid代理服务器配置全过程解析
  • win8设备管理器在哪里打开
  • linux怎么开启root权限
  • rgb颜色相加
  • 衬线字体和无衬线字体各自的用途
  • 西安房屋契税退税政策2020年
  • 深圳国税服务
  • 企业购置房屋需要交哪些税费
  • 国家税务局2017年11号
  • 四川省网上税务局怎么登录
  • 海南省国家税务局电子税务局
  • 南通工伤网上申请流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设