论坛信息管理系统.docx
《论坛信息管理系统.docx》由会员分享,可在线阅读,更多相关《论坛信息管理系统.docx(9页珍藏版)》请在冰豆网上搜索。
论坛信息管理系统
<>
课程设计
题目:
论坛信息管理系统
姓名:
学号:
专业班级:
指导教师:
日期:
2015-11-20
1项目背景及需求分析
1.1项目背景
随着网络的不断发展,网上论坛信息越来越多,发贴的人也越来越多。
自然而然,回贴的人也越来越多。
因此,我们需要一个论坛管理系统,来统计作者信息、贴子信息和回复信息,来使得论坛信息能够更好的运作。
所以我设计这个论坛管理系统来有效地管理论坛信息,使得它能够更加规范和科学。
1.2需求分析
1.2.1数据需求
论坛管理信息系统需要完成功能主要有:
(1)作者信息模块:
用来管理作者信息,包括作者昵称、贴子编号、性别、年龄、职业、爱好等;
(2)贴子信息模块:
用来管理贴子信息,包括贴子编号、发贴日期、时间、等级等;
(3)回复日期模块:
用来管理回复信息,包括作者昵称、回复时间、贴子编号等。
1.2.2事物需求
(1)在作者信息模块部分,要求:
a.可以查看作者的个人信息;
b.可以对作者信息进行添加及删除的操作。
(2)在贴子信息部分,要求:
a.可以浏览贴子信息;
b.可以对贴子信息进行维护,包括添加及删除的操作。
(3)在回复日期部分,要求:
a.可以查看回复日期;
b.可以对回复日期进行维护操作。
2概念结构设计
2.1抽象出系统实体
根据分析,论坛信息管理系统的基本实体为:
作者,贴子,回复信息。
而每个实体应具有如下所列的基本属性,并标记主键(加下划线的属性),画出E-R图。
作者(编号,昵称,年龄,性别,职业,爱好),其中编号为主键;
贴子(编号,发贴日期,时间,等级),其中编号为主键;
回复信息(作者昵称,编号,时间),其中编号为主键;
2.2局部E-R图
在人事信息管理系统中,涉及六个实体,分别是:
管理员、员工、部门、员工工作信息、工资、考勤。
这六个实体间存在关系。
根据需求分析得到一个作者能发很多个贴子,所以作者和贴子之间是一对多的关系;贴子下面能有很多个回复信息,所以回复信息和贴子之间是多对多的关系;得到各个实体局部E-R图如下:
2.3全局E-R图
3逻辑结构设计
在概念结构设计阶段得到E-R图之后,根据转换规则将E-R图转换成关系模型,得到人事信息管理系统的关系模型如下:
(1)作者信息实体集可以转换为关系:
作者(作者昵称、性别、年龄、职业、爱好)其中作者昵称为主键;
符合第三范式。
(2)贴子信息实体集可以转换为关系:
贴子(贴子编号、发贴日期、时间、等级)其中贴子编号为主键;
符合第三范式。
(3)回复信息实体集可以转换为关系:
回复信息(回复作者昵称、回复时间)其中贴子编号为主键;
符合第三范式。
4创建数据库及相关操作
4.1创建数据库
4.1.1作者信息表
属性名称
数据类型
可否为空
主码或索引
约束条件
rno
varchar(10)
否
主码
rname
varchar(10)
否
主码
rage
int(4)
是
rssex
char
(2)
是
rprofessional
varchar(10)
是
rhobby
varchar(10)
是
createtablereader
(rnovarchar(10),
rnamevarchar(10),
rageint(4),
rssexchar
(2),
rprofessionalvarchar(10),
rhobbyvarchar(10)
primarykey(rno,rname)
);
4.1.2帖子信息表
属性名称
数据类型
可否为空
主码或索引
约束条件
pno
varchar(10)
否
主码
pdate
varchar(10)
是
ptime
varchar(10)
是
plevel
varchar(10)
是
createtablepost
(pnovarchar(10),
pdatevarchar(10),
ptimevarchar(10),
plevelvarchar(10)
primarykey(pno)
);
4.1.3回复信息表
属性名称
数据类型
可否为空
主码或索引
约束条件
rno
varchar
否
主码
rname
varchar
是
rtime
varchar
是
Createtablereply
(rnovarchar(10),
rnamevarchar(10),
rtimevarchar(10)
primarykey(rno)
);
4.2建立视图
(1)视图建立v_1查询作者信息表内容
createviewv_1as
selectrname,rage,rssex,rprofessional,rhobbyfromreader;
(2)视图建立v_2查询作者信息表中男性的爱好
Createviewv_2as
Selectrhobbyfromreaderwhererssex=’男’;
4.3建立存储过程
(1)存储过程num_post建立
执行存储过程num_post,返回你输入的作者编号发贴的总数;
DELIMITER//
CREATEPROCEDUREnum_post(INtmp_pnochar(10),OUTcount_numINT)
->READSSQLDATA
->BEGIN
->SELECTCOUNT(*)INTOcount_numfrompost
->WHEREpno=tmp_pno;
->END//
(2)存储过程proc_o建立
执行存储过程proc_o,返回所有等级为A的贴子的所有信息;
DELIMITER//
CREATEPROCEDUREproc_o
READSSQLDATA
SELECTpno,pdate,ptimefrompost
WHEREplevel=AORDERBY
END//
4.4建立触发器
触发器的建立
createtriggert_1onreaderafterinsertasselect*fromreaderselect*frominsertedgoinsertintoreader(rname,rno,rssex,rage,rprofessional,rhobby)values(‘王五’,’07’,’男’,’20’,’学生’,’听歌’);
4.5查询问题及查询结果
1.查询作者信息表中所有性别为男的作者的年龄:
selectragefromreaderwhererssex=‘男’;
2.查询所有等级为‘A‘的帖子:
selectpnofrompostwhereplevel=‘A‘;
3.查询‘03‘号帖子的信息:
Select*fromreaderwhererno.reader=’03’;
4.查询‘03‘号帖子的等级:
Selectplevelfrompostwherepno=‘03‘;
5.修改‘01‘号帖子的姓名为’韩五‘:
Updatereadersetrname=‘韩五‘whererno=’01‘;