资源描述
课程设计Ⅳ
设计说明书
网站新闻发布与管理系统
的数据库设计和数据操作
学生姓名
鲁泽民
学 号
1018064030
班 级
网络101班
成 绩
指导教师
杨刚
数学与计算机科学学院
2013 年 6 月 17日
课程设计任务书
2012—2013学年 第二学期
课程设计名称:
课程设计Ⅳ
课程设计题目:
网站新闻发布与管理系统的数据库设计和数据操作
完 成 期 限:
自 2013年6月17日 至 2013年6月28日 共2周
设计内容:
1.任务说明
备忘录管理系统可以为用户提供日常信息管理,主要为使用者提供对个人信息更方便的记录和查询等功能。具体要求实现以下一些基本功能:
1)日常记录管理:记录日常生活或者工作事件,以免遗忘,并提供记录的查询、浏览、修改和删除等管理功能。
2)通讯薄管理:记录朋友、亲属、同事等联系人的通讯信息,以免遗忘,并提供记录的查询、浏览、修改和删除等管理功能。
3)密码备忘管理:记录日常使用的密码信息,比如银行帐号密码、邮箱密码、一些网站登陆密码等,以免遗忘,并提供记录的查询、浏览、修改和删除等管理功能。
4)系统维护:操作员管理、权限管理等。
2. 要求
1) 在调查或了解的基础上,进行系统分析。
2) 根据逻辑设计方案,进行系统设计。
3) 课程设计的重点在系统的分析和数据库设计方面。
3. 参考资料
[1] 苗雪兰,刘瑞新,宋会群.数据库系统原理及应用教程(第2版)[M].北京:机械工业出版社,2006.
[2] 向阳.信息系统分析与设计(第1版)[M].北京:清华大学出版社,2009.
[3] 卫红春.信息系统分析与设计[M].西安:西安电子科技大学出版社,2003.
指导教师:杨刚 教研室负责人:陈波
课程设计评阅
评语:
指导教师签名:
年 月 日
摘 要
设计了一个备忘录管理系统,主要完成了系统分析、数据库设计和实现、数据操作等内容。该系统具体功能有:记录日常生活或者工作事件,记录朋友、亲属、同事等联系人的通讯信息,也可以记录日常使用的密码信息等,数据库实现采用SQL Server 2008数据库管理系统。
关键词:备忘;管理系统;系统分析;SQL Server
目 录
1 课题描述 1
2 需求分析 2
2.1 功能分析 2
2.2数据流程分析 2
2.3 数据字典 3
3 系统总体设计 5
3.1 模块划分 5
3.2 系统功能模块图 5
4 数据库的设计 6
4.1 概念结构设计 6
4.2 逻辑结构设计 6
4.3 数据库物理结构设计 7
5 数据库的数据操作 9
5.1 数据库的创建 9
5.2 数据操作 9
6 总结 18
参考文献 19
1 课题描述
1)内容
本次课程设计是要设计一个网站新闻发布与管理系统,完成对网站新闻发布与管理系统数据库的设计并进行数据操作。网站新闻发布与管理系统可以发布和管理新闻信息,主要实现用户浏览与评论新闻和管理员发布与管理新闻以及管理评论。具体实现一些功能,为用户提供用户管理,为管理员提供新闻管理、权限管理、管理员管理和评论管理。
2)目的
本次课程设计重在对学习过的理论知识进行实际应用。在了解相关信息的基础上,进行系统分析。根据逻辑设计方案,进行系统设计,重在系统的分析与数据库设计方面。加强掌握数据库设计流程,为系统实现奠定重要基础。
17
2 需求分析
2.1 功能分析
设计管理系统对于用户和管理员,应实现以下功能:
1)用户管理:提供用户注册,注册后查看和修改个人信息和对新闻发表评论的功能。
2)管理员管理:高权限管理员(超级管理员)可新增、查看、修改和删除低权限管理员信息。
3)权限管理:给管理员赋权,设定某一权限可操作的模块和是否可管理新闻评论。
3)新闻管理:有相关权限的管理员可发布和管理新闻信息。
3)评论管理:有相关权限的管理员可审核新闻评论。
2.2数据流程分析
1)数据流程分析的工具
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理元素,它只是描绘信息在系统中流动和被处理的情况。
数据流图的四种基本符号和具体描述如图2.1所示。
加工 外部实体
数据存储 数据流
图2.1 数据流图的基本符号
数据流图在系统分析中的主要作用体现在以下几点:
(1)数据流图是系统逻辑功能的图形表示,即使不是专业的计算机人员也容易理解它,所以它是分析员和用户之间极好的通信工具。
(2) 数据流图能清楚地描绘数据在系统中的流动和被处理的逻辑过程。
(3)数据流图是系统逻辑功能的图形表示,容易理解。
2)系统数据流图
通过对系统的分析,第0层数据流图如图2.1所示,第1层数据流图如2.1所示,通讯录管理模块第2层数据流图如图2.3所示。
网站新闻发布与管理系统
浏览新闻、发表评论 发布与管理新闻
管理员
用户
展示新闻
图2.1 第0层数据流图
用户管理
评论管理
新闻管理
管理员管理
权限管理
管理员
用户
用户数据 用户表
用户信息 权限_模块表
权限_评论表
管理员_权限表
管理员表
新闻表
评论表
图2.2 第1层数据流图
2.3 数据字典
数据字典(DD,Data Dictionary)是以特定格式记录下来的、对系统的数据流程图中各个基本要素(数据流、加工、存储和外部项)的内容和特征所作的完整的定义和说明。数据字典是对数据流程图的重要补充和说明。数据字典中有五种类型的条目:外部实体,数据流,数据存储,数据项和加工。
数据字典中包括数据定义,但除了它之外,还包含其它一些信息。一般信息,包括名字,别名和描述。针对以上数据流图,给出部分项的说明。
(1)用户信息
数据流名:
用户信息
别名:
描述:
用户信息
组成:
用户信息 = 用户编号+用户名称+用户密码+用户Email
备注:
(2)管理员信息
数据流名:
管理员信息
别名:
3 系统总体设计
3.1 模块划分
设计一个备忘录管理系统,具体分为四大模块,如下:
(1)用户管理模块:实现新增用户,查看和修改用户信息功能;
(2)管理员管理模块:实现新增管理员,查看、修改和删除管理员信息功能;
(3)权限管理模块:实现对管理员、对管理的模块和管理的评论赋权功能;
(4)新闻管理模块:实现有相关权限的管理员对新闻的增加、查看、修改和删除功能;
(5)评论管理模块:实现有相关权限的管理员对评论的审核和删除功能;
3.2 系统功能模块图
备忘录管理系统是利用计算机实现对用户记录信息的管理,严格按照系统总体设计模块划分方案,分为用户管理、管理员管理、权限管理、新闻管理和评论管理五大模块。系统功能框架图如下所示:
新增新闻信息
管理新闻信息
审核评论
删除评论
注册新管理员
评论赋权
模块赋权
管理员赋权
修改用户信息
查看用户信息
注册新用户
网站新闻发表与管理系统
评论管理
新闻管理
权限管理
管理员管理
用户管理
管理管理员信息
图3.1 系统功能模块图
4 数据库的设计
4.1 概念结构设计
概念结构设计是将系统需求分析得到的用户需求抽象为反映用户观点的信息结构的过程。概念结构设计的结果是数据库的概念模型,即E-R模型。由于它是从现实世界的角度进行抽象和描述,所以它与计算机硬件、数据库逻辑结构和支持数据库的DBMS无关。在数据库设计中应重视概念结构设计,它是整个数据库设计的关键,是为计算机存储数据做准备工作。
根据需求分析结果,主要有用户实体、日常记录本实体、通讯录实体和密码备忘录实体4个实体。各实体属性图如图4.1-4.7所示,系统总体E-R图如图4.8所示。
用户
用户Email
用户编号
用户密码
用户名称
图4.1 用户信息的实体属性图
管理员
管理员编号
管理员密码
管理员名称
图4.2 管理员信息的实体属性图
权限
权限编号号
权限名称码
图4.3 权限信息的实体属性图
点击率
图片路径
新闻描述
是否审核
是否置顶
新闻
发布时间
新闻编号
新闻内容
新闻标题
图4.4 新闻信息的实体属性图
模块
模块编号
模块父编号
模块名称
图4.5 模块信息的实体属性图
栏目
栏目父编号
栏目编号
栏目描述
栏目名称
图4.6 栏目信息的实体属性图
评论
评论时间
评论编号
评论内容
评论标题
图4.7 评论信息的实体属性图
管理员
属于
用户
浏览
发表
栏目
属于
新闻
属于
评论
模块
管理
属于
管理
角色
管理员_权限编号
权限_模块编号
权限_评论编号
新闻_评论编号
新闻_模块编号
用户_评论编号
新闻_栏目编号
图4.8 系统总体E-R图
4.2 逻辑结构设计
E-R图表示的概念模型是用户数据要求的形式化。E-R图是独立于任何一种数据模型的概念信息结构,也不为任何一个DBMS所支持。逻辑结构设计的任务就是把概念结构设计好的基本E-R图转换为与选用的某个具体的DBMS所支持的数据模型相符合的逻辑结构,设计的结果是一组关系模式。
将图4.8中系统E-R图转换成关系模型如下:
用户(用户编号,用户名称,用户密码,用户Email);
管理员(管理员编号,管理员名称,管理员密码);
权限(权限编号,权限名称);
新闻(新闻编号,新闻标题,新闻内容,发布时间,新闻描述,图片路径,点击率,是否审核,是否置顶);
模块(模块编号,模块名称,模块父编号);
栏目(栏目编号,栏目名称,栏目父编号,栏目描述);
评论(评论编号,评论标题,评论内容,评论时间);
管理员_权限(管理员-权限编号,管理员编号,权限编号);
权限_模块(权限-模块编号,权限编号,模块编号);
权限_评论(权限-评论编号,权限编号);
新闻_模块(新闻-模块编号,新闻编号,模块编号);
新闻_栏目(新闻-栏目编号,新闻编号,栏目编号);
新闻_评论(新闻-评论编号,新闻编号,评论编号);
用户_评论(用户-评论编号,用户编号,评论编号);
4.3 数据库物理结构设计
数据库的物理结构主要指数据库在物理设备上的存储结构与存取方法,它依赖于给定的计算机系统。设计的任务是选择合适的存储结构和存取路径,也就是设计数据库的内模式。
内模式和逻辑模式不一样,不直接面向用户,一般的用户不一定、也不需要了解内模式的设计细节。内模式的设计可以不考虑用户理解的方便,其主要的设计目标有两个:其一提高数据库的性能,特别是满足主要应用的性能要求;其二能够有效地利用存储空间。
根据数据库物理结构设计理论,将该系统逻辑结构转换为物理结构,如下所示:
(1)用户信息表
用户信息表(Users)主要用来存放用户账号信息,如表4.1所示。
表4.1用户信息表
列名
数据类型
允许NULL值
说明
UserID
int
否
用户编号
UserName
nvarchar(20)
否
用户名称
UserPassword
nvarchar(20)
否
用户密码
UserEmail
nvarchar(20)
否
用户Email
(2)管理员信息表
管理员信息表(Admin)主要用来存放用户账号信息,如表4.2所示。
表4.2管理员信息表
列名
数据类型
允许NULL值
说明
AdminID
int
否
管理员编号
AdminName
invarchar(20)
否
管理员名称
AdminPassword
nvarchar(20)
否
管理员密码
(3)权限信息表
权限信息表(Roles)主要用来存放权限信息,如表4.3所示。
表4.3权限信息表
列名
数据类型
允许NULL值
说明
RoleID
int
否
权限编号
RoleName
Nvarchar(20)
否
权限名称
(4)新闻信息表
新闻信息表(News)主要用来存放新闻信息,如图4.4所示。
表4.4新闻信息表
列名
数据类型
允许NULL值
说明
NewsID
int
否
新闻编号
NewsTitle
nvarchar(50)
否
新闻标题
NewsContent
ntext
否
新闻内容
NewsDate
datetime
是
发布时间
NewsDesc
nvarchar(50)
否
新闻描述
NewImagePath
nvarchar(50)
否
图片路径
NewsRate
int
否
点击率
NewsIsCheck
bit
否
是否审核
NewsIsTop
bit
否
是否置顶
(5)模块信息表
模块信息表(Modules)主要用来存放新闻模块信息,如图4.5所示。
表4.5模块信息表
列名
数据类型
允许NULL值
说明
ModuleID
int
否
模块编号
ModuleName
nvarchar(50)
否
模块名称
ModulePID
intt
否
模块父编号
(6)栏目信息表
栏目信息表(Categroy)主要用来存放新闻栏目信息,如图4.6所示。
表4.6栏目信息表
列名
数据类型
允许NULL值
说明
CategroyID
int
否
栏目编号
CategroyName
nvarchar(50)
否
栏目名称
CategroyPID
int
否
栏目父编号
CategroyDesc
nvarchar(50)
否
栏目描述
(7)评论信息表
评论信息表(Comment)主要用来存放新闻评论信息,如图4.7所示。
表4.7评论信息表
列名
数据类型
允许NULL值
说明
CommentID
int
否
评论编号
CommentTitle
nvarchar(50)
否
评论标题
CommentContent
ntext
否
评论内容
CommentDate
datetime
是
评论时间
(8)管理员_权限表
管理员_权限表(Admin_Roles)主要用来存放管理员和权限的关系,如图4.8所示。
表4.8管理员_权限表
列名
数据类型
允许NULL值
说明
ARID
int
否
管理员_权限编号
AdminID
int
否
管理员编号
RoleID
int
否
权限编号
(9)权限_模块表
权限_模块表(Roles_Modules)主要用来存权限和模块的关系,如图4.9所示。
表4.9权限_模块表
列名
数据类型
允许NULL值
说明
RMID
int
否
权限_模块编号
RoleID
int
否
权限编号
ModuleID
int
否
模块编号
(10)权限_评论表
权限_评论表(Roles_Comment)主要用来存放权限和评论的关系,如图4.10所示。
表4.10权限_评论表
列名
数据类型
允许NULL值
说明
RCID
int
否
权限_评论编号
RoleID
int
否
权限编号
(11)新闻_模块表
新闻_模块表(News_Modules)主要用来存放新闻和模块的关系,如图4.11所示。
表4.11新闻_模块表
列名
数据类型
允许NULL值
说明
NMID
int
否
新闻_模块编号
NewsID
int
否
新闻编号
ModuleID
int
否
模块编号
(12)新闻_栏目表
新闻_栏目表(News_Categroy)主要用来存放新闻和栏目的关系,如图4.12所示。
表4.12新闻_栏目表
列名
数据类型
允许NULL值
说明
NCategroyID
int
否
新闻_栏目编号
NewsID
int
否
新闻编号
CategroyID
int
否
栏目编号
(13)新闻_评论表
新闻_评论表(News_Comment)主要用来存放新闻和评论的关系,如图4.13所示。
表4.13新闻_评论表
列名
数据类型
允许NULL值
说明
NCommentID
int
否
新闻_评论编号
NewsID
int
否
新闻编号
CommentID
int
否
评论编号
(14)用户_评论表
用户_评论表(Users_Comment)主要用来存放用户和评论的关系,如图4.14所示。
表4.14用户_评论表
列名
数据类型
允许NULL值
说明
UCID
int
否
用户_评论编号
UserID
int
否
用户编号
CommentID
int
否
评论编号
5 数据库的数据操作
5.1 数据库的创建
根据数据库设计结果,利用SQL Server Management 工具,用SQL语句创建数据库。创建数据库语句如下所示:
create database NewsManagementSystem
use NewsManagementSystem
--管理员表
create table Admin(
AdminID int primary key identity(1,1),
AdminName nvarchar(20) not null,
AdminPassword nvarchar(20) not null
)
--权限表
create table Roles(
RoleID int primary key identity(1,1),
RoleName nvarchar(20) not null
)
--管理员权限表
create table Admin_Roles(
ARID int identity(1,1),
AdminID int,
RoleID int,
constraint ARPK primary key(ARID,AdminID,RoleID),
constraint ARFK foreign key(AdminID) references Admin(AdminID),
constraint ARFK2 foreign key(RoleID) references Roles(RoleID)
)
--模块表
create table Modules(
ModuleID int primary key identity(1,1),
ModuleName nvarchar(50) not null,
ModulePID int not null
)
--权限模块表
create table Roles_Modules(
RMID int identity(1,1),
RoleID int,
ModuleID int,
constraint RMPK primary key(RMID,RoleID,ModuleID),
constraint RMFK foreign key(RoleID) references Roles(RoleID),
constraint RMFK2 foreign key(ModuleID) references Modules(ModuleID)
)
--评论表
create table Comment(
CommentID int primary key identity(1,1),
CommentTitle nvarchar(50) not null,
CommentContent ntext not null,
CommentDate datetime default getdate()
)
--权限评论表
create table Roles_Comment(
RCID int identity(1,1),
RoleID int,
constraint RCPK primary key(RCID,RoleID),
constraint RCFK foreign key(RoleID) references Roles(RoleID),
)
--用户表
create table Users(
UserID int primary key identity(1,1),
UserName nvarchar(20) not null,
UserPassword nvarchar(20) not null,
UserEmail nvarchar(20) not null
)
--用户评论表
create table Users_Comment(
UCID int identity(1,1),
UserID int,
CommentID int,
constraint UCPK primary key(UCID,UserID,CommentID),
constraint UCFK foreign key(UserID) references Users(UserID),
constraint UCFK2 foreign key(CommentID) references Comment(CommentID)
)
--新闻表
create table News(
NewsID int primary key identity(1,1),
NewsTitle nvarchar(50) not null,
NewsContent ntext not null,
NewsDate datetime default getdate(),
NewsDesc nvarchar(50) not null,
NewsImagePath nvarchar(50),
NewsRate int,
NewsIsCheck bit,
NewsIsTop bit
)
--新闻评论表
create table News_Comment(
NCommentID int identity(1,1),
NewsID int,
CommentID int,
constraint NCommentPK primary key(NCommentID,NewsID,CommentID),
constraint NCommentFK foreign key(NewsID) references News(NewsID),
constraint NCommentFK2 foreign key(CommentID) references Comment(CommentID)
)
--新闻模块表
create table News_Modules(
NMID int identity(1,1),
NewsID int,
ModuleID int,
constraint NMPK primary key(NMID,NewsID,ModuleID),
constraint NMFK foreign key(NewsID) references News(NewsID),
constraint NMFK2 foreign key(ModuleID) references Modules(ModuleID)
)
--栏目表
create table Category(
CategoryID int primary key identity(1,1),
CategoryName nvarchar(50) not null,
CategoryPID int not null,
CategoryDesc nvarchar(50) not null
)
--新闻栏目表
create table News_Category(
NCategroyID int identity(1,1),
NewsID int,
CategoryID int,
constraint NCategroyPK primary key(NCategroyID,NewsID,CategoryID),
constraint NCategroyFK foreign key(NewsID) references News(NewsID),
constraint NCategroyFK2 foreign key(CategoryID) references Category(CategoryID)
)
5.2 数据操作
1)数据插入操作
向用户表中添加一些新用户,SQL语句如下所示:
use db_Memo
insert tb_User values('Lee','111',2)
insert tb_User values('Chen','222',3)
insert tb_User values('Qin','333',4)
数据插入结果如图5.1所示
图5.1 用户信息表添加信息结果
2)简单数据查询
向新建表中插入新数据后,查询日常记录信息,SQL语句如下所示:
use db_Memo
select Theme,Content,Date,Week,Time,City,Weather
From tb_DaiRecord
数据查询结果如图5.2所示
图5.2 查询所有日常记录信息结果
3)嵌套查询
根据数据库中已添加的信息,现在查询用户Lee的所有好友通讯录信息,SQL语句如下所示:
use db_Memo
select Name,Tel,Email,Groups,Memo
From tb_AddBook,tb_User
Where tb_AddBook.UserNum=tb_User.UserNum and UserNum='Lee'
数据查询结果如图5.3所示
图5.3 用户lee的所有好友通讯录信息
4)为数据库表中列创建CHECK约束
在创建的日常记录信息表,为列Week创建CHECK约束,使其值只能为星期一、星期二、星期三、星期四、星期五、星期六、星期日,SQL语句如下所示:
use db_Memo
alter table tb_DaiRecord with check
add constraint CHECK_WEEK check(week='星期一' or week='星期二'
or week='星期三' or week='星期四' or week='星期五' or week='星期六' or week='星期日')
创建CHECK约束结果如图5.4所示:
图5.4 为日常记录表中列Week创建CHECK_WEEK约束结果
5)为数据库表中列创建DEFAULT约束
新建用户后,为用户创建初始密码,即对用户表中列PassWord创建DEFAULT约束,创建SQL语句如下所示:
use db_Memo
ALTER table tb_User
ADD CONSTRAINT PassWord_Default DEFAULT '123' For PASSWORD
创建DEAFULT约束结果如图5.5所示
图5.5 为用户表列PassWord创建DEFAULT约束结果
6)模糊查询
根据密码备忘表中已插入信息,利用模糊查询带有关键字QQ的所有信息,SQL语句如下所示:
use db_Memo
select TypeName,Type,LoginName,Password,Memo
From tb_PassRecord
Where TypeName like '%QQ%'
查询结果如图5.6所示
图5.6 带有关键字QQ的所有密码备忘信息
7)创建触发器
在tb_User表中创建触发器,当删除tb_User表中用户信息时,检查该用户名是否为Admin(即超级用户),如果是则不能删除该条用户信息。
create trigger Admin
on tb_User
after delete
as
if(select UserName from tb_User where UserName='Admin')=1
begin
print '超级管理员不能删除!'
rollback transaction
end
6 总结
通过本次数据库课程设计,完成对备忘录管理系统的分析和数据库的实现。在过程中,将重点放在系统的分析与数据库设计方面。根据了解备忘录信息,初步分析系统需求,在需求分析基础上,对备忘录管理系统进行总体设计。通过画E-R图,完成对数据库的概念结构设计;将E-R图转化为关系模式,完成数据库的逻辑结构设计;将关系模式转化为数据库中的表,完成数据库的物理结构设计。并利用SQL语句完成数据库中对象的创建、插入数据记录、查询记录、创建数据存储等。
备忘录管理系统的设计过程,是对软件工程与数据库课程相关内容的温习。整个完成过程严格按照软件开发流程与数据库设计步骤进行,为后期的系统实现打下了坚实的基础。该系统只满足于用户实现对日常记录、通讯录和密码备忘功能的实现,可扩展功能很多,有待进一步完善。相信通过本次数据库课程设计后,在未来的软件开发过程中,我们将更加规范自己的设计过程,使所开发系统更加稳定可靠,具有更多功能,服务于更多用户。
参考文献
[1] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2002
[2] 林小玲.数据库原理及应用[M]. 北京:机械工业出版社,2011
[3] 苗雪兰,刘瑞新,宋会群.数据库系统原理及应用教程(第2版)[M].北京:机械工业出版社,2006.
[4] 向阳.信息系统分析与设计(第1版)[M].北京:清华大学出版社,2009.
[5] 卫红春.信息系统分析与设计[M].西安:西安电子科技大学出版社,2003
[6] 郑炜,朱怡安.软件工程[M].西安:西北工业大学出版社,2010
19
展开阅读全文