课程设计报告题目小型论坛数据库系统课程名称数据库应用程序设计课程设计院部名称专业班级学生姓名学号课程设计地点课程设计学时指导教师金陵科技学院教务处制【注:根据课程设计大纲第四项具体要求撰写课程设计报告】成绩一、课程设计目的数据库应用程序课程设计旨在使学生对数据库应用系统的开发过程有一个全面的认识和了解,在程序设计语言课程基本编程训练的基础上,对数据库应用系统的流程和特点有较深入的了解,能够自觉运用数据库原理的理论知识指导软件设计,学会数据库的设计,并能对设计结果的优劣进行正确评价,能够使用已学过的程序设计语言编制具有可读性和可维护性的良好风格的程序。培养快速学习新知识,并在项目中使用的能力。二、课程设计要求1.采取分组并分工合作的方式进行课程设计,独立编制文档,态度认真、工作量饱满、完成设计所有要求;2.利用某种程序设计语言(以学生学过的C++、ASP、C#或JAVA为佳),用SQLSERVER2005进行后台数据库管理,编写出某个小型的管理信息系统,该系统应具备对数据进行录入、查询、删除、修改、统计、报表,还包括各用户界面的屏幕设计等功能;3.按照数据库设计的基本步骤完成数据库设计过程,要求数据库结构合理,符合实际,设计过程和文档的编写遵循软件工程规范。要求注重数据库系统的安全管理,包括数据备份、权限设置等,系统要有两类登陆用户:系统用户、一般用户;4.软件运行正确,提交的软件及课程设计报告思路正确、撰写规范、结构合理;5.按照数据库设计的六个步骤来撰写课程设计报告,即需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行维护,还要包括主要参考文献、课程设计的体会、用户的系统使用说明书、附录(系统的主控源程序代码)等。三、课程设计过程描述3.1系统简易需求描述小型论坛数据库系统(简称BBS)网络缩小我们的世界,其发展的迅速带动了人与人的交流。于是像论坛这种交流平台便应运而生。然而,网络的应用是离不开底层数据库的支持,一个良好的数据库系统是网络高效率运行的坚石。本次课程设计旨在在设计一个优秀的数据库系统来支持公司论坛系统的数据存储、数据管理等功能。一个基本的BBS论坛,可以大致分为以下流程:用户登录进入论坛(初始为游客,可以注册为会员),就某个话题(帖子的主题)展开讨论。通过发帖功能发布新的话题;通过回帖功能回复已有的话题;通过搜索功能查找已有的话题。管理员通过管理功能创建,编辑,删除论坛的版块;管理注册的用户;管理帖子。这样的流程决定了BBS论坛系统的需求。(1)会员注册:提供新会员注册的功能,包括提供录入信息的界面,检查注册信息的有效性,并将注册会员信息保存在对应数据库的数据表中。(2)发表文章:提供会员发表文章的功能,未注册的用户不允许使用该功能。(3)文章查询:对注册会员和未注册会员提供文章查询以及阅读的功能,即提供对应文章标题信息,以及查看详细内容及回复文章的超链接(4)会员管理:当网上论坛的会员完成注册后,系统会在数据库中加入会员的资料。包括会员名称会员密码会员E-mail等相关信息资料。同时,按照会员的不同身份,将特殊会员设置为版主,使他具备删除本讨论区中对应文章等特殊操作的权利。管理者可以依据数据库中注册的特殊身份登录到论坛后台对会员信息进行管理。(5)论坛分类管理:根据不同的讨论内容,管理员将整个讨论区划分成不同的区域,会员可以选择进入不同的讨论区,允许管理者对分类的版块进行调整,同时提供不同的讨论区中包括文章数量等的统计功能。(6)帖子管理:管理员和版主都可以对会员发表的帖子进行转移、置顶和删除等操作。3.2数据库逻辑设计3.2.1数据字典1.名词定义数据表描述缩写定义bbs小型论坛DB数据库数据字段类型缩写定义PPrimary,主键UUnique,唯一性约束或唯一性索引FForeignkey,外键IIndex,索引CCluster,聚簇索引NNull,空值3.2.2实体及其属性实体:用户属性:用户编号、用户名、密码、邮箱、性别、用户级别、备注信息、注册时间、状态、用户积分实体:板块属性:板块编号、板块名称、版主、版面简介、点击数、发帖数实体:主贴属性:帖子编号、板块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最后回复时间实体:跟帖属性:帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率3.2.3E-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实体关系模式将用户实体转换为用户关系:(用户编号、用户名、密码、邮箱、性别、用户级别、备注信息、注册时间、状态、用户积分)。将版块实体转换为板块关系:(板块编号、板块名称、版主、版面简介、点击数、发帖数)。将主贴转换为帖子关系:(帖子编号、板块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最后回复时间)。将跟帖实体转换为帖子回复关系:(帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率)。3.2.4数据库中各表设计结果基于上述数据库逻辑结构设计的结果,现在可以将其转化为给定数据库管理系统所支持的实际数据模型。1.bbsUsers(bbs用户表)字段名称数据类型说明约束备注UIDIntidentity(1,1)用户编号P自动增长列UnameVarchar(50)用户名U唯一值UpasswordVarchar(50)密码默认为000000,密码要大于6位UemailVarchar(50)邮箱形如%@%.%UsexChar(2)性别男,女UclassInt用户等级默认为1UremarkVachar(50)备注信息UregDatedatetime注册时间当前值UstateInt状态默认为0(未登入UpointInt用户积分默认为202.bbsSection(bbs版块表)字段名称数据类型说明约束备注SIDIntidentity(1,1)版块编号P自动增长列SnameVarchar(50)版块名称USmasterInt版主FbbsUsers表UID字段外码SprofileVarchar(50)版面简介SclickCountInt点击数字段默认值为0StopicCountInt发帖数字段默认值为03.bbsTopic(bbs主帖表)字段名称数据类型说明约束备注TIDIntidentity(1,1)帖子编号P自动增长列TsIDInt版块编号FbbsSection表SID字段外码TuIDInt发帖人IDFbbsUsers表UID字段外码treplyCountInt回复数量TfaceInt发帖表情TtopicVarchar(50)标题TcontentsVarchar(50)正文TtimeDatetime发帖时间为当前日期TclickCountInt点击数字段默认值为0TstateInt状态Tstate字段默认值为1TlastReplydatetime最后回复时间字段的默认值为04.bbsReply(bbs回帖表)字段名称数据类型说明约束备注RIDIntidentity(1,1)帖子编号P自动增长列RtIDInt主帖IDFbbsTopic表TID字段外码RuIDInt回帖人IDFbbsUsers表UID字段外码RfaceInt回帖表情RcontentsVarchar(50)正文RtimeDatetime回帖时间字段默认值为当前日期RclickCountint点击率3.3数据库物理设计3.3.1.数据库的实施首先利用Powerdesign软件自动生成源代码,然后参照代码,完善。实施的步骤如下:使用SQLserver2000查询分析器创建数据库bbsDB,代码如下:usemaster-----------------------------------------------新建数据bbsDB的库------------------------------------goifexists(select*fromsysdatabaseswherename='bbsDB')dropdatabasebbsDBcreatedatabasebbsDBon(name='bbsDB_MDF',filename='C:\kcsj\bbsDB_MDF.mdf',size=10mb,filegrowth=10%)logon(name='bbsDB_LDF',filename='F:\kcsj\bbsDB_LDF.ldf',size=1mb,maxsize=20mb,filegrowth=10%go---------------------------------------以上信息为新建的数据库---------------------------------------创建各个表及其约束,代码如下:usebbsDBgo----------------------------------新建bbsUsers表(用户表)-----------------------------------------ifexists(select*fromsysobjectswherename='bbsUsers')droptablebbsUsecreatetablebbsUsers(UIDintidentity(1,1)notnull,Unamevarchar(50)notnull,Upasswordvarchar(50)notnull,Uemailvarchar(50),Usexchar(2)notnull,Uclassint,Uremarkvarchar(50),UregDatedatetimenotnull,Ustateint,Upointint,)go----------------------------------------为bbsUsers表添加各种约束--------------------------------altertablebbsUsersaddconstraintPK_UIDprimarykey(UID)altertablebbsUsersaddconstraintCK_Upasswordcheck(len(Upassword)=6)altertablebbsUsersaddconstraintDF_Upassworddefault('000000')forUpasswordaltertablebbsUsersaddconstraintCK_Uemailcheck(Uemaillike'%@%')altertablebbsUsersaddconstraintDF_Usexdefault('男')forUsexaltertablebbsUsersaddconstraintCK_Usexcheck(Usex='男'orUsex='女')altertablebbsUsersaddconstraintDF_Uclassdefault(1)forUclassaltertablebbsUsersaddconstraintDF_UregDatedefault(getDate())forUregDatealtertablebbsUsersaddconstraintDF_Ustatedefault(0)forUstatealtertablebbsUsersaddconstraintDF_Upointdefault(20)forUpoint-------------------------以上信息为以建立的bbsUser(用户表)及各种约束-----------------go-----------------------------------新建bbsSection表(版块表)----------------------