分析论坛数据库设计&分析

简介: 1,数据库设计论坛数据库设计还是挺有意思的,按照业务逻辑进行拆分的数据库设计。 首先,如果是一个博客就一个post表记可以了。然后考虑到论坛数据量比较大,所以在设计上有优化。 论坛把数据库分成3个数据表,这样在访问不同页面的时候都查询很快。 数据库表参考discuz 数据库设计: 只是挑了些相关字段,没有把所有字段列出了。--论坛板块表CREATE TABL

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种页面查询速度都很快。
这对于我们的系统设计很有启发,类似的情况还有博客数据库设计。
把博客的标题存成一张表,博客的内容存成一张表,数据分开后,两种情况查询都得到优化。

目录
相关文章
|
27天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
125 4
|
4月前
|
关系型数据库 BI 分布式数据库
PolarDB NL2BI解决方案,让你不懂SQL也能进行数据查询分析并生成BI报表
无需创建和开通资源,在预置环境中免费体验PolarDB MySQL及其NL2BI解决方案
PolarDB NL2BI解决方案,让你不懂SQL也能进行数据查询分析并生成BI报表
|
26天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
3月前
|
SQL 关系型数据库 MySQL
后端接口性能优化分析-数据库优化(上)
后端接口性能优化分析-数据库优化
115 0
|
3月前
|
SQL 关系型数据库 MySQL
后端接口性能优化分析-数据库优化(下)
后端接口性能优化分析-数据库优化
70 1
|
26天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)(一)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(数据恢复补充篇)
30 0
|
1月前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
1月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
|
3月前
|
SQL 关系型数据库 MySQL
后端接口性能优化分析-数据库优化(中)
后端接口性能优化分析-数据库优化
121 0
|
4月前
|
消息中间件 数据库连接 数据库
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
py 多进程 引发的 各种数据库连接 消息队列连接 异常问题 简单分析
38 0

热门文章

最新文章