分析论坛数据库设计&分析
来源:互联网 发布:詹姆斯vs杜兰特数据 编辑:程序博客网 时间:2024/05/22 19:19
1 数据库设计
论坛数据库设计还是挺有意思的,按照业务逻辑进行拆分的数据库设计。
首先,如果是一个博客就一个post表记可以了。然后考虑到论坛数据量比较大,所以在设计上有优化。
论坛把数据库分成3个数据表,这样在访问不同页面的时候都查询很快。
数据库表参考discuz 数据库设计:
只是挑了些相关字段,没有把所有字段列出了。
--论坛板块表CREATE TABLE forum ( fid mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(50) NOT NULL DEFAULT '', `status` tinyint(1) NOT NULL DEFAULT '0', threads mediumint(8) unsigned NOT NULL DEFAULT '0', posts mediumint(8) unsigned NOT NULL DEFAULT '0', todayposts mediumint(8) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (fid))ENGINE=InnoDB DEFAULT CHARSET=utf8;--论坛帖子CREATE TABLE `thread` ( `tid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `fid` mediumint(8) unsigned NOT NULL DEFAULT '0', `author` char(15) NOT NULL DEFAULT '', `authorid` mediumint(8) unsigned NOT NULL DEFAULT '0', `subject` char(80) NOT NULL DEFAULT '', `dateline` int(10) unsigned NOT NULL DEFAULT '0', `views` int(10) unsigned NOT NULL DEFAULT '0', `replies` mediumint(8) unsigned NOT NULL DEFAULT '0', `attachment` tinyint(1) NOT NULL DEFAULT '0', `closed` mediumint(8) unsigned NOT NULL DEFAULT '0', `status` smallint(6) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`tid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;--论坛帖子内容CREATE TABLE post ( pid int(10) unsigned NOT NULL AUTO_INCREMENT, fid mediumint(8) unsigned NOT NULL DEFAULT '0', tid mediumint(8) unsigned NOT NULL DEFAULT '0', `first` tinyint(1) NOT NULL DEFAULT '0', author varchar(15) NOT NULL DEFAULT '', authorid mediumint(8) unsigned NOT NULL DEFAULT '0', `subject` varchar(80) NOT NULL DEFAULT '', dateline int(10) unsigned NOT NULL DEFAULT '0', message mediumtext NOT NULL, useip varchar(15) NOT NULL DEFAULT '' PRIMARY KEY (tid,pid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2 具体分析
从页面来分析,按照用户访问路径分析。
首先用户访问论坛主页,这个地方会直接查询forum表。
里面保存了论坛板块信息,主题数量,帖子数量。
比如一个骑行网站论坛:http://www.517318.com/ (随便找的)
考虑到效率,在forum表中存储了一些冗余信息,计数的信息直接记录到了这张表里面。
然后进入主题页面
这里查询了下thread表,thread表也做了数据冗余。
当用户发帖的适合会创建一个thread表,只存标题数量,再创建一个post表,post里具体的内容。
如果是发帖,则thread表和post表都插入数据。
如果是回帖,则只记录post表同时,同时记录thread id。
只有第一个是发帖,其他的都是回帖。
3,总结
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47343257 未经博主允许不得转载。
论坛数据库设计通过3张表,分开放不同数据,得到3种页面查询速度都很快。
这对于我们的系统设计很有启发,类似的情况还有博客数据库设计。
把博客的标题存成一张表,博客的内容存成一张表,数据分开后,两种情况查询都得到优化。
0 0
- 分析论坛数据库设计&分析
- 分析论坛数据库设计&分析
- 数据库主键设计分析
- 数据库设计:需求分析
- 数据库设计实例分析
- 数据库设计:需求分析
- 数据库设计案例分析
- 数据库设计阶段分析
- JIVE论坛分析 - 简单数据库连接池设计
- 用户行为分析数据库设计
- 数据库设计之需求分析
- 数据库的分析与设计
- 大型论坛数据库设计
- 论坛数据库设计初步
- 论坛数据库设计初步设计
- 论坛数据库的设计
- 论坛数据库的设计
- BBS论坛需求分析
- 大话设计模式
- listviewmoreitemloaddemo
- Activemq+PHP演示demo
- Django连接Mysql数据库操作(Linux版)
- spring 配置连接池时 各个属性的介绍
- 分析论坛数据库设计&分析
- Android@学习笔记---OneDay
- 比较时间大小
- poj2142The Balance(扩展欧几里得+高中数学知识)
- Tomcat性能优化
- 热更新Tinker研究(九):Dex文件的patch
- 在onCreate()即可获取View的宽高
- java集合总结<一>
- Android ConstraintLayout详解