数据库课程设计网络购物系统.docx
《数据库课程设计网络购物系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计网络购物系统.docx(14页珍藏版)》请在冰豆网上搜索。
数据库课程设计网络购物系统
《数据库课程设计》
学号:
姓名:
题目:
网络购物系统
计算机科学与技术
第一章需求分析
1引言
随着计算机及网络技术的飞速发展,基于互联网的各种应用日益受到了人们的重视,在众多的网络服务中,Web给人耳目一新的感觉,而在这其中,网上购物已经日渐普及,很多人都通过网络来了解各种信息,学生是网上购物一个不可忽略的群体,校园二手交易网站为在校学生提供发布交易信息的平台,网站内容丰富,使用方便,学生可以将自己不用的东西的信息放在网上,也可在网上找到自己需要的东西,物美价廉,达到双赢。
校园二手市场具有较大的发展空间与潜力。
本文基于现代二手交易的流程,结合现代的信息技术,通过对系统的结构设计、开发,构建了一个基于B/S结构的,以JSP为开发平台和mysql为数据库的二手交易系统。
校园二手交易网站围绕信息的发布、搜索、分类、处理这个中心,以用户为立足点,以方便用户获取信息和交易为目的来组织业务流程。
大学生有很多二手物品,自己已经不用了,扔掉又很可惜。
比如一些用过的书籍运动产品。
例如羽毛球拍、足球、篮球等。
这些物品还能用但是因为某些原因主人想要出手。
另一方面,这类产品因为价格因素在学校中还是很有市场的。
此系统就是要建立这样一个平台方便大家将自己的二手物品放在网上出售,也方便同学在网上选购自己喜欢的二手物品。
2需求分析阶段的目标与任务
2.1处理对象
超级管理员:
编号,账号,密码,手机号
管理员:
编号,账号,密码,手机号
用户:
编号,账号,密码,邮箱,QQ号,手机号
商品:
编号,类别,名称,商品描述,价格,剩余数量,物主的编号
评论:
编号,评论者,内容,评论日期,物品的编号
订单:
编号,所有者,购买者,商品的编号,交易的状态
2.2处理功能及要求
1.能够存储大量的商品信息,并方便有效的管理,这主要包括:
1)商品信息的录入、删除及修改
2)商品信息的检索查询
3)商品订单信息的状态更新
2.能够对一定数量的用户、管理员进行相应的信息的修改,这主要包括:
1)用户信息的登记、删除及修改
2)管理员信息的增加、删除及修改
3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
4.对查询结果、统计的结果能够列表显示
2.3.安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面,通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性。
包括,用户自定义完整性等,可通过建立主、外键,使用check约束,或者通过使用触发器和存储过程。
从而实现完整性,一致性。
第二章概念设计阶段
1E-R模型
2数据库表
用户表user
字段
名称
数据类型
约束
Yid
用户编号
int
主键
Yname
账号
nvarchar(10)
Ypassword
密码
nvarchar(10)
联系表ralation
字段
名称
数据类型
约束
Lid
用户编号id(引用)
int
外键
Lmail
邮箱地址
nvarchar(20)
Lphone
电话号码
nvarchar(20)
Lqq
用户的QQ
int
管理员表manager
字段
名称
数据类型
约束
Gid
管理员id
int
主键
Gname
管理员账号
nvarchar(10)
Gpassword
管理员密码
nvarchar(10)
Gphone
管理员手机
nvarchar(20)
超级管理员表superadm
字段
名称
数据类型
约束
Aid
超级管理员id
int
主键
Aname
超级管理员账号
nvarchar(10)
Apassword
超级管理员密码
nvarchar(10)
Aphone
超级管理员手机
nvarchar(20)
商品表commodity
字段
名称
数据类型
约束
Sid
商品的id
int
主键
goodsname
分类的id(引用分类表的)
int
外键
Sname
物品的名称
nvarchar(20)
dscription
商品的描述
text
price
价格
float
Scount
剩余数量
int
isownId
物主id(用户id)
int
外键
商品分类表commodityClass
字段
名称
数据类型
约束
Fid
分类id(被引用)
int
主键
Fname
类别
nvarchar
图片表pic
字段
名称
数据类型
约束
Tid
图片的id
int
主键
Image
二进制图片流
longblob
picId
所属物品的id(被引用)
int
外键
评论表discuss
字段
名称
数据类型
约束
Pid
评论的id(自动)
int
主键
autorname
评注者
nvarchar(10)
content
内容
text
Pdate
评论日期
date
goodsid
物品的id
int
外键
订单表ordertable
字段
名称
数据类型
约束
Did
订单的id
int
主键
ownid
所有者的id
int
外键
saleid
购买者的id
int
外键
goodsid
商品的id
int
外键
Dstate
交易的状态
int
第三章逻辑设计阶段
1逻辑设计的任务和目标
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。
2数据组织
2.1将E-R图转换为关系模型
实体型转换为关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
第四章物理结构设计
1物理设计阶段的目标与任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
2系统功能模块
2.1用户基本信息的查询和更新模块
2.2商品基本信息的查询和更新模块
第五章数据库实施阶段
1建立数据库、数据表、存储过程、触发器
1.1建立数据库
1.2建立数据表
1.2.1用户表的建立
1.2.2联系表的建立
1.2.3管理员表的建立
1.2.4超级管理员表的建立
1.2.5商品表的建立
1.2.6商品分类表的建立
1.2.7图片表的建立
1.2.8评论表的建立
1.2.9订单表的建立
1.3建立触发器
1.3.1当删除user表中的数据时,触发删除商品表和联系表里的数据
1.3.2当删除commodity表中的数据时,删除评论表和图片表里对应的数据
1.4创建各个功能的存储过程
1.4.1user表
delimiter||
createprocedureIusr(Inamenvarchar(10),Ipasswordnvarchar(10),
Imailnvarchar(20),Iphonenvarchar(20),Iqqint)
begin
insertintouser(Yname,Ypassword)values(Iname,Ipassword);
set@Iid=(selectYidfromuserwhereYid=@@IDENTITY);--这里动态获取最新的插入值
select@Iid;
insertintoralation(Lid,Lmail,Lphone,Lqq)values(@Iid,Imail,Iphone,Iqq);
end||
delimiter;
callIusr('ceishi',123456,'kmkk@.com','12382252',1315646);
1.4.2commodity表
delimiter||
createprocedureIcommodity(cidint,Inamenvarchar(20),Idescriptiontext,
Ipricefloat,Iscountint,Iisownidint,Ipiclongblob)
begin
insertintocommodity(goodsname,Sname,dscription,price,Scount,isownId)
values(cid,Iname,Idescription,Iprice,Iscount,Iisownid);
set@pid=(selectSidfromcommoditywhereSid=@@IDENTITY);
insertintopic(Imgae,picId)values(Ipic,@pid);
end||
delimiter;
callIcommodity(1,'鼠标','verygood',19.5,10,5,'000000011111');
第六章系统的调试和测试
对该商品购物管系统进行测试,验证每个功能是否符合要求,具体的测试如下:
(1)检测各个存储过程的功能:
(见附页)
(2)检测各个触发器的功能:
(见附页)
第七章总结
这次历时两周的课程设计,对于我们来说收获不少。
第一天查找资料、了解有关的知识。
了解网络购物系统系统的需求,做好需求分析后,开始系统的设计,画出E-R图,写出各个实体的属性。
对于数据库的创建,虽然出现很多的问题,但经过和同学们探讨之后我们都能够很好的解决,这便让我们体会到上课专心听讲的重要性。
对于所需表的创建是一个比较简单的内容,问题主要是存储过程和触发器的创建,但经过查资料之后解决了问题。
附页1:
createtableuser(
Yidintprimarykeyauto_increment,
Ynamenvarchar(10)notnull,
Ypasswordnvarchar(10)
);
createtableralation(
Lidintnotnull,
Lmainnvarchar(20)notnull,
Lphonenvarchar(20)notnull,
Lqqint,
constraintfk_r_Lidforeignkey(Lid)referencesuser(Yid)
);
createtablemanager(
Gidintprimarykeyauto_increment,
Gnamenvarchar(10)notnull,
Gpasswordnvarchar(10)notnull,
Gphonenvarchar(20)notnull
);
createtablesuperadm(
Aidintprimarykeyauto_increment,
Anamenvarchar(10),
Apasswordnvarchar(10),
Aphonenvarchar(20)
);
createtablecommodityClass(
Fidintprimarykeyauto_increment,
Fnamenvarchar(10)
);
createtablecommodity(
Sidintprimarykeyauto_increment,
goodsnameintnotnull,
Snamenvarchar(20),
dscriptiontext,
priceintnotnull,
Scountintnotnull,
isownIdintnotnull,
constraintfk_c_goodforeignkey(goodsname)referencescommodityClass(Fid),
constraintfk_c_isoforeignkey(isownId)referencesuser(Yid)
);
createtablepic(
Tidintprimarykeyauto_increment,
Imgaelongblob,
picIdintnotnull,
constraintfk_p_picforeignkey(picId)referencescommodity(Sid)
);
createtablediscuss(
Pidintprimarykeyauto_increment,
autornamenvarchar(10),
contenttextnotnull,
Pdatedatetimenotnull,
goodsidintnotnull,
constraintfk_d_disforeignkey(goodsid)referencescommodity(Sid)
);
createtableordertable(
Didintprimarykeyauto_increment,
ownidintnotnull,
saleidintnotnull,
goodsidintnotnull,
Dstateint,
constraintfk_o_ownforeignkey(ownid)referencesuser(Yid),
constraintfk_o_salforeignkey(saleid)referencesuser(Yid),
constraintfk_o_goodsforeignkey(goodsid)referencescommodity(Sid)
);
创建触发器
--用户触发器
delimiter||
droptriggerifexistsdeleteuser||
createtriggerdeleteuserbeforedeleteonuser
foreachrow
begin
deletefromcommoditywherecommodity.isownId=old.Yid;
deletefromralationwhereralation.Lid=old.Yid;
/*deletefromralationwhereLid=4;*/
end||
delimiter;
--物品的触发器
droptriggerdeletesc;
delimiter||
droptriggerifexistsdeletesc||
createtriggerdeletescbeforedeleteoncommodity
foreachrow
begin
deletefrompicwherepic.picId=old.Sid;
deletefromdiscusswherediscuss.goodsid=old.Sid;
end||
delimiter;
--商品数量的触发器
droptriggerC_order;
delimiter||
droptriggerifexistsC_order||
createtriggerC_orderafterinsertonordertable
foreachrow
begin
updatemoditysetScount=Scount-1WHEREcommodity.Sid=new.goodsid;
end||
delimiter;
insertintoordertable(ownid,saleid,goodsid,Dstate,Odate)values(2,3,9,1,now())
--插入管理员
Insertintomanager
(Gname,Gpassword,Gphone)values('ad','admin','123456789');
Insertintosuperadm
(Aname,Apassword,Aphone)values('admin','admin','123456789');
--插入用户
callIusr('ceishi',123456,'kmkk@.com','12382252',1315646);
--插入物品
callIcommodity(1,'鼠标','verygood',19.5,10,5,'000000011111');
--评论表
insertintodiscuss(autorname,content,Pdate,goodsid)values('mk','thisistoobad',now(),'7');
insertintodiscuss(autorname,content,Pdate,goodsid)values('mk','thisistoogood',now(),'8');
--插入订单表
insertintoordertable(ownid,saleid,goodsid,Dstate,Odate)values(2,3,9,1,now());
查询语句
-user用户的显示
selectYid,Yname,Ypassword,Lmail,Lphone,Lqqfromuser,ralationwhereuser.Yid=ralation.Lid;
--商品表的显示
SelectSid,goodsname,Sname,dscription,price,Scount,
isownId,Fname,Tid,Imgaefromcommodity,commodityClass,picwhereSid=picIdandgoodsname=Fid;