数据库系统原理设计--论坛系统

时间:2023-02-02 05:56:11
论坛信息管理系统 
摘要:随着科学技术的发展,基本上所有的具有一定数量数据的机构都 
开始使用计算机数据库来管理。现如今网络盛行,BBS 论坛已成为人们生活 
中的一种信息交流渠道,它通过在计算机上运行服务软件,允许用户使用终端 
程序通过电话调制解调器拨号或者 Internet 来进行连接,执行下载数据或程 
序、上传数据、阅读新闻、与其他用户交换消息等功能。 
本文主要介绍利用 SQL Sever 2008 作为设计工具,理解并运用课程中关 
于数据库设计的相关理论,按照设计流程要求完成完整的论坛信息管理的数 
据库设计,包括需求分析、概念结构设计、逻辑结构设计、物理结构设计和 
数据库实施。 

关键词:SQL 语言、数据库设计、论坛信息管理系统 

第一部分:引言 
数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其 
在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得 
到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。 
随着网络的发展,论坛已经成为人们日常进行交流的一个不可或缺的空 
间。人们可以再论坛中谈论喜欢的话题,提出或解答疑问,发布通知和公告 
等。由于它独特的形式和强大的功能,受到广大网友的欢迎,并成为全世界 
计算机用户信息交流的园地。 
在软件开发的过程中,随着面向对象程序设计和数据库系统的成熟,数 
据成为软件开发的核心,程序的设计要服从数据,因此论坛信息管理系统的 
数据库设计尤其重要。本文主要介绍论坛信息管理系统的数据库方面的设计, 
从需求分析到数据库的运行与维护都进行详细的叙述。本文的分为 6 章: 
第 1 章主要是课程的简介及设计的内容与目的。 
第 2 章是需求分析,此阶段是数据库设计的起点。 
第 3 章是概念设计,它是将需求分析的用户需求抽象为信息结构。 
第 4 章是逻辑结构设计,它将概念模型转换为某个 DBMS 所支持的数据 
模型。 
第 5 章物理设计阶段,它包括系统具体功能模板的分析实现。 
第 6 章是数据库的实施与运行,它包括数据的载入及数据库的运行。 

第二部分:数据库内容设计 
第一章 绪论 
1、课题简介 
随着现代科技的高速发展,设备和管理的现代化,在实际工作中如何提高工作效率成为 
一个很重要的问题。而建立信息管理系统是一个很好的解决办法。 
经过一学期的学习,我对数据库方面的知识有了很大的了解,本着理论联系实际的宗旨, 


通过这次综合设计实验课的机会,在查找资料、反复思考的前提下设计了一个论坛信息管理 
系统。在下面的各章中,我将详细介绍这个数据库的设计和实施过程。 
2、设计目的 
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合 
起来,巩固所学知识。 
数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构 
的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 
数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关 
知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息 
管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、 
维护以及系统评价的一般过程,为毕业设计打下基础。 
3、设计内容 
运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设 
计直至系统的最终实现,开发论坛信息管理系统,完成论坛信息管理系统的全部功能。 
首先做好需求分析,并完成系统具体分析和数据字典。 
其次做概念结构设计,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得 
到E-R图。 
然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型。 

第二章 需求分析 
1、需求分析的任务 
需求分析的任务是调查应用领域,对应用领域中的信息要求和操作要求进行详细分析, 
形成需求分析说明书。重点是调查,收集与分析用户在数据管理中的信息要求,处理要求, 
数据的安全性与完整性要求。 
为了完成需求分析的任务,要详细调查待开发的数据库应用部门的情况,了解原系统工 
作概况,分析用户的各种需求,在此基础上确定新系统的功能。新系统必须考虑今后的扩充 
和改变,不能仅仅按当前应用需求来设计数据库。 
2、需求分析的内容 
开发一个BBS 论坛系统,具体应实现如下功能: 


(1)用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息。 
(2)用户发帖,后台数据库需要存放帖子相关信息,如帖子内容、标题等。 
(3)论坛版块管理,后台数据库需要存放各个版块信息,如版主、版块名称和帖子数等。 
(4)确定系统的边界。确定整个系统中哪些由计算机完成,哪些将来由系统完成,哪些 
由人工完成。由计算机完成的功能就是新系统完成的功能。 
3、数据字典 

