数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(13页珍藏版)》请在冰点文库上搜索。
数据库课程设计
闽南师范大学
数据库课程设计
院系:
计算机学院
班级:
14网络1班
学号:
1408180124
姓名:
傅景
设计题目:
留言管理系统
指导老师:
邱国清
学生留言交流管理系统
一、需求分析
大学是一个自由的学习天地,也是一个汇集世界各地学子才华的富饶之地。
而学生之间的交流就更显得重要,无论是家与家之间,还是国与国之间,学生们的交流时刻成为他们之间互相学习的最直接的方式。
这个系统为所有人的交流讨论而打造,无论是学生还是老师,只要是交流,都可以在这上面完成。
二、概念分析
三、逻辑分析
关系模型(双下划线为主键,下划线为外键)
1.用户(帐号,用户名,密码,邮箱)
2.留言(楼层号,留言者帐号,留言者用户名,内容,时间,回复数)
3.回复(回复者帐号,回复者用户名,回复楼层号,内容,时间)
4.回收站(帐号,用户名,回复楼层号,内容,时间,回复数)
5.管理员(管理员帐号,管理员名,管理员密码)
四、物理设计
1.用户表
列名
数据类型
允许空
帐号
varchar(11)
否
用户名
varchar(20)
否
密码
varchar(20)
否
邮箱
varchar(20)
否
2.留言表
列名
数据类型
允许空
楼层号
int
是
留言者帐号
varchar(11)
否
留言者用户名
varchar(20)
否
留言内容
varchar(50)
否
留言时间
smalldatetime
是
回复数
int
是
3.回复表
列名
数据类型
允许空
回复者帐号
varchar(11)
否
回复者用户名
varchar(20)
否
回复楼层
int
是
回复内容
varchar(50)
否
回复时间
smalldatetime
否
4.回收站
列名
数据类型
允许空
帐号
varchar(11)
否
用户名
varchar(20)
否
楼层号
int
是
内容
varchar(50)
否
时间
smalldatetime
否
回复数
int
是
5.管理员表
列名
数据类型
允许空
管理员帐号
varchar(11)
否
管理员名
varchar(20)
否
管理员密码
varchar(20)
否
五、数据库实施阶段
创建数据库,数据表,视图,触发器,存储过程
--创建数据库
createdatabaseMessageData
/*$$$$$$$$$$$$$建表$$$$$$$$$$$$$$$$$$$$$$$$*/
--创建用户表Userbox
createtableUserbox
(
P_idvarchar(11)notnull,
P_namevarchar(20)notnull,
pwvarchar(20)notnull,
emailvarchar(20)notnull,
primarykey(P_id)
)
go
--创建留言表leave
createtableLeave
(
L_floorintprimarykey,
L_idvarchar(11)notnull,
L_namevarchar(20)notnull,
L_comvarchar(50)notnull,
L_timesmalldatetime,
L_numint,
foreignkey(L_id)referencesUserbox(P_id)
)
go
--创建回复表Reply
createtableReply
(
R_idvarchar(11)notnull,
R_namevarchar(20)notnull,
T_floorint,
R_comvarchar(50)notnull,
R_timesmalldatetime,
foreignkey(R_id)referencesUserbox(P_id),
foreignkey(T_floor)referencesLeave(L_floor)
)
go
--创建回收站表Recycle
createtableRecycle
(
Re_idvarchar(11)notnull,
Re_namevarchar(20)notnull,
T_floorint,
Re_comvarchar(50)notnull,
Re_timesmalldatetime,
Re_numint,
foreignkey(Re_id)referencesUserbox(P_id),
)
go
--管理员表
createtableAdministrators
(
adminidvarchar(11)notnullprimarykey,
adminnamevarchar(20)notnull,
adminpwvarchar(20)
);
go
/*****************************************/
------建立视图
--查看某一楼的所有回复内容
createviewC_com
as
selectL_floor,L_name,L_com,L_time,R_name,R_com,R_time
fromLeave,Reply
whereL_floor=T_floor
/*************************************/
----建立触发器
--删除一条留言前触发,将当前要删除的内容添加到回收站
createtriggerrecycleadd
onLeave
insteadofdelete
asbegin
declare@lfloorint
declare@lidvarchar(11)
declare@lnamevarchar(20)
declare@lcomvarchar(50)
declare@ltimevarchar(15)
declare@lnumint
select@lfloor=L_floor,@lid=L_id,@lname=L_name,@lcom=L_com,
@ltime=L_time,@lnum=L_numfromLeave
insertintoRecycle
values(@lid,@lname,@lfloor,@lcom,@ltime,@lnum)
updateLeave
setL_num=-1whereL_id=@lidandL_time=@ltime
print'删除成功,该条留言已加入回收站'
end
--更新用户名完成时触发,其他三个表用户名对应发生改变
createtriggerrechange
onUserbox
afterupdate
asbegin
declare@idvarchar(11)
declare@namevarchar(20)
select@id=Userbox.P_id,@name=Userbox.P_namefromUserbox
updateLeave
setL_name=@namewhereL_id=@id
updateReply
setR_name=@namewhereR_id=@id
updateRecycle
setRe_name=@namewhereRe_id=@id
print'用户名修改成功'
end
--用户留言完成时触发,提示留言成功
createtriggeraddcom
onLeave
afterinsert
asbegin
print'留言成功'
end
--回复留言触发,回复数+1
createtriggeraddnum
onReply
afterinsert
asbegin
declare@tfloorint
select@tfloor=T_floorfromReply
updateLeave
setL_num=L_num+1whereL_floor=@tfloor
print'回复成功'
end
/****************************/
----存储过程
/*查看某一用户的所有留言*/
createprocedureshowmes(@idvarchar(11))
asbegin
select*fromLeave
whereL_id=@id
select*fromLeave
whereL_name=@id
end
六、实验结果
(1)插入两个新用户“张一”和“李二”,显示执行后效果
(2)“张一”插入新留言,显示执行后效果
(3)“李二”对“张一”的留言进行回复,显示执行后效果
(4)recycleadd触发器的调用,作用是留言表删除的留言将自动存入回收站(删除、插入)
(5)rechange触发器的调用,其作用为用户表更新用户名,留言表、回复表和回收站对应用户名同样发生改变
(6)存储过程的调用,显示用户id为'钱三'或用户名为'钱三'的所有留言
七、总结及体会
这次课程设计给我最大的感受就是使我对数据库以及表的创建有了全新的认识。
让我明白了表中主键、约束、外键、索引、视图等在表中所发挥的作用以及所实现的功能。
通过对数据库程序的编写,让我对数据库的查询功能有了更进一步的认识。
开始的时候,由于自己能力有限,所以创建的数据库并不是很完美,经过在网上查找资料以及书籍的查询,修改了几次,才达到了自己的要求。
谈谈本次的心得体会,首先独自完成了一个数据库,我感觉颇有成就感,但是,我知道我所做的留言管理系统还有很多的不足。
将此系统运用到实际中去,可能会遇到很多的问题,对于此留言系统,还有许多地方要进一步完善。
由于本身能力有限,再加上缺乏更多的实际操作,所以要完成一个完美的数据库,我觉得还要学很多。
但我认为已经达到了本次课程设计的要求。
在以后的时间里,会学更多关于数据库的知识,来丰富自我。