BBS讨论区模块设计
第6章 BBS讨论区模块设计
6.1 系统功能分析及总体设计 
给网站建立BBS讨论区是吸引用户的好方法。BBS可以用于网站的主题讨论组,如流行音乐网可以提供BBS供用户对艺人的作品各抒己见,也可以用于网站的技术支持等。
本章将从以下几个方面介绍如何建立BBS讨论区:
—  BBS的功能分析及数据库设计;
—  BBS讨论区主页面设计;
— 帖子浏览及发布页面设计;
— 讨论区管理设计;
— 用户管理设计。
通过对本章的学习,读者将学会如何设计和实现一个BBS讨论区,并能够在本章介绍的BBS讨
论区的基础上进行功能上的扩充或调整。
6.1  系统功能分析及总体设计
BBS,即Web论坛,又叫讨论公告牌或主题讨论组。其思想就是允许用户发表帖子或提出问题,而其他人可以阅读并回复这些问题。在BBS中,每个讨论的主题叫一个话题,每个话题或回复都称为一个帖子。
6.1.1  系统功能概述
在将要实现的BBS讨论区中用户可以进行如下操作:
— 发表帖子开始新的讨论话题;
— 对已有的帖子进行回复;
— 查看所有话题列表;
— 查看讨论区中的帖子内容;
查看帖子之间的关系,即查看某篇帖子是哪篇的回复;
— 搜索含有某些关键字构成的主题的帖子;
— 新建、修改或删除版面;
— 删除已发布的帖子;
— 查看用户发帖排行榜;
— 查看用户信息;
— 删除用户;
— 屏蔽用户发帖。
其中,前6项是讨论区的前台发帖、阅帖部分的功能,供普通用户使用;后6项是讨论区后台管理部分的功能,只有管理员有权使用。
6.1.2  问题分析
技术上而言,设计一个BBS讨论区应用程序的困难不在于保存及检索作者和消息文本,最困难的是如何到一种保存所需信息的数据库结构,以及一种高效率浏览该结构的方法。
如图6-1所示是一个可能的帖子结构。
6-1  一种可能的帖子结构
在图6-1中,某主题的一个初始发表的话题有3篇回复的帖子,这些回复的帖子中的一些又有它们自己的回复,而且这些帖子还可能有回复帖子等。
从图6-1中可以看出,这是一种典型的树形结构,其中有节点(或者说帖子)也有连接(或
帖子之间的关系),正如任何树型结构一样。因此很容易想到使用“树”这种数据结构来保存帖子数据及帖子间的连接,同时通过遍历一棵树可以很容易地检索到某篇帖子。
既然到使用“树”来表示帖子结构的方法,那么进一步需要解决的问题是:
到一种将这种树型结构映射到物理存储器的方法——本例中是映谢到MySQL数据库的方法;
到一种能够按要求重建数据的方法。
讨论区的主体,即前台部分的设计将围绕以上两点来展开。
另外,后台管理部分的设计总体而言比较简单,需要注意的几点是:
管理页面要尽量简洁、易操作;
要确保操作的安全性和注意数据的可恢复性;
在进行数据库操作时,必须确保数据的一致性。
 
