资源描述
课程设计试验汇报
题目企业论坛管理系统数据库设计
系别:计算机科学和技术系
专业年级: 08计算机软件方向
姓名:洪维坤、洪鹭铭、李琪、纪白冰
学号:、、
、
指导老师:柳玲
成绩:
年 12 月 20 日-- 年 12 月 24 日
评语
摘要
经过一学期数据库原理学习,我们初略掌握了数据库设计方法。理论需要和实践联络在一起,为了深入巩固数据库理论知识、增强实际操作能力和设计能力,我们进行了此次课程设计。本课程设计要求设计一个小型企业论坛数据库系统,为企业内部职员提供一个在线交流网络平台。在设计中,我们把用户、版块、主帖、回帖等实体根据一定关系关联起来形成一个完整数据库系统。同时,依据需求我们设计不一样管理模块,对于不一样用户授予不一样权限。在数据库设计中,我们使用PowerDesignersql设计出概念模型设计和物理模型设计,然后和数据库SQLserver相连接,并生成初步表格,最终在数据库中依据要求设计出各个表触发器,和系统部分存放过程。最终,我们完成了整个数据库实施。经过此次课程设计,我们本学期学到相关知识得到有效复习,同时为我们积累了实战经验,为以后学习打下更坚实基础。
关键字:数据库课程设计小型企业论坛数据库系统
目录
摘要
目录3
1设计内容和要求
1.1 设计题目
小型企业论坛数据库系统<简称bbs)
1.2 设计目标和要求
网络缩小我们世界,其发展快速带动了人和人交流。于是像企业论坛这种交流平台便应运而生。然而,网络应用是离不开底层数据库支持,一个良好数据库系统是网络高效率运行坚石。此次课程设计意在在设计一个优异数据库系统来支持企业论坛系统数据存放、数据管理等功效。同时,期望此次课程设计会让我们对数据库理论知识进一了解以加强我们动手能力和实践能力。
1.3 设计环境
在Windows 环境下利用Sybase PowerDesigner作为概念模型设计和物理模型设计工具,使用SqlServer作为数据库管理系统对数据进行管理和维护。
2需求分析
2.1 系统功效要求设计
2.1.1论坛系统需求分析
一个基础bbs论坛,能够大致分为以下步骤:用户登录进入论坛<通常为游客,有时还要注册为会员),就某个话题<帖子专题)展开讨论。经过发帖功效公布新话题;经过回帖功效回复已经有话题;经过搜索功效查找已经有话题。管理员经过管理功效创建编辑删除论坛版块;管理注册用户;管理帖子。
这么步骤决定了bbs论坛系统需求。
(1>会员注册:提供新会员注册功效,包含提供录入信息界面,检验注册信息有效性,并将注册会员信息保留在对应数据库数据表中。
(2>发表文章:提供会员发表文章功效,未注册用户不许可使用该功效。
(3>文章查询:对注册会员和未注册会员提供文章查询和阅读功效,即提供对应文章标题信息,和查看具体内容及回复文章超链接
(4>会员管理:当网上论坛会员完成注册后,系统会在数据库中加入会员资料。包含会员名称会员密码会员E-mail等相关信息资料。同时,根据会员不一样身份,将特殊会员设置为版主,使她含有删除本讨论区中对应文章等特殊操作权利。管理者能够依据数据库中注册特殊身份登录到论坛后台对会员信息进行管理。
(5>论坛分类管理:依据不一样讨论内容,管理员将整个讨论区划分成不一样区域,会员能够选择进入不一样讨论区,许可管理者对分类版块进行调整,同时提供不一样讨论区中包含文章数量等统计功效。
(6>帖子管理:管理员和版主全部能够对会员发表帖子进行转移、置顶和删除等操作。
2.2 系统模块设计
bbs论坛系统能够分成前台和后台两大业务模块。
系统总体功效需求框架图
2.2.1前台基础业务模块
<1)注册会员
提供新会员注册功效,包含提供录入信息界面,检验注册信息有效性,并将注册会员信息保留在对应数据库数据表中。
<2)登录系统
提供会员登录论坛功效,要想针对某篇帖子讲话,或发表帖子,必需是登录用户才能够操作。因为论坛中一些操作只有会员才能够实施,所以必需先登录系统.
<3)浏览帖子
对注册会员和未注册会员提供文章查询和阅读功效,即提供对应文章标题信息,和查看具体内容及回复文章超链接
<4)会员发表帖子
会员能够针对某个感爱好话题发表自己独到见解。未注册用户此此项功效。
<5)回复帖子
注册会员和未注册会员全部能够针对某一个话题展开讨论,发表意见,并给出回复。
前台基础业务模块图
2.2.2后台管理模块
<1)版块管理
依据不一样话题,管理员能够将每个话题分成不一样种类版块,然后对其进行管理。管理员还能够删除认为无须要版块话题;管理员能够修改版块专题名类型和数量;管理员还能够添加新版块。
<2)帖子管理
管理员能够对会员发表帖子进行管理。管理员能够删除内容反动或不健康帖子,能够置顶帖子。还能够设置精华帖,控制帖子点击率等操。
<3)会员管理
管理员能够对会员进行管理。能够删除会员,收回她会员号,;修改会员基础信息,修改会员积分,排行等。
后台基础业务模块图
2.3数据流图设计
依据系统需求分析和模块设计,我们细化出bbs论坛系统数据流图。其图以下:
数据流图
说明:<1)--访问信息
<2)<3)<10)<11)--用户信息
<4)--帖子信息
<5)--更新帖子信息
<6)--搜索信息
<7)--获取帖子信息
<8)--回复信息
<9)--搜索用户
<12)--更新用户信息
<13)--获取用户信息
2.4数据字典
2.4.1 名词定义
数据表描述
缩写
定义
bbs
小型企业论坛
DB
数据库
数据字段类型
缩写
定义
P
Primary,主键
U
Unique,唯一性约束或唯一性索引
F
Foreign key,外键
I
Index,索引
C
Cluster,聚簇索引
N
Null,空值
2.4.2数据项
数据项是数据库关系中不可再分数据单位,下表分别列出了数据名称(即码>、注释、数据类型、长度、取值范围和是否是主码。
1.bbsUsers(bbs用户表>
字段名称
数据类型
说明
约束
备注
UID
Int identity(1,1>
用户编号
P
自动增加列
Uname
Varchar(50>
用户名
U
唯一值
Upassword
Varchar(50>
密码
默认为000000,密码要大于6位
Uemail
Varchar(50>
邮箱
形如%@%.%
Usex
Char(2>
性别
男,女
Uclass
Int
用户等级
默认为1
Uremark
Vachar(50>
备注信息
UregDate
datetime
注册时间
目前值
Ustate
Int
状态
默认为0<未登入
Upoint
Int
用户积分
默认为20
2.bbsSection(bbs版块表>
字段名称
数据类型
说明
约束
备注
SID
Int identity(1,1>
版块编号
P
自动增加列
Sname
Varchar(50>
版块名称
U
Smaster
Int
版主
F
bbsUsers表UID字段外码
Sprofile
Varchar(50>
版面介绍
SclickCount
Int
点击数
字段默认值为0
StopicCount
Int
发帖数
字段默认值为0
3.bbsTopic(bbs主帖表>
字段名称
数据类型
说明
约束
备注
TID
Int identity(1,1>
帖子编号
P
自动增加列
TsID
Int
版块编号
F
bbsSection表SID字段外码
TuID
Int
发帖人ID
F
bbsUsers表UID字段外码
treplyCount
Int
回复数量
Tface
Int
发帖表情
Ttopic
Varchar(50>
标题
Tcontents
Varchar(50>
正文
Ttime
Datetime
发帖时间
为目前日期
TclickCount
Int
点击数
字段默认值为0
Tstate
Int
状态
Tstate字段默认值为1
TlastReply
datetime
最终回复时间
字段默认值为0
4.bbsReply(bbs跟帖表>
字段名称
数据类型
说明
约束
备注
RID
Int identity(1,1>
帖子编号
P
自动增加列
RtID
Int
主帖ID
F
bbsTopic表TID字段外码
RuID
Int
回帖人ID
F
bbsUsers表UID字段外码
Rface
Int
回帖表情
Rcontents
Varchar(50>
正文
Rtime
Datetime
回帖时间
字段默认值为目前日期
RclickCount
int
点击率
2.4.3数据结构
数据结构是为反应数据之间组合关系,即一个数据结构能够由若干个数据项组成,也能够由若干个数据结构组成,或由若干个数据项和数据结构组成。本bbs论坛系统数据结构组成可依据系统模块图和数据流图及数据库表设计。具体以下表所表示:
数据结构表
数据结构名
含义说明
组成
用户信息
用户基础信息描述
用户编号、用户名、密码、邮箱、性别、用户等级、备注信息、注册时间、状态、用户积分
版块信息
版块基础信息描述
版块编号、版块名称、版主、版面介绍、点击数、发帖数
主帖信息
主帖基础信息描述
帖子编号、版块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最终回复时间
跟帖信息
跟帖基础信息描述
帖子编号、主帖ID、版块ID、回帖人ID、回帖表情、正文、回帖时间、点击率
2.4.4数据流
数据流是数据结构在系统内传输路径。依据数据流图,bbs论坛系统关键包含
数据流表
数据流名
说明
起源
去向
组成
流量
备注
用户信息
用户部分信息
用户
发表帖子
<搜索帖子、
搜索用户、
资料修改)
用户编号、用户名、密码、用户等级、状态
——
——
访问信息
用户
查看帖子
用户编号、用户名、密码、用户等级、状态
发表帖子信息
主帖基础信息
发表帖子
帖子资料
帖子编号、版块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间
—
——
更新帖子信息
主帖基础信息
帖子资料
搜索帖子
<回复帖子)
帖子编号、版块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间
——
——
搜索帖子信息
主帖部分信息
搜索帖子
查看帖子
帖子编号、版块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最终回
——
——
获取帖子信息
主帖基础信息
帖子资料
查看帖子
帖子编号、版块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最终回
——
——
回复信息
跟帖基础资料
查看帖子
回复帖子
帖子编号、主帖ID、版块ID、回帖人ID、回帖表情、正文、回帖时间、点击率
——
——
更新用户信息
用户基础资料
用户资料
<资料修改)
资料修改
<用户资料)
用户编号、用户名、密码、邮箱、性别、用户等级、备注信息、注册时间、状态、用户积分
——
——
获取用户信息
用户基础资料
用户资料
搜索用户
用户编号、用户名、密码、邮箱、性别、用户等级、备注信息、注册时间、状态、用户积分
——
——
2.4.5数据存放
数据存放是数据结构停留或保留地方,也是数据流起源和去向之一。其关键包含数据存放名、说明、编号、输入数据流和输出数据流、组成、数据量,存取频度、存取方法。下表表示了该bbs论坛系统中数据存放描述。
数据存放描述
数据存放名
组成
输入数据流
输出数据流
存取频度
存取方法
用户资料
用户基础信息结构
更新用户信息
获取数据流
大
次序检索、更新
帖子资料
主帖相关信息数据结构
发表帖子信息、更新帖子信息
获取帖子信息
大
次序检索、更新
2.4.6处理过程
该bbs论坛系统处理过程比较少,关键包含了发表帖子、查看帖子、回复帖子、搜索帖子、搜索用户、资料修改。下图显示了这些最基础处理和其对应数据流和说明。
处理过程表
处理名
简明说明
输入数据
输出数据
备注
发表帖子
——
用户信息
发表帖子信息
——
查看帖子
——
访问信息
搜索用户信息、回复信息
——
回复帖子
——
回复信息
更新帖子信息
——
搜索帖子
——
用户信息、搜索信息
搜索信息
——
搜索用户
——
用户信息、搜索用户、获取用户资料
无
——
资料修改
用户资料修改
用户信息、获取用户资料
获取用户资料
3概念结构设计
3.1 数据抽象和局部视图设计
3.1.1用户实体局部e-r图
3.1.2版块实体局部e-r图
3.1.3主帖实体局部e-r图
3.1.4跟帖实体局部e-r图
3.2合并局部e-r图生成bbs论坛系统总体E-R 图
3.3概念模型设计
在生成了系统E-R图后,可依据E-R图中实体各个属性组成和实体和实体之间关系用PowerDesigner设计概念模型。最终生成概念模型以下图所表示:
4逻辑结构和物理结构设计
4.1 将实体转化为关系模型
依据以上概念结构设计bbs论坛系统总E-R图,将其中实体转化为以下关系,关系码用下划线标出。
*将用户实体转换为用户关系:<用户编号、用户名、密码、邮箱、性别、用户等级、备注信息、注册时间、状态、用户积分)。
*将版块实体转换为板块关系:<板块编号、板块名称、版主、版面介绍、点击数、发帖数)。
*将帖子实体转换为帖子关系:<帖子编号、板块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最终回复时间)。
*将帖子回复实体转换为帖子回复关系:<帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率)。
4.2设计用户子模式
为了方便不一样用户使用,需要使用更符适用户习惯别名,而且针对不一样用户定义不一样视图,以满足系统对安全性要求。
*为一般用户设计子模式:
发表跟帖信息<帖子编号、主帖ID、板块ID、回复人ID、回帖表情、正文、回帖时间、点击率,排名)
*为版主用户设计子模式:
发表主帖帖信息<帖子编号、板块编号、发帖人ID、回复数量、发帖表情、标题、正文、发帖时间、点击数、状态、最终回复时间,排名)
*为管理用户设计子模式:
用户基础信息<用户编号、用户名、密码、邮箱、性别、用户等级、备注信息、注册时间、状态、用户积分,排名)
版块信息<板块编号、板块名称、版主、版面介绍、点击数、发帖数,排名)
4.3将概念模型转换为物理模型
在概念模型设计好了以后,可直接在powerdesigner 中将设计好了概念模型转换成物理模型。其具体操作过程为点击主菜单 ToolsàGenerate Physical Data Model 便能够将目前概念模型转换为物理模型,转换后物理模型以下图所表示:
5 物理结构设计和功效实现
5.1 系统物理结构设计
5.1.1 确定关系模型存取方法
在实际设计中最常见存取方法是索引发,使用索引能够大大降低数据查询时间,在建立索引时应遵照:在常常需要搜索列上建立索引; 在主关键字上建立索引;在常常见于连接列上建立索引,即在外键上建立索引;在常常需要依据范围进行搜索列上创建索引,因为索引已经排序,其指定范围是连续等规则。才能充足利用索引作用避免因索引引发负面作用。
5.1.2 确定数据库存放结构
确定数据库存放结构关键指确定数据存放位置和存放结构,包含确定关系、索引、日志、备份等存放安排及存放结构,和确定系统存放参数配置。因为此次bbs论坛系统数据量小,而且只作试验之用,所以我们只用把数据存放在使用电脑硬盘上,不用作更多安排。
5.2数据库实施和数据载入
5.2.1数据库实施
首先利用Powerdesign软件自动生成源代码,然后参考代码,完善。
实施步骤以下:
1.使用SQL server 查询分析器创建数据库bbsDB,代码以下:
use master
----------------------------------------新建数据bbsDB库-------------------------------------------------------
go
--判定数据库是否存在使用exists关键字,在用sysdatabases关键字查询--
if exists(select * from sysdatabases where name = 'bbsDB'>
--假如数据库存在就删除此数据库 drop<删除)database<数据库对象)bbsDB<数据库名)--
drop database bbsDB
--删除后在添加一个数据create<添加)database<数据库对象)bbsDB<数据库名)on--
create database bbsDB
on
( name = 'bbsDB_MDF', --数据库主文件名--
filename = 'C:\kcsj\bbsDB_MDF.mdf', --数据库存放路径--
size = 10mb, --数据库初使大小--
filegrowth = 10% --增加改变--
>
--设置日志文件--
log on
( name = 'bbsDB_LDF', --日志文件名--
filename = 'F:\kcsj\bbsDB_LDF.ldf', --日志文件存放路径--
size = 1mb, --日志文件初使大小--
maxsize = 20mb, --日志文件最大可储存--
filegrowth = 10% --增加改变-- >
go
---------------------------------------以上信息为新建数据库------------------------------------------------------------
2.创建各个表及其约束,代码以下:
use bbsDB
go
----------------------------------------------新建bbsUsers表(用户表>------------------------------------------------------
-------判定bbsDB库是否有表bbsUser存在exists关键字+sysobjects判定目前数据库表----
if exists(select * from sysobjects where name='bbsUsers'>
--假如表存在就删除此表--
drop table bbsUse
--新建bbsUser表--
create table bbsUsers ( UID int identity(1,1> not null, --用户编号,自动增加列,不许可空--
Uname varchar(50> not null, --用户名,不许可空--
Upassword 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表添加多种约束-----------------------------------------------
--为bbsUser表添加约束,add constraint关键字PK_UID约束名,primary key<主键)设置UID字段为主键--
alter table bbsUsers add constraint PK_UID primary key(UID>
--为Upassword添加约束,check(Upassword length>=6>字段长度大于等于6位,default设置默认值为000000--
alter table bbsUsers add constraint CK_Upassword check(len(Upassword> >= 6> alter table bbsUsers add constraint DF_Upassword default('000000'> for Upassword
--为Uemail字段添加约束,必需包含@号--
alter table bbsUsers add constraint CK_Uemail check(Uemail like '%@%'>
--为User字段添加约束,设置默认值为男,而且值只能是男或女--
alter table bbsUsers add constraint DF_Usex default('男'> for Usex alter table bbsUsers add constraint CK_Usex check(Usex='男' or Usex='女'>
--为Uclass字段添加约束,默认值为1--
alter table bbsUsers add constraint DF_Uclass default(1> for Uclass
--为UregDate字段添加约束,默认值为目前日期--
alter table bbsUsers add constraint DF_UregDate default(getDate(>> for UregDate
--为Ustate添加约束,默认值为0--
alter table bbsUsers add constraint DF_Ustate default(0> for Ustate
--为Upoint字段添加约束,默认值为20--
alter table bbsUsers add constraint DF_Upoint default(20> for Upoint
---------------------------------以上信息为以建立bbsUser<用户表)及多种约束-----------------------------------
go
-----------------------------------新建bbsSection表<版块表)-----------------------------------------------------
--判定数据库内是否有表bbsSection存在--
if exists(select * from sysobjects where name = 'bbsSection'>
--假如有此表实施删除--
drop table bbsSection
--新建bbsSection表,及个字段--
create table bbsSection
(
SID int identity(1,1> not null, --版块编号,自动增加列--
Sname varchar(50> not null, --版块名称,不许可空--
SmasterID int not null, --版主ID--
Sprofile varchar(50>, --版面介绍--
SclickCount int, --点击数--
StopicCount int --发贴数--
>
go
-----------------------------------为表bbsSection<版块表)添加约束-----------------------------------------------
--将SID字段设置为主键--
alter table bbsSection add constraint PK_SID primary key(SID>
--为SmasterID设置外键,她主键是bbsUsers表UID字段foreign key(外键> references 主键表(主键表字段>--
alter table bbsSection add constraint FK_SmasterID foreign key(SmasterID> references bbsUsers (UID>
--为SclickCount字段添加默认值为0--
alter table bbsSection add constraint DF_SclickCount default(0> for SclickCount
--为字段StopicCount设置默认值为0--
alter table bbsSection add constraint DF_StopicCount default(0> for StopicCount
-------------------------------以上为表bbsSection<版块表)建立及添加对应约束-------------------------------------
go
--------------------------------------------新建bbsTopic表<主贴表)---------------------------------------------------
--判定数据库中是否有bbsTopic表存在--
if exists(select * from sysobjects where name = 'bbsTopic'>
--删除此表--
drop table bbsTopic
--新建bbaTopic表及个字段--
create table bbsTopic
( TID int identity(1,1> not null, --帖子编号--
TsID int not null, --版块编号--
TuID int not null, --发贴人ID--
TreplyCount int, --回复数量--
Tface int, --发贴表情--
Ttopic varchar(50> not null, --标题--
Tcontents varchar(50> not null, --正文--
Ttime datetime, --发贴时间--
TclickCount int, --点击数--
Tstate int not null, --状态--
TlastReply datetime --最终回复时间--
>
go
-----------------------------------------为bbsTopic(主贴表>表个字段添加约束-------------------------------------------
--将TID字段设置为主键--
alter table bbsTopic add constraint PK_TID primary key(TID>
--将TsID设置为外键,引用bbsSection表主键SID字段--
alter table bbsTopic add constraint FK_TsID foreign key(TsID> references bbsSection (SID>
--将TuID字段设置为外键盘,引用bbsUsers表主键UID字段--
alter table bbsTopic add constraint FK_TuID foreign key(TuID> references bbsUsers (UID>
--设置TreplyCount字段默认值为0--
alter table bbsTopic add constraint DF_TreplyCount default(0> for TreplyCount
--为Tcontents字段添加约束,她值必需大于等于6位--
alter table bbsTopic add constraint CK_Tcontents check(len(Tcontents> >= 6>
--为Ttime字段添加默认值,为目前日期--
alter table bbsTopic add constraint DF_Ttime default(getDate(>> for Ttime
--设置TclickCount字段默认值为0--
alter table bbsTopic add constraint DF_TclickCount default(0> for TclickCount
--设置Tstate字段默认值为1--
alter table bbsTopic add constraint DF_Tstate default(1> for Tstate
--为TlastReply字段添加约束,最终回复时间必需要晚于发贴时间--
alter table bbsTopic add constraint CK_TlastReply check(TlastReply > Ttime>
----------------------------以上为bbsTopic<主贴表)表建立及各字段约束-------------------------------
go
-------------------------------------------------新建表bbsReply<回帖表)--------------------------------------------------
--判定数据库中是否有bbsReply<回帖表)存在--
if exists(select * from sysobjects where name = 'bbsReply'>
--删除bbsReply表--
drop table bbsReply
--创建bbsReply<回帖)表及个字段--
create table bbsReply
(
RID int identity(1,1> not null, --帖子编号--
RtID int not null, --主贴ID--
RuID int not null, --回帖人ID--
Rface int, --回帖表情--
Rcontents varchar(50> not null, --正文--
Rtime datetime, --回帖时间--
RclickCount int --点击数--
>
go
-----------------------------------------为bbsReply<回帖)表个字段添加约束----------------------------------------
--设置RID字段为主键--
alter table bbsReply add constraint PK_RID primary key(RID>
--设置RtID字段为外键引用bbsTopic表主键TID字段--
alter table bbsReply add constraint FK_RtID foreign key(RtID> references bbsTopic(TID>
--设置RuID为外键引用bbsUsers表主键UID字段--
alter table bbsReply add constraint FK_RuID foreign key(RuID> references bbsUsers(UID>
--设置Rcontents字段必需大于6位--
alter table bbsReply add constraint DF_Rcontents check(len(Rcontents> >= 6>
--设置Rtime字段默认值为目前日期--
alter table bbsReply add constraint DF_Rtime default(getDate(>> for Rtime
---------------------------以上为创建bbsReply<回帖)表内容及各字段约束---------------------------------
5.2.2数据载入
一样,我们使用SQL server 查询分析器向各个表插入数据。代码以下:
------------------------------------------------------向表格中插入数据-----------------------------------------
go
--向bbsUsers<用户表插入数据)--
insert into bbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint>
values('天天','123456','','女',2,'我们家乡在期望田野上',3,100>
insert into bbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint>
values('可卡因','HYXS007','','女',1,'我要去公安局自首',1,200>
insert into bbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint>
values('心酸果冻','888888','','男',2,'牵匹瘦马闯天涯',2,600>
ins
展开阅读全文