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

论坛信息管理系统

摘要:随着科学技术的发展,基本上全部的具有一定数量数据的机构都

開始使用计算机数据库来管理。现现在网络盛行,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 积分

级别

主题

编号

标题

类型

点击量

内容

公布时间

用户编号

附件 

栏目实体E-R 图 

回复主题实体E-R 图 

2.3 视图的集成

描写叙述进行视图集成的详细过程。最后得到论坛信息管理系统的整体概念结构E-R 图,

当中各实体的属性同以上各局部E-R 图,在此省略。

栏目

栏目编号

父栏目编号

名称

版主编号

描写叙述

回复主题

回复主题编号

标题

内容

附件

公布时间

用户编号

主题编号 

第四章 逻辑结构设计

1、E-R 图向关系模型的转换

将整体概念结构的E-R 图转化成关系模型:

用户(用户编号,账号,password,积分。级别)

栏目(栏目编号,父栏目编号(外键),名称。版主,描写叙述)

主题(主题编号。标题。类型。点击率,内容。公布时间,公布时间,用户编号,附件)

回复主题(回复主题编号,标题。主题编号,内容,公布时间,用户编号,附件)

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‘,‘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

结论

通过这次综合实验设计。我了解了数据库设计的一般过程。在接受客户的一个项目的时

候,首先是进行系统分析。即首先分析其以后的销售情况以及技术可行性。假设二者可行,

接下来要做的就是整体设计。

首先必须听取客户的要求,将其提出的功能按某种方式划分

为几种模块,这就是总体设计。再对每个模块进行细化形成最为简单的模块。

然后是考虑

每一细化模块的算法并将其用语言刻画出来,这就是具体设计,这就迈出了最为关键的一步。

剩下的就是编译測试阶段,这是编程的必经阶段,也是我们劳动结果的验金石。

时间: 2024-10-12 03:45:47

数据库系统原理设计--论坛系统的相关文章

基于JSP的学术交流论坛系统的设计与实现

目 录 摘要 I 关键词 I Abstract I Key words I 1前言 1 1.1课题研究的目的及意义 1 1.2国内外研究现状 1 1.3本文的工作 2 2系统分析 3 2.1可行性分析3 2.2需求分析3 2.2.1需求分析概述3 2.2.2任务概述3 2.2.3会员用户4 2.2.4版主4 2.2.5管理员4 2.3开发工具以及相关技术简介5 2.3.1相关工具简介5 2.3.2相关技术概述5 2.4系统的数据流图7 2.5用例图8 3总体设计9 3.1系统架构设计9 3.1.

数据库设计与 ER 模型 - 数据库系统原理

数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最后被新的系统取代而停止使用的整个周期,称为 数据库系统生存期. 数据库系统生存期一般可划分成下面七个阶段: (1)规划:是数据库系统生存周期的第一步.在规划阶段需要做的工作是:通过了解用户的实际需求,明确该系统需要实现的目标和任务,确定数据库系统的总目标. 规划阶段需要做的工作有: a. 系统的调查

Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx

1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 1.4. 聚合运算2 1.5. 索引btree,hash 全文哦2 1.6. 并发控制与lock2 1.7. Acid数据库完整性2 1.8. 关系模型2 1.9. 事务管理2 1.10. :1NF.2NF.3NF和BCNF 2 2. 参考数据库系统导论 (豆瓣).html2 3. 数据挖掘--概念与技术>.3 4. <数据库系统概念(原书第6版)(数据库系统方面的经典教材,被国外

架构设计:系统存储(5)——MySQL数据库性能优化(1)

接上文:<架构设计:系统存储(4)--块存储方案(4)> 1.MySQL概述 从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案.关系型数据库的选型将以创业公司.互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程和基本使用方法等知识并不在我们讨论的范围内.后续几篇文章我们首先讨论影响单个MySQL节点性能的主要因素,然后介绍MySQL读写分离.数据表横纵拆分的原理和技术方案. MySQL数据库目前已被Oracle收购,并发展处多个版本.目前使用最广

架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)

(接上文<架构设计:系统间通信(31)--其他消息中间件及场景应用(下1)>) 5-3.解决方案二:改进半侵入式方案 5-3-1.解决方法一的问题所在 方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离.方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑. 但是我们能为方案一列举的问题却可以远远多于方案一的优点: 需要为不同开发语言分别提供客户端API包.上文中我们介绍的示例使用JAVA语言,于是 事件/日志采集

架构设计:系统间通信(33)——其他消息中间件及场景应用(下3)

=================================== (接上文:<架构设计:系统间通信(32)--其他消息中间件及场景应用(下2)>) 5-7.解决方案三:非侵入式方案 以上两种方案中为了让业务系统能够集成日志采集功能,我们或多或少需要在业务系统端编写一些代码.虽然通过一些代码结构的设计,可以减少甚至完全隔离这些代码和业务代码的耦合度,但是毕竟需要业务开发团队花费精力对这些代码进行维护,业务系统部署时业务对这些代码的配置信息做相应的调整. 这里我们再为读者介绍一种非侵入式的日

架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)

接上文<架构设计:系统间通信(21)--ActiveMQ的安装与使用> 3.ActiveMQ性能优化思路 上篇文章中的两节内容,主要介绍消息中间件ActiveMQ的安装和基本使用.从上篇文章给出的安装配置和示例代码来看,我们既没有修改ActivieMQ服务节点的任何配置,也没有采用任何的集群方案.这种情况只适合各位读者熟悉ActiveMQ的工作原理和基本操作,但是如果要将ActivieMQ应用在生产环境下,上文中介绍的运行方式远远没有挖掘出它的潜在性能. 根据这个系列文章所陈述的中心思想,系统

架构设计:系统间通信(20)——MQ:消息协议(下)

(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性,并为各位读者介绍了Stomp协议和XMPP协议.这两种协议是消息队列中两种不同使用场景下的典型代表.本文主要接续上文的篇幅,继续讨论消息队列中另一种典型协议:AMQP协议. 3-3.AMQP协议 AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议).目前AMQP协议的版本为 Version 1.0,这个协议标准

架构设计:系统间通信(15)——服务治理与Dubbo 上篇

1.上篇中"自定义服务治理框架"的问题 在之前的文章中(<架构设计:系统间通信(13)--RPC实例Apache Thrift 下篇(1)>.<架构设计:系统间通信(14)--RPC实例Apache Thrift 下篇(2)>),我们基于服务治理的基本原理,自己实现了一个基于zookeeper + thrift的服务治理框架.但实际上前文中我们自行设计的服务治理框架除了演示基本原理外,并没有多大的实际使用价值,因为还有很多硬性需求是没有实现的: 访问权限:在整个