树是软件开发中一种常用的数据结构。在一棵树中,一个父节点可以有多个子节点,而一个子节点只能有一个父节点。因此使用树可以很容易地表示话题帖与回帖这种一对多的关系。
6.1.3  总体设计
1.项目规划
BBS讨论区应用程序由前台发帖、阅帖模块和后台管理模块组成。
(1)前台发帖阅帖模块。该模块是BBS讨论区的主体模块,包含版面列表和选择、帖子列表、帖子发布、帖子阅读和帖子搜索功能。
版面列表和选择。本项目的BBS可以按版面划分讨论区,不同版面的讨论区有不同类型的讨论话题。如可以为文艺类的话题建立一个“文艺沙龙”版面,为足球类的话题建立一个“绿茵竞技”版面等。在讨论区的主页面应当可以显示系统中所有的版面列表,当用户选择了某个版面后就显示该版面的讨论区。
帖子列表。在讨论区的主页面中显示用户所选择版面讨论区的所有帖子,将这些帖子的主题按层次列出,列出时应能直观地显示帖子与帖子之间的“回复”关系。
帖子发布。提供一个帖子发布页面,用户可以在此输入帖子的主题和内容,并将输入的数据提交给系统,由系统进行处理和保存。
帖子阅读。提供一个供用户阅读帖子详细内容的页面。
2)后台管理模块。该模块由3个子模块组成:版面管理、帖子管理和用户管理。
版面管理,版面管理子模块包含版面的添加、修改和删除功能。
版面添加:添加某一类话题的版面,一个版面应当记录版面的名称、简介、建立时间等信息。
版面修改:修改某个版面的主题或简介。
版面删除:删除某个不需要的版面。
帖子管理,帖子管理子模块包含帖子搜索和帖子删除功能。
帖子搜索:根据输入的搜索关键字对帖子的标题进行搜索,搜索完成后系统显示搜索的结果页面,在结果页面允许对搜索出来的结果进行个别选择,以便做帖子删除操作。
帖子删除:删除某个帖子。
用户管理,用户管理子模块包含查看发帖排行、查看用户信息、屏蔽用户发帖和删除用户功能。
查看发帖排行:按发帖量多少的顺序对用户的发帖信息排序,并列表显示;只显示最多20条信息。
查看用户信息:列表显示用户的登录信息和发帖信息。
屏蔽用户发帖:屏蔽某个用户,使他不能发布帖子。
删除用户:删除某个用户。
2.功能结构图
根据上一节项目规划中的分析,画出BBS讨论区的功能结构图,如图6-2所示。
6-2  系统功能结构图
6.1.4  数据库设计与实现
根据功能规划,对本项目的数据库结构进行如下分析和设计。
1.用户信息表(t_user)
本项目将延用第2章中的用户信息表(t_user)。
2.用户发帖信息表(t_postinfo)
由于本项目要实现查看发帖排行的功能,因此需要提供一张数据表用来记录用户的发帖次数、回复次数的信息。在表中还要提供一个屏蔽标识字段,用以支持屏蔽用户发帖的功能。最后,表的主键字段为用户名,通过该字段可以与用户信息表进行关联。用户发帖信息表结构如表6-1所示。
6-1  t_postinfo的结构
   
   
   
   
   
   
f_username
char
50
用户名,主键
f_post_times
int
4
0
发帖次数
f_reply_times
int
4
0
回复次数
f_enabled
bool
1
true
屏蔽标识
3.版面表(t_board)
版面表用于保存系统的版面信息。该表的主键为一个自动增量字段,以便使用该字段进行表间的关联并提高关联查询的效率。
版面信息主要包括版面的名称和版面的简介,另外提供一个字段记录版面的创建时间。在该表中也提供一个屏蔽字段,以便对版面实行屏蔽而不是物理上的删除。版面表结构如表6-2所示。
 
在表中提供一个屏蔽字段可以实现对表内数据的逻辑删除,即做一个删除标记而不是真正从数据库中删除掉,这样可以较好地保持数据库的完整性和提高数据的可恢复性。
6-2  t_board的结构
   
   
   
bbs论坛是什么
   
   
   
f_id
int
4
版面标识,主键
f_name
char
16
版面名称
f_desc
varchar
200
版面简介
f_ created_time
datetime
8
创建时间
f_enabled
bool
1
true
屏蔽标识
4.帖子表(t_article)
帖子表是本项目中的关键表。
帖子表首先提供一个自动增量的ID字段作为表的关键字段。为了实现“问题分析”一节所述的树型结构,需要在表中保存每个帖子的父帖的ID,顶层的话题帖子的父帖默认为0。为了方便判断一个帖子是否有回复的帖子,在表中提供一个字段来记录此信息。需要注意,这个字段是一个冗余的字段,目的是为了加快查询的速度;但是冗余字段的缺点是会引入数据的一致性问题,因此在程序开发的时候要注意解决此问题。
帖子表中需要记录帖子的标题字段,但是帖子的内容将被放在另外一张帖子内容表中,这样做的目的是为提高表的查询速度。
帖子表还需要记录帖子的作者,即是哪个用户发布的,用用户名字段来指示。在该表中提供一个版面ID字段用以指示帖子所属的版面,另外提供两个字段分别用以记录帖子发布的时间和客户端的IP地址。
最后提供一个屏蔽字段用以实现帖子的逻辑删除而不是物理删除。帖子表表结构如表6-3所
示。
6-3  t_article的结构

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。