数据库系统原理设计--论坛系统
摘要:随着科学技术的发展,基本上全部的具有一定数量数据的机构都
開始使用计算机数据库来管理。现现在网络盛行,BBS 论坛已成为人们生活
中的一种信息交流渠道,它通过在计算机上执行服务软件。同意用户使用终端
程序通过电话调制解调器拨号或者 Internet 来进行连接,运行下载数据或程
序、上传数据、阅读新闻、与其它用户交换消息等功能。
本文主要介绍利用 SQL Sever 2008 作为设计工具,理解并运用课程中关
于数据库设计的相关理论,依照设计流程要求完毕完整的论坛信息管理的数
据库设计,包含需求分析、概念结构设计、逻辑结构设计、物理结构设计和
数据库实施。
关键词:SQL 语言、数据库设计、论坛信息管理系统
第一部分:引言
数据库技术是计算机科学技术发展最快。应用最为广泛的技术之中的一个。其
在计算机设计。人工智能,电子商务,企业管理。科学计算等诸多领域均得
到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。
随着网络的发展,论坛已经成为人们日常进行交流的一个不可或缺的空
间。人们能够再论坛中谈论喜欢的话题,提出或解答疑问,公布通知和公告
等。因为它独特的形式和强大的功能,受到广大网友的欢迎,并成为全世界
计算机用户信息交流的园地。
在软件开发的过程中。随着面向对象程序设计和数据库系统的成熟,数
据成为软件开发的核心,程序的设计要服从数据,因此论坛信息管理系统的
数据库设计尤其重要。本文主要介绍论坛信息管理系统的数据库方面的设计。
从需求分析到数据库的执行与维护都进行具体的叙述。本文的分为 6 章:
第 1 章主要是课程的简单介绍及设计的内容与目的。
第 2 章是需求分析,此阶段是数据库设计的起点。
第 3 章是概念设计,它是将需求分析的用户需求抽象为信息结构。
第 4 章是逻辑结构设计。它将概念模型转换为某个 DBMS 所支持的数据
模型。
第 5 章物理设计阶段,它包含系统详细功能模板的分析实现。
第 6 章是数据库的实施与执行,它包含数据的加载及数据库的执行。
第二部分:数据库内容设计
第一章 绪论
1、课题简单介绍
随着现代科技的快速发展,设备和管理的现代化。在实际工作中怎样提高工作效率成为
一个非常重要的问题。而建立信息管理系统是一个非常好的解决的方法。
经过一学期的学习。我对数据库方面的知识有了非常大的了解,本着理论联系实际的宗旨。
2
通过这次综合设计实验课的机会,在查找资料、重复思考的前提下设计了一个论坛信息管理
系统。
在以下的各章中,我将具体介绍这个数据库的设计和实施过程。
2、设计目的
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合
起来,巩固所学知识。
数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构
的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关
知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息
管理系统。必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、
维护以及系统评价的一般过程。为毕业设计打下基础。
3、设计内容
运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完毕从系统的分析到设
计直至系统的终于实现,开发论坛信息管理系统,完毕论坛信息管理系统的所有功能。
首先做好需求分析。并完毕系统详细分析和数据字典。
其次做概念结构设计,利用实体联系的方法将需求分析的用户需求抽象为信息结构。得
到E-R图。
然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型。
第二章 需求分析
1、需求分析的任务
需求分析的任务是调查应用领域。相应用领域中的信息要求和操作要求进行具体分析,
形成需求分析说明书。重点是调查。收集与分析用户在数据管理中的信息要求,处理要求,
数据的安全性与完整性要求。
为了完毕需求分析的任务,要具体调查待开发的数据库应用部门的情况。了解原系统工
作概况,分析用户的各种需求,在此基础上确定新系统的功能。新系统必须考虑今后的扩充
和改变,不能只按当前应用需求来设计数据库。
2、需求分析的内容
开发一个BBS 论坛系统。详细应实现例如以下功能:
3
(1)用户注冊和登录,后台数据库须要存放用户的注冊信息和在线状态信息。
(2)用户发帖,后台数据库须要存放帖子相关信息,如帖子内容、标题等。
(3)论坛版块管理,后台数据库须要存放各个版块信息,如版主、版块名称和帖子数等。
(4)确定系统的边界。确定整个系统中哪些由计算机完毕。哪些将来由系统完毕。哪些
由人工完毕。由计算机完毕的功能就是新系统完毕的功能。
3、数据字典
表中列名 数据类型 可否为空 说明
UID char Not null(主键) 用户编号
UName char Not null 账号
UPassword char not null password
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 主题内容
4
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 数据抽象与局部视图设计
5
局部E-R 图:
用户实体E-R 图
主题实体E-R 图
用户
编号
账号 password 积分
级别
主题
编号
标题
类型
点击量
内容
公布时间
用户编号
附件
6
栏目实体E-R 图
回复主题实体E-R 图
2.3 视图的集成
描写叙述进行视图集成的详细过程。最后得到论坛信息管理系统的整体概念结构E-R 图,
当中各实体的属性同以上各局部E-R 图,在此省略。
栏目
栏目编号
父栏目编号
名称
版主编号
描写叙述
回复主题
回复主题编号
标题
内容
附件
公布时间
用户编号
主题编号
7
第四章 逻辑结构设计
1、E-R 图向关系模型的转换
将整体概念结构的E-R 图转化成关系模型:
用户(用户编号,账号,password,积分。级别)
栏目(栏目编号,父栏目编号(外键),名称。版主,描写叙述)
主题(主题编号。标题。类型。点击率,内容。公布时间,公布时间,用户编号,附件)
回复主题(回复主题编号,标题。主题编号,内容,公布时间,用户编号,附件)
2、数据库的结构
给出数据库基本表整体结构图:
用户
主题
回复主题
管理
发表
发表
相应
栏目
包括
包括
8
依据整体结构图设计各表的结构:
BBSUsers用户信息表:
BBSColumn栏目信息:
9
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','0基础用户'
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
结论
通过这次综合实验设计。我了解了数据库设计的一般过程。在接受客户的一个项目的时
候,首先是进行系统分析。即首先分析其以后的销售情况以及技术可行性。假设二者可行,
接下来要做的就是整体设计。
首先必须听取客户的要求,将其提出的功能按某种方式划分
为几种模块,这就是总体设计。再对每个模块进行细化形成最为简单的模块。
然后是考虑
每一细化模块的算法并将其用语言刻画出来,这就是具体设计,这就迈出了最为关键的一步。
剩下的就是编译測试阶段,这是编程的必经阶段,也是我们劳动结果的验金石。
第 1 章主要是课程的简单介绍及设计的内容与目的。
第 2 章是需求分析,此阶段是数据库设计的起点。
第 3 章是概念设计,它是将需求分析的用户需求抽象为信息结构。
第 4 章是逻辑结构设计。它将概念模型转换为某个 DBMS 所支持的数据
模型。
第 5 章物理设计阶段,它包含系统详细功能模板的分析实现。
第 6 章是数据库的实施与执行,它包含数据的加载及数据库的执行。
第二部分:数据库内容设计
第一章 绪论
1、课题简单介绍
随着现代科技的快速发展,设备和管理的现代化。在实际工作中怎样提高工作效率成为
一个非常重要的问题。而建立信息管理系统是一个非常好的解决的方法。
经过一学期的学习。我对数据库方面的知识有了非常大的了解,本着理论联系实际的宗旨。
2
通过这次综合设计实验课的机会,在查找资料、重复思考的前提下设计了一个论坛信息管理
系统。
2、设计目的
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合
起来,巩固所学知识。
数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构
的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关
知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息
管理系统。必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、
维护以及系统评价的一般过程。为毕业设计打下基础。
3、设计内容
运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完毕从系统的分析到设
计直至系统的终于实现,开发论坛信息管理系统,完毕论坛信息管理系统的所有功能。
首先做好需求分析。并完毕系统详细分析和数据字典。
其次做概念结构设计,利用实体联系的方法将需求分析的用户需求抽象为信息结构。得
到E-R图。
然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型。
第二章 需求分析
1、需求分析的任务
需求分析的任务是调查应用领域。相应用领域中的信息要求和操作要求进行具体分析,
形成需求分析说明书。重点是调查。收集与分析用户在数据管理中的信息要求,处理要求,
数据的安全性与完整性要求。
为了完毕需求分析的任务,要具体调查待开发的数据库应用部门的情况。了解原系统工
作概况,分析用户的各种需求,在此基础上确定新系统的功能。新系统必须考虑今后的扩充
和改变,不能只按当前应用需求来设计数据库。
2、需求分析的内容
开发一个BBS 论坛系统。详细应实现例如以下功能:
3
(1)用户注冊和登录,后台数据库须要存放用户的注冊信息和在线状态信息。
(2)用户发帖,后台数据库须要存放帖子相关信息,如帖子内容、标题等。
(3)论坛版块管理,后台数据库须要存放各个版块信息,如版主、版块名称和帖子数等。
(4)确定系统的边界。确定整个系统中哪些由计算机完毕。哪些将来由系统完毕。哪些
由人工完毕。由计算机完毕的功能就是新系统完毕的功能。
3、数据字典
表中列名 数据类型 可否为空 说明
UID char Not null(主键) 用户编号
UName char Not null 账号
UPassword char not null password
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 主题内容
4
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 数据抽象与局部视图设计
5
局部E-R 图:
用户实体E-R 图
主题实体E-R 图
用户
编号
账号 password 积分
级别
主题
编号
标题
类型
点击量
内容
公布时间
用户编号
附件
6
栏目实体E-R 图
回复主题实体E-R 图
2.3 视图的集成
描写叙述进行视图集成的详细过程。最后得到论坛信息管理系统的整体概念结构E-R 图,
当中各实体的属性同以上各局部E-R 图,在此省略。
栏目
栏目编号
父栏目编号
名称
版主编号
描写叙述
回复主题
回复主题编号
标题
内容
附件
公布时间
用户编号
主题编号
7
第四章 逻辑结构设计
1、E-R 图向关系模型的转换
将整体概念结构的E-R 图转化成关系模型:
用户(用户编号,账号,password,积分。级别)
栏目(栏目编号,父栏目编号(外键),名称。版主,描写叙述)
主题(主题编号。标题。类型。点击率,内容。公布时间,公布时间,用户编号,附件)
回复主题(回复主题编号,标题。主题编号,内容,公布时间,用户编号,附件)
2、数据库的结构
给出数据库基本表整体结构图:
用户
主题
回复主题
管理
发表
发表
相应
栏目
包括
包括
8
依据整体结构图设计各表的结构:
BBSUsers用户信息表:
BBSColumn栏目信息:
9
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','0基础用户'
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
结论
通过这次综合实验设计。我了解了数据库设计的一般过程。在接受客户的一个项目的时
候,首先是进行系统分析。即首先分析其以后的销售情况以及技术可行性。假设二者可行,
接下来要做的就是整体设计。
为几种模块,这就是总体设计。再对每个模块进行细化形成最为简单的模块。
每一细化模块的算法并将其用语言刻画出来,这就是具体设计,这就迈出了最为关键的一步。
剩下的就是编译測试阶段,这是编程的必经阶段,也是我们劳动结果的验金石。