数据库设计BBS论坛文档.docx
《数据库设计BBS论坛文档.docx》由会员分享,可在线阅读,更多相关《数据库设计BBS论坛文档.docx(20页珍藏版)》请在冰豆网上搜索。
数据库设计BBS论坛文档
第1章绪论
随着互联网日益深入社会生活,BBS开发技术发展至今,从CGI,ASP,到PHP已经日趋成熟,功能也更加丰富,但携着Sun公司的Java技术所实现的“一次编写,到处运行”的优势,继承这一衣钵的JSP技术越来越受到人们的注视。
BBS作为一种对外的展示窗口,进行内外信息交流,已成为大众的广泛需要。
为了进行更好的交流,用户想就自己的专业和爱好能和其他的用户进行及时专业的交流,这就有了论坛,这样以来我们就可以在网络这个虚拟的空间中方便地实现交流,BBS论坛是我们在这个地球村中生活的重要交流工具。
所以我选择使用JSP开发BBS论坛这一课题作为毕业设计。
Java是未来的主流开发技术,具有很多优势。
JSP则是Java在Internet/IntranetWeb上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。
本网站使用JSP+Mysql在MyEclipse系统开发的,从而创建一个更为稳定,高效,安全的运行环境。
本文主要实现了基于B/S模式的一种JSP论坛的设计与实现,主要功能是实现客户端和服务器端的动态交互。
BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。
此外,为了记录主题的发表者和主题的加复者信息民,系统还需要提供用户注册和登录的功能。
只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。
根据用户的需求及以上的分析,BBS论坛需要具备以下功能:
显示各论坛类别及版面、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、用户留言、发表帖子、回复帖子、进入后台、论坛类别管理、版面管理、用户管理和用户注册。
设计BBS论坛系统所要考虑的问题主要有如何通过资源文件显示文字和使用静态代码块。
设计中力求界面友好、简洁,易于操作。
代码部分尽量避免逻辑错误,算法设计简单合理,尽量使程序具有较好的可读性,有利于其他的设计者对程序的阅读;力求对数据库操作的安全与稳定,尽量避免数据库操作异常,并要保证查询的快速无误。
保证程序的逻辑结构,编程时注意多使用通用方法(函数和过程)。
第2章系统分析
2.1需求分析
1.功能性需求
开发BBS论坛系统的目的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。
因此,BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。
此外,为了记录主题的发表者和主题的加复者信息,系统还需要提供用户注册和登录的功能。
只有注册的用户登录后才能够发表和回复主题且必须输入验证码,浏览者(游客)只能浏览主题信息。
根据用户的需求及以上的分析,BBS论坛需要具备前台功能和后台功能。
(1)系统前台功能:
显示各论坛类别及版面、查看版面下所有根帖、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、发表帖子、回复帖子
(2)系统后台功能:
进入后台、论坛类别管理、版面管理、用户管理、用户注册。
2.非功能性需求
(1)平台限制:
基于各种平台,不需要安装其他软件。
(2)操作方式:
全部操作都可以基于浏览器进行。
2.2可行性分析
可行性分析是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
1.技术可行性
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。
该BBS论坛管理系统采用了流行的JSP语言和当前新兴的Browser/Server(浏览器/服务器)模式进行开发。
三层的B/S体系结构具有许多传统Client/Server(客户机/服务器)体系结构不具备的优点,而且又紧密的结合了Internet/Intranet(国际互联网/企业内部互联网)技术,是技术发展的大势所趋,它把应用系统带入了一个崭新的发展时代。
数据库服务器选用SQLServer2000数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。
它的灵活性、安全性和易用性为数据库编程提供了良好的条件。
因此,系统的软件开发平台已成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台能满足此系统的需要。
2.经济可行性
主要是对项目的经济效益进行评估,本系统模拟的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。
但实际只是用于个人的毕业设计,只是模拟,也不存在资金的流动,故在经济上是可行的。
3.社会可行性
随着Internet技术的快速发展,BBS论坛已成为人们彼此沟通、交流信息的主要方式。
在论坛上,人们可以对某一领域提出自己遇到的问题,随后,论坛上的其他人会根据自己的学识、经验发表意见或提出问题的方法。
BBS论坛接近了人们之间的距离,它早已成为人们网上生活的必备工具。
所以说BBS论坛对当今社会是相当重要的。
第3章系统总体设计
3.1系统目标
对于典型的数据库管理系统,尤其是对像论坛这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计需求。
本系统在设计时应满足以下几个目标:
1.采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。
2.全面展示系统内所有分类的帖子,并进行分页显示。
3.为用户提供一个方便、快捷的主题信息查看功能。
4.实现在线发表帖子。
5.提供登录模块,主要用开管理员登录系统和发表帖子时留下发表者的信息。
6.用户随时都可以查看自己发表的帖子。
7.对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
8.系统最大限度地实现了易维护性和易操作性。
9.系统运行稳定安全可靠。
3.2系统功能结构
3.2.1前台功能结构
用户访问论坛首页面后,可进行查看版面下根贴信息、查看自己发表的帖子、查看精华帖子、搜索帖子、查看根贴信息、用户注册等功能。
用户在此BBS论坛中通过注册成为该网站的真正用户并成功登录系统后,可进行发表帖子、回复帖子、查看自己发表的帖子等操作。
前台功能结构图如图3.1所示。
图3.1BBS前台功能结构图
3.2.2后台功能结构
若用户的权限为管理员,则可进入后台,可进行留言板的管理、帖子管理和通知管理的操作。
后台功能结构图如图3.2所示。
图3.2BBS后台功能结构图
3.3系统流程图
1.BBS论坛的系统管理操作流程图如图3.3所示。
图3.3BBS论坛系统后台流程图
2.BBS论坛的系统前台流程图如图3.4所示。
图3.4BBS论坛的系统前台流程图
3.4系统开发环境
3.4.1开发环境
在开发此论坛的时候,需要具备下面的软件环境
服务器端:
●操作系统:
WindowsXP。
●Web服务器:
Tomcat6.0。
●Java开发包:
JDK1.6。
●数据库:
SQLServer2000。
●浏览器:
IE6.0。
●分辨率:
最佳效果为1024×768像素。
客户端:
●浏览器:
IE6.0。
分辨率:
最佳效果为1024×768像素。
3.4.2系统平台体系结构的选择
在应用开发领域中,目前系统平台的体系结构主要有两种,即C/S(Client/Server)结构和B/S(Brower/Server)结构。
C/S结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
B/S结构,即浏览器和服务器结构。
它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高,效率低。
B/S结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
因此本系统采用了B/S结构。
3.4.3JSP语言
JSP(JavaServerPages)是由Sun公司倡导,许多别的公司参与一起创建的一种新动态网页技术标准,类似其他技术标准。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片断(Scriptlet)和JSP标签,构成了JSP网页(*.jsp)Servlet/JSPContainer收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果以HTML格式响应给客户端,其中程序片断可以是:
操作数据库,重新定向网页以及发送E-Mail等等,这些都是建立动态网站所需要的功能。
所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-sideLanguage。
所以被许多人认为是未来最有发展前途的动态网站技术之一。
语言优势如下:
1.将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。
使用JSP标识或者小脚本来生成页面上的动态内容。
生成的内容的逻辑被封装在标识和JavaBeans组件中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面而不影响内容的生成。
2.一次编写,到处运行
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。
3.JSP的平台适应性更广
这是JSP比ASP的优越之处,几乎所有的平台都支持Java,它们可以在任何平台下通行无阻。
虽然NT的OS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大.从一个平台移植到另一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标注的字节码与平台无关。
4.健壮的存储管理和安全性
由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译为JavaServlet,JSP页面就具有Java技术的所有优点,包括健壮的存储管理和安全性。
3.4.4JavaBeans技术
什么是JavaBeans?
JavaBeans就是Java的可重用组件技术。
最初,JavaBeans的目的是为了将可以重复使用的软件代码打包标准。
特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。
这些包括如Grid控件,用户可以将该部件拖放到开发环境中。
从此,JavaBeans就可以扩展为一个javaweb应用的标准部件,并且JavaBeans部件框架已经扩展为企业版的Bean(EJB)。
JavaBeans是描述JAVA的软件组件模型,有点类似于Microsoft的COM组件概念。
在JAVA模型中,通过JavaBeans可以无限扩充JAVA程序的功能,通过JavaBeans的组合可以快速的生成新的应用程序。
对于程序员来说,最好的一点就是JavaBeans可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。
ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。
JSP通过JavaBeans实现了同样的功能扩充。
JSP对于在Web应用中集成JavaBeans组件提供了完善的支持。
这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。
JavaBeans组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。
在实际的JSP开发过程中,读者将会发现,和传统的ASP或PHP页面相比,JSP页面将会是非常简洁的,由于JavaBeans开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理过程实际上被封装到了JavaBeans中。
3.4.5JDBC技术
数据库通信接口采用JDBC(JavaDatabaseConnectivity,Java数据库连接)。
JDBC是一组API,定义了用来访问数据库源的标准JAVA类库,使用这种类库可以使用一种标准的方法、方便地访问数据库资源。
JDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。
JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。
JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无须对特定的数据库的特点有过多的了解,从而大大简化了和加快了开发过程。
一般的Java开发工具都带有JDBC-ODBC桥驱动程序,这样,只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了。
有趣的是,不同于ODBC是OpenDatabaseConnectivity的简称,JDBC并不是JavaDatabaseConnecivity的简称,而是SUN的注册商标,至少官方说法是这样的。
JDBCAPI为访问不同的数据库提供了一种统一途径,像ODBC一样,JDBC为开发者屏蔽了一些细节问题。
另外,JDBC对数据库的访问也具有平台无关性。
第4章数据库设计
4.1数据库分析
数据库的设计,在程序的开发中起着至关重要的作用,它往往决定了在后面的开发中进行怎样的程序编码。
一个合理、有限的数据库设计可降低程序的复杂性,使程序开发的过程更为容易。
本系统是一个BBS论坛网站,考虑到开发成本、用户信息量客户需求等问题,决定采用MySQL作为项目中的数据库。
MySQL具有以下优点:
1、首先是速度。
对于MySQL来说,速度是他们追求的主要目标之一,基于这个原因,MySQL在以前的文档中也曾经说过并不准备支持事务和触发器。
但是在最新的文档中,我们看到MySQL4.0.2-alpha已经开始支持事务,而且在MySQL的TODO中,对触发器、约束这样的注定会降低速度的功能也列入了日程。
但是,仍然有理由相信,MySQL将有可能一直保持速度的优势。
2、MySQL更流行,流行对于一个商业软件来说,也是一个很重要的指标,流行意味着更多的用户,意味着经受了更多的考验,意味着更好的商业支持、意味着更多、更完善的文档资料。
3、MySQL更适宜在Windows环境下运行。
MySQL作为一个本地的Windows应用程序运行(在NT/Win2000/WinXP下,是一个服务),在Windows运行中,MySQL更加的稳定。
4、MySQL使用了线程,在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。
5、MySQL可以适应24/7运行。
在绝大多数情况下,你不需要为MySQL运行任何清除程序。
6、MySQL在权限系统上更为完善。
MySQL允许你定义一整套的不同的数据级、表级和列级的权限。
对于列级的权限。
MySQL还允许你指定基于主机的权限。
7、由于MySQL4.0.2-alpha开始支持事务的概念,因此事务对于MySQL不再仅仅成为劣势。
相反,因为MySQL保留无事务的表类型。
这就为用户提供了更多的选择。
8、MySQL的MERGE表提供了一个独特管理多个表的方法。
9、MySQL的myisampack可以对只读表进行压缩,此后仍然可以直接访问该表中的行。
4.2数据库概念设计
E-R模型是对现实世界的一种抽象。
它的主要成分是实体、联系和属性。
使用这三种成分,我们可以建立许多应用环境的E-R模型。
现在划出本系统所使用的数据库实体,它们分别为根贴实体、回复贴实体、版面实体、类别实体和用户实体。
下面将介绍几个关键实体的E-R图。
1.根贴实体
根据实体包括编号、所属版面、标题、内容、发布者、发布时间、表情和对贴子进行操作的时间等属性。
根贴实体的E-R图如图4.1所示。
图4.1根贴实体E-R图
2.回复贴实体
回复贴实体包括编号、根贴ID、标题、内容、回复者、回帖时间和表情属性。
回复贴实体的E-R图如图4.2所示。
图4.2回复贴实体E-R图
3.版面实体
版面实体包括编号、所属类别ID、版面名称、版主和版面公告属性。
版面实体E-R图如图4.3所示。
图4.3回复帖子信息实体图
4.论坛类别实体
论坛类别实体包括编号、类别名称和介绍属性。
论坛类别实体的E-R图如图4.4所示。
图4.4论坛类别实体E-R图
ER模型的“联系”用于刻画实体之间的关联。
一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。
若有联系,进一步确定是1:
n,m:
n,还是1:
1等。
还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。
本系统的ER模型如图4.5所示:
图4.5ER模型图
4.3数据库逻辑设计
根据数据库概念设计,可以创建与实体对应的数据表。
本系统中所包含的数据表的结构图如图4.6所示。
图4.6db_luntan数据库所包含的数据表结构图
本系统共包含3个数据表,下面分别介绍这些表的结构。
1.tb_bbs(根贴信息表)
根贴信息表用来保存发布的全部根贴信息,该表的结构如表4.1所示。
表4.1tb_bbs表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
bbs_id
int(4)
No
Yes
帖子ID(自动编号)
bbs_boardID
int
(2)
Yes
((-1))
帖子所属版面的ID
bbs_title
varchar(70)
Yes
NULL
帖子标题
bbs_content
varchar(2000)
Yes
NULL
帖子内容
bbs_sender
varchar(20)
Yes
NULL
帖子的发布者
bbs_sendTime
datetime(8)
Yes
NULL
帖子的发布时间
bbs_face
varchar(8)
Yes
NULL
帖子表情
bbs_opTime
datetime(8)
Yes
NULL
对帖子进行操作的时间
bbs_isTop
varchar
(1)
Yes
(0)
是否为置顶帖子
bbs_toTopTime
datetime
Yes
NULL
帖子被置顶的时间
bbs_isGood
varchar
(1)
Yes
(0)
是否为精华帖子
bbs_toGoodTime
datetime(8)
Yes
NULL
帖子被置精华帖子时间
2.tb_board(版面信息表)
版面信息表用来保存论坛中的版面信息,该表的结构如表4.2所示。
表4.2tb_board表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
board_id
smallint
(2)
Yes
Yes
版面ID(自动编号)
board_classID
smallint
(2)
Yes
NULL
版面所属类别的ID值
board_name
varchar(40)
Yes
NULL
版面名称
board_master
varchar(20)
Yes
NULL
版面版主
board_pcard
varchar(200)
Yes
NULL
版面公告
2.tb_bbsAnswer(回复贴子信息表)
回复帖子信息表用来保存回复帖子的信息,该表的结构如表4.3所示。
表4.3tb_bbsAnswer表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
bbsAnswer_id
int(4)
No
Yes
ID(自动编号)
bbsAnswer_rootID
int(4)
Yes
NULL
回复帖子根帖ID值
bbsAnswer_title
varchar(70)
Yes
NULL
回复帖子的标题
bbsAnswer_content
varchar(2000)
Yes
NULL
回复帖子的内容
bbsAnswer_sender
varchar(20)
Yes
NULL
回复帖子的回复者
bbsAnswer_sendTime
datetime(8)
Yes
NULL
回复帖子的时间
bbsAnswer_face
varchar(10)
Yes
NULL
回复帖子的表情
4.tb_class(论坛类别信息表)
论坛类别信息表用来保存论坛类别信息,该表的结构如表4.4所示。
表4.4tb_class表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
class_id
smallint
(2)
No
Yes
ID(自动编号)
class_name
varchar(40)
Yes
NULL
论坛类别名称
class_intro
varchar(200)
Yes
NULL
论坛类别介绍信息
5.tb_user(用户信息表)
用户信息表用来保存用户的信息,该表的结构如表4.5所示。
表4.5tb_user表的结构
字段名
数据类型
是否为空
是否主键
默认值
描述
id
smallint
(2)
No
Yes
用户ID(自动编号)
user_name
varchar(20)
Yes
NULL
用户名称
user_password
varchar(20)
Yes
NULL
用户密码
user_face
varchar(11)
Yes
NULL
用户表情
user_sex
varchar
(2)
Yes
NULL
用户性别
user_phone
varchar(12)
Yes
NULL
用户电话
user_OICQ
varchar(14)
Yes
NULL
用户OICQ
user_email
varchar(100)
Yes
NULL
用户的邮箱
user_from
varchar(200)
Yes
NULL
用户的来源
user_a