表中列名 数据类型 可否为空 说明 
UID char Not null(主键) 用户编号 
UName char Not null 账号 
UPassword char not null 密码 
UPoint Int not null 积分 
UClass char Not null 级别 
表1:BBSUsers用户信息表 

表中列名 数据类型 可否为空 说明 
cid char Not null(主键) 栏目编号 
fcid char Not null 父栏目编号 
cname char Not null 栏目名称 
cmasterid char Not null 版主编号 
cstatement varchar Not null 栏目描述 
表2:BBSColumn栏目信息 

表中列名 数据类型 可否为空 说明 
tid char Not null(主键) 主题编号 
tuid char Not null 用户编号 
ttopic varchar Not null 主题标题 
tclickcount int Not null 主题点击次数 
tcontents char Not null 主题内容 


ttime datetime Not null 主题发布时间 
ttype char Not null 类型 
tfuj char 附件 
表3:BBSTopic主题信息表格 

表中列名 数据类型 可否为空 说明 
rtid char Not null 回复主题编号 
rtopic varchar Not null 回复主题标题 
tid char Not null 主题编号 
rtcontents char Not null 回复主题内容 
rttime datetime Not null 发布时间 
ruid char Not null 用户编号 
rfuj char 附件 
表4:BBSReply 回复主题信息表 

第三章 概念结构设计 
1、概念结构设计的简介 
现实世界中的事物及其活动被人们抽象为数据,人们为了更好地利用和处理数据,又必 
须把针对某一方面应用的相关数据按照一定的数据结构形式组织起来。这种数据结构形式只 
考虑数据本身的结构以及相互的自然联系,是人们对现实世界的认识和抽象,不考虑在计算 
机上的具体实现,也可以说与计算机的具体实现无关,所以被人们称之为概念数据模型。 
2、概念结构设计的方法 
设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。本论 
坛信息管理系统采用的是自底向上的方法。即首先定义全局的概念结构的框架,然后逐步细 
化。根据自顶向下地进行需求分析然后再自底向上地进行概念设计。 
2.1 概念结构设计的步骤 
概念结构的设计可分为两步:第一步是抽象数据并设计局部视图。第二步是 
集成局部视图,得到全局的概念结构。 
2.2 数据抽象与局部视图设计 



局部E-R 图: 


用户实体E-R 图 

主题实体E-R 图 






用户 
编号 
账号 密码 积分 
级别 
主题 
编号 
标题 
类型 
点击量 
内容 
发布时间 
用户编号 
附件 



栏目实体E-R 图 

回复主题实体E-R 图 

2.3 视图的集成 
描述进行视图集成的具体过程,最后得到论坛信息管理系统的总体概念结构E-R 图, 
其中各实体的属性同以上各局部E-R 图,在此省略。 
栏目 
栏目编号 
父栏目编号 
名称 
版主编号 
描述 
回复主题 
回复主题编号 
标题 
内容 
附件 
发布时间 
用户编号 
主题编号 


第四章 逻辑结构设计 
1、E-R 图向关系模型的转换 
将总体概念结构的E-R 图转化成关系模型: 
用户(用户编号,账号,密码,积分,级别) 
栏目(栏目编号,父栏目编号(外键),名称,版主,描述) 
主题(主题编号,标题,类型,点击率,内容,发布时间,发布时间,用户编号,附件) 
回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件) 
2、数据库的结构 
给出数据库基本表总体结构图: 
用户 
主题 
回复主题 
管理 
发表 
发表 
对应 
栏目 
包含 
包含 



根据总体结构图设计各表的结构: 
BBSUsers用户信息表: 

BBSColumn栏目信息: 

BBSTopic主题信息表格: 
BBSReply回复主题信息表: 

第五章 物理设计阶段 
1、系统功能模块 
(1)用户表的查询和更新模块 
将完成用户基本信息的查询、更新(修改、插入、删除)操作,便于对用户信息的集中 
管理 
(2)栏目表的查询和更新模块 
将完成栏目基本信息的查询、更新(修改、插入、删除)操作,便于对栏目信息的集中 
管理 


10 
(3)主题表的查询和更新模块 
将完成对所发表主题的基本信息的查询、更新(修改、插入、删除)操作,便于对主题 
信息的集中管理 
(4)回复主题表的查询和更新模块 
将完成回复主题基本信息的查询、更新(修改、插入、删除)操作,便于对回复主题信 
息的集中管理 

