《论坛数据库管理数据库课程设计报告(共22页).doc》由会员分享,可在线阅读,更多相关《论坛数据库管理数据库课程设计报告(共22页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上成绩 课程设计报告 题 目 小型论坛数据库系统 课 程 名 称 数据库应用程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制【注:根据课程设计大纲第四项具体要求撰写课程设计报告】一、课程设计目的数据库应用程序课程设计旨在使学生对数据库应用系统的开发过程有一个全面的认识和了解,在程序设计语言课程基本编程训练的基础上,对数据库应用系统的流程和特点有较深入的了解,能够自觉运用数据库原理的理论知识指导软件设计,学会数据库的设计,并能对设计结果的优劣进行正确评价,能够使用已学过的程序设计语言
2、编制具有可读性和可维护性的良好风格的程序。培养快速学习新知识,并在项目中使用的能力。二、课程设计要求1.采取分组并分工合作的方式进行课程设计,独立编制文档,态度认真、工作量饱满、完成设计所有要求;2.利用某种程序设计语言(以学生学过的C+、ASP、C#或JAVA为佳),用SQL SERVER 2005进行后台数据库管理,编写出某个小型的管理信息系统,该系统应具备对数据进行录入、查询、删除、修改、统计、报表,还包括各用户界面的屏幕设计等功能;3.按照数据库设计的基本步骤完成数据库设计过程,要求数据库结构合理,符合实际,设计过程和文档的编写遵循软件工程规范。要求注重数据库系统的安全管理,包括数据备
3、份、权限设置等,系统要有两类登陆用户:系统用户、一般用户;4.软件运行正确,提交的软件及课程设计报告思路正确、撰写规范、结构合理;5.按照数据库设计的六个步骤来撰写课程设计报告,即需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行维护,还要包括主要参考文献、课程设计的体会、用户的系统使用说明书、附录(系统的主控源程序代码)等。三、课程设计过程描述3.1系统简易需求描述小型论坛数据库系统(简称BBS)网络缩小我们的世界,其发展的迅速带动了人与人的交流。于是像论坛这种交流平台便应运而生。然而,网络的应用是离不开底层数据库的支持,一个良好的数据库系统是网络高效率运行的坚石。本
4、次课程设计旨在在设计一个优秀的数据库系统来支持公司论坛系统的数据存储、数据管理等功能。 一个基本的BBS论坛,可以大致分为以下流程:用户登录进入论坛(初始为游客,可以注册为会员),就某个话题(帖子的主题)展开讨论。通过发帖功能发布新的话题;通过回帖功能回复已有的话题;通过搜索功能查找已有的话题。管理员通过管理功能创建,编辑,删除论坛的版块;管理注册的用户;管理帖子。这样的流程决定了BBS论坛系统的需求。(1)会员注册:提供新会员注册的功能,包括提供录入信息的界面,检查注册信息的有效性,并将注册会员信息保存在对应数据库的数据表中。(2)发表文章:提供会员发表文章的功能,未注册的用户不允许使用该功
5、能。(3)文章查询:对注册会员和未注册会员提供文章查询以及阅读的功能,即提供对应文章标题信息,以及查看详细内容及回复文章的超链接(4)会员管理:当网上论坛的会员完成注册后,系统会在数据库中加入会员的资料。包括会员名称 会员密码 会员E-mail等相关信息资料。同时,按照会员的不同身份,将特殊会员设置为版主,使他具备删除本讨论区中对应文章等特殊操作的权利。管理者可以依据数据库中注册的特殊身份登录到论坛后台对会员信息进行管理。(5)论坛分类管理:根据不同的讨论内容,管理员将整个讨论区划分成不同的区域,会员可以选择进入不同的讨论区,允许管理者对分类的版块进行调整,同时提供不同的讨论区中包括文章数量等
6、的统计功能。(6)帖子管理:管理员和版主都可以对会员发表的帖子进行转移、置顶和删除等操作。3.2数据库逻辑设计3.2.1数据字典1 .名词定义数据表描述缩写定义bbs小型论坛DB数据库数据字段类型缩写定义PPrimary,主键UUnique,唯一性约束或唯一性索引FForeign key,外键IIndex,索引CCluster,聚簇索引NNull,空值3.2.2 实体及其属性实体:用户 属性:用户编号、用户名、密码、邮箱、性别、用户级别、备注信息、注册时间、状态、用户积分实体:板块 属性:板块编号、板块名称、版主、版面简介、点击数、发帖数实体:主贴属性:帖子编号、板块编号、发帖人ID、回复数量
7、、发帖表情、标题、正文、发帖时间、点击数、状态、最后回复时间实体:跟帖属性: 帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率3.2.3 E-R图1.用户实体局部E-R图图1.用户实体局部E-R图2.版块实体局部E-R图 图2.版块实体局部E-R图3.主帖实体局部E-R图图3.主帖实体局部E-R图4.跟帖实体局部E-R图图4.跟帖实体局部E-R图5.合并局部E-R图并生成BBS论坛系统总体E-R 图 图5. BBS论坛系统总体E-R 图3.2.3 实体关系模式将用户实体转换为用户关系:(用户编号、用户名、密码、邮箱、性别、用户级别、备注信息、注册时间、状态、用户积分)
8、。 将版块实体转换为板块关系:(板块编号、板块名称、版主、版面简介、点击数、发帖数)。将主贴转换为帖子关系:(帖子编号、板块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最后回复时间)。将跟帖实体转换为帖子回复关系:(帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率)。3.2.4 数据库中各表设计结果 基于上述数据库逻辑结构设计的结果,现在可以将其转化为给定数据库管理系统所支持的实际数据模型。1.bbsUsers(bbs用户表)字段名称数据类型说明约束备注UIDInt identity(1,1)用户编号P自动增长列UnameVarchar(
9、50)用户名U唯一值UpasswordVarchar(50)密码默认为,密码要大于6位UemailVarchar(50)邮箱形如%.%UsexChar(2)性别男,女UclassInt用户等级默认为1 UremarkVachar(50)备注信息UregDatedatetime注册时间当前值UstateInt状态默认为0(未登入UpointInt用户积分默认为202.bbsSection(bbs版块表)字段名称数据类型说明约束备注SIDInt identity(1,1)版块编号P自动增长列SnameVarchar(50)版块名称USmasterInt版主FbbsUsers表UID字段外码Spro
10、fileVarchar(50)版面简介SclickCountInt点击数字段默认值为0StopicCountInt发帖数字段默认值为03.bbsTopic(bbs主帖表)字段名称数据类型说明约束备注TIDInt identity(1,1)帖子编号P自动增长列TsIDInt版块编号FbbsSection表SID字段外码TuIDInt发帖人IDFbbsUsers表UID字段外码treplyCountInt回复数量TfaceInt发帖表情TtopicVarchar(50)标题TcontentsVarchar(50)正文TtimeDatetime发帖时间为当前日期TclickCountInt点击数字段
11、默认值为0TstateInt状态Tstate字段默认值为1TlastReplydatetime最后回复时间字段的默认值为04.bbsReply(bbs回帖表)字段名称数据类型说明约束备注RIDInt identity(1,1)帖子编号P自动增长列RtIDInt主帖IDFbbsTopic表TID字段外码RuIDInt回帖人IDFbbsUsers表UID字段外码RfaceInt回帖表情RcontentsVarchar(50)正文RtimeDatetime回帖时间字段默认值为当前日期RclickCountint点击率3.3数据库物理设计3.3.1.数据库的实施 首先利用Powerdesign软件自动
12、生成源代码,然后参照代码,完善。实施的步骤如下:使用SQL server 2000查询分析器创建数据库bbsDB,代码如下:use master-新建数据bbsDB的库- go if exists(select * from sysdatabases where name = bbsDB) drop database bbsDB create database bbsDB on ( name = bbsDB_MDF,filename = C:kcsjbbsDB_MDF.mdf, size = 10mb, filegrowth = 10% ) log on ( name = bbsDB_LDF,
13、 filename = F:kcsjbbsDB_LDF.ldf, size = 1mb, maxsize = 20mb, filegrowth = 10% go -以上信息为新建的数据库-创建各个表及其约束,代码如下:use bbsDB go -新建bbsUsers表(用户表)- - if exists(select * from sysobjects where name=bbsUsers) drop table bbsUsecreate table bbsUsers ( UID int identity(1,1) not null, Uname varchar(50) not null,U
14、password varchar(50) not null, Uemail varchar(50), Usex char(2) not null, Uclass int, Uremark varchar(50),UregDate datetime not null, Ustate int,Upoint int, ) go -为bbsUsers表添加各种约束-alter table bbsUsers add constraint PK_UID primary key(UID) alter table bbsUsers add constraint CK_Upassword check(len(U
15、password) = 6) alter table bbsUsers add constraint DF_Upassword default() for Upassword alter table bbsUsers add constraint CK_Uemail check(Uemail like %) alter table bbsUsers add constraint DF_Usex default(男) for Usex alter table bbsUsers add constraint CK_Usex check(Usex=男 or Usex=女) alter table b
16、bsUsers add constraint DF_Uclass default(1) for Uclass alter table bbsUsers add constraint DF_UregDate default(getDate() for UregDate alter table bbsUsers add constraint DF_Ustate default(0) for Ustate alter table bbsUsers add constraint DF_Upoint default(20) for Upoint -以上信息为以建立的bbsUser(用户表)及各种约束-g
17、o -新建bbsSection表(版块表)- if exists(select * from sysobjects where name = bbsSection) drop table bbsSection create table bbsSection ( SID int identity(1,1) not null, Sname varchar(50) not null, SmasterID int not null, Sprofile varchar(50), SclickCount int,StopicCount int ) go -为表bbsSection(版块表)添加约束- al
18、ter table bbsSection add constraint PK_SID primary key(SID) alter table bbsSection add constraint FK_SmasterID foreign key(SmasterID) references bbsUsers (UID) alter table bbsSection add constraint DF_SclickCount default(0) for SclickCount alter table bbsSection add constraint DF_StopicCount default
19、(0) for StopicCount -以上为表bbsSection(版块表)建立及添加相应约束- go-新建bbsTopic表(主贴表)- if exists(select * from sysobjects where name = bbsTopic) drop table bbsTopic create table bbsTopic ( TID int identity(1,1) not null, TsID int not null, TuID int not null,TreplyCount int, Tface int, Ttopic varchar(50) not null,
20、Tcontents varchar(50) not null,Ttime datetime, TclickCount int,Tstate int not null,TlastReply datetime ) go-为bbsTopic(主贴表)表个字段添加约束- alter table bbsTopic add constraint PK_TID primary key(TID) alter table bbsTopic add constraint FK_TsID foreign key(TsID) references bbsSection (SID) alter table bbsTop
21、ic add constraint FK_TuID foreign key(TuID) references bbsUsers (UID) alter table bbsTopic add constraint DF_TreplyCount default(0) for TreplyCount alter table bbsTopic add constraint CK_Tcontents check(len(Tcontents) = 6) alter table bbsTopic add constraint DF_Ttime default(getDate() for Ttime alte
22、r table bbsTopic add constraint DF_TclickCount default(0) for TclickCountalter table bbsTopic add constraint DF_Tstate default(1) for Tstate alter table bbsTopic add constraint CK_TlastReply check(TlastReply Ttime) -以上为bbsTopic(主贴表)表建立及各字段的约束- go -新建表bbsReply(回帖表)- if exists(select * from sysobjects
23、 where name = bbsReply) drop table bbsReply create table bbsReply ( RID int identity(1,1) not null, RtID int not null,RuID int not null, Rface int,Rcontents varchar(50) not null,Rtime datetime,RclickCount int ) go-为bbsReply(回帖)表各个字段添加约束- alter table bbsReply add constraint PK_RID primary key(RID) al
24、ter table bbsReply add constraint FK_RtID foreign key(RtID) references bbsTopic(TID) alter table bbsReply add constraint FK_RuID foreign key(RuID) references bbsUsers(UID) alter table bbsReply add constraint DF_Rcontents check(len(Rcontents) = 6) alter table bbsReply add constraint DF_Rtime default(
25、getDate() for Rtime -以上为创建bbsReply(回帖)表的内容及各字段的约束-3.3.2触发器与存储过程设计触发器设计1bbsUsers表上的出发器触发器设计 a.名称:Tri_udelete 描述:当一个用户被管理员删除,其发表的主帖和跟帖也要被删除 代码:Use bbsDBGoCreate trigger Tri_udeleteOn bbsUsers After deleteAs Delete from bbsTopic where TuID in (select UID from deleted) Delete from bbsReply where RuID in
26、 (select UID from deleted)b.名称:Tri_uupdate 描述:当用户的积分增加的一定值后,对应的用户等级会发生变化。 代码:Create trigger Tri_uupdateOn bbsUsers After updateAsUpdate bbsUsers set Uclass=(1+(updated.Upiont)/100) where Upoint in (select Upoint from updated)2. bbsSection表上的触发器设计 a.名称:Tri_sdelete 描述:当一个版块被删除时,属于版块的主帖也被删除。 代码:Create
27、trigger Tri_sdeleteOn bbsSection After deleteAsDelete from bbsTopic where TsID in(select SID from deleted)存储过程设计 下面是部分存储过程的描述,包括插入数据、更新数据与查询数据。这里我们设计了发表帖子,查看帖子,回复帖子,搜索帖子,搜索用户,资料修改(用户)6个存储过程。1.发表帖子的存储过程Create procedure Pro_Tpush TsID int,TuID int,Tface int, Ttopic varchar(50) , Tcontents varchar(50)
28、, TlastReply datetime AsInsert Into bbsTopic(TsID,TuID,Tface,Ttopic,Tcontents,TlastReply) values(TsID,TuID,Tface,Ttopic,Tcontents,TlastReply)Go2查看帖子的存储过程:Create procedure Pro_TscanAs Select * from bbsTopicgo3.回复帖子的存储过程Create procedure Pro_TreplyRtID int,RuID int,Rface int,Rcontents varchar(50)As Ins
29、ert into bbsReply(RtID,RuID,Rface,Rcontents) Values(RtID, RuID, Rface, Rcontents)Go 4. 搜索帖子的存储过程Create procedure Pro_TserchTID intAs Select * from bbsTopic where TID=TIDgo5. 搜索用户的存储过程Create procedure Pro_UserchUID intAs Select *from bbsUsers where UID=UIDGo 6. 资料修改(用户)的存储过程Create procedure Pro_Uupda
30、teUID int,Uname varchar(50),Upassword varchar(50),Uemail varchar(50),Usex char(2),Uremark varchar(50)As Update bbsUsers set Uname=Uname,Upassword=Upassword,UemailUemail,Usex=Usex,Uremark=Uremark Where UID=UIDGo3.3.3关系图3.3.4确定关系模型的存取方法在实际设计中最常用的存取方法是索引法,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引;在主关键
31、字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。3.3.5 确定数据库的存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为本次bbs论坛系统的数据量小,而且只作实验之用,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。3.4系统实现3.4.1系统的界面1.用户注册界面 输入用户名确认是否可以正常使用,输入自己预想的用户名,继续输入邮箱
32、。连续两次输入密码进行密码设定,并设置密码提示问题及其答案。2.用户登录界面 输入用户名,密码以及验证码进行登录。 3.发表贴子 在标题框输入贴子标题,在内容框输入贴子内容,最后发表。4.查看贴子 此界面可以查看贴子主题及其发帖人,进而进入主贴。3.4.2数据库的试运行1bbsUsers表上的触发器试运行a.名称:Tri_udelete 描述:当一个用户被管理员删除,其发表的主帖和跟帖也要被删除试运行结果:b.名称:Tri_uupdate描述:当用户的积分增加的一定值后,对应的用户等级会发生变化。试运行结果:2. bbsSection表上的触发器试运行 a.名称:Tri_sdelete描述:当
33、一个版块被删除时,属于版块的主帖也被删除。试运行结果: 3.发表帖子的存储过程试运行4.查看帖子的存储过程试运行5.回复帖子的存储过程试运行四、课程设计结果与分析在课程设计中,我设计了BBS论坛管理系统,其中包含了对论坛的成员的管理,各个主题版块的管理,版块的各个帖子的管理,论坛的信息安全管理等。基本上包含了论坛管理所要求的信息,能够完成一定的数据管理功能。在设计当中我学习到了许多东西,用到了很多的数据库的理论知识,增强了一定的实践能力。 至于我在这过程中遇到的问题就很多了,比如说怎么限制主键约束,设置默认值,各个实体之间的联系怎么用SQL语言来建立等等。后面在插入数据的过程中出现无法插入的情况,检查发现,然来定义属性变量的时候给的内存空间不够,修改后正常插入。 自身也存在一定的问题:数据完整性的约束还得进一步完善,用户的权限判断过于简单,用户对帖子进行的删除等操作不够方便等等这些都需要在以后进行改进和完善。专心-专注-专业