2、物理设计阶段结果 
编号 存储过程 作用 
1 用户表_insert 在用户表中插入一元组 
2 栏目表_insert 在栏目中插入一元组 
3 主题表_insert 在主题中插入一元组 
4 回复主题表_insert 在回复主题中插入一元组 
存储过程汇总 (其他表的查询、修改、删除与上面表的大致相同,这里不再具体列出) 

第六章 数据库的实施与运行 
1、建立数据库 
Create database BBS 
on primary 
(name=BBS_data, 
Filename='d:\BBS_data.mdf', 
Size=20MB, 
Filegrowth=10%, 
Maxsize=200MB) 
Log on 
(name=bbs_log, 
Filename='d:\bbs_data.ldf', 
Size=10mb, 
Filegrowth=10%, 
Maxsize=100MB) 
Go 
2、建立基本表 
2.1 建立用户信息表 
create table u 
(uid char(14) primary key, 
uname char(16)not null, 
upassword char(10)not null, 
upoint int not null, 
uclass char(8)not null); 
go 

11 
2.2 建立栏目信息表 
create table c 
(cid char(8) primary key, 
fcid char(8)not null, 
cname char(10)not null, 
cmasterid char(14)not null unique, 
cstatemeent varchar(20)not null, 
foreign key (cmasterid) references u(uid), 
foreign key(fcid) references c(cid)); 
go 
2.3 建立主题信息表 
create table t 
(tid char(8) primary key, 
ttopic char(10)not null, 
ttype char(4)not null, 
tclickcount int not null, 
tcontents char(16)not null, 
ttime datetime not null, 
tuid char(14)not null, 
tfuj char(10), 
foreign key(tuid)references u(uid), 
check(ttype in('精华','置顶','普通'))); 
go 
2.4 建立回复主题信息表 
create table rt 
(rtid char(8) primary key, 
rtopic varchar(10)not null, 
tid char(8)not null, 
rcontent char(16)not null, 
rttime datetime not null, 
ruid char(14)not null, 
rfuj char(10), 
foreign key(tid)references t(tid), 
foreign key(ruid)references u(uid)); 
go 
3、建立视图 
3.1 建立用户表视图 
create view u_view 
as 
select * 

12 
from u 
with check option; 
go 
3.2 建立栏目表视图 
create view c_view 
as 
select * 
from c 
with check option; 
go 
3.3 建立主题表视图 
create view t_view 
as 
select * 
from t 
with check option; 
go 
3.4 建立回复主题表视图 
create view rt_view 
as 
select * 
from rt 
with check option; 
go 
4、建立存储过程并对其功能进行验证 
4.1 建立用户表的存储过程并调用 
Create procedure p_insertu 
(@uid char(14), 
@uname char(16), 
@upassword char(10), 
@upoint int, 
@uclass char(8)) 
as 
insert into u values(@uid,@uname,@upassword,@upoint,@uclass) 
go 
exec p_insertu '20101104978','雷利','563478','436798','初级用户' 
go 
4.2 建立栏目表的存储过程 

13 
Create procedure p_insertc 
(@cid char(8), 
@fcid char(8), 
@cname char(10), 
@cmasterid char(14), 
@cstatemeent varchar(20)) 
as 
insert into c values(@cid,@fcid,@cname,@cmasterid,@cstatemeent) 
go 
4.3 建立主题表的存储过程 
Create procedure p_insertt 
(@tid char(8), 
@ttopic char(10), 
@ttype char(2), 
@tcontents char(16), 
@tuid char(14), 
@tfuj char(10)) 
as 
insert into t values(@tid,@ttopic,@ttype,@tcontents,@tuid,@tfuj) 
go 
5、建立触发器 
5.1 实现“当用户开始注册时,积分为100”的功能 
create trigger inu_upoint 
on u 
after insert 
as 
begin 
update u 
set upoint=100 
end 
go 
结论 
通过这次综合实验设计,我了解了数据库设计的一般过程。在接受客户的一个项目的时 
候,首先是进行系统分析。即首先分析其以后的销售情况以及技术可行性。如果二者可行, 
接下来要做的就是总体设计。首先必须听取客户的要求,将其提出的功能按某种方式划分 
为几种模块,这就是整体设计。再对每一个模块进行细化形成最为简单的模块。然后是考虑 
每一细化模块的算法并将其用语言刻画出来,这就是详细设计,这就迈出了最为关键的一步。 
剩下的就是编译测试阶段,这是编程的必经阶段,也是我们劳动结果的验金石。