oracle网上购物系统.docx
《oracle网上购物系统.docx》由会员分享,可在线阅读,更多相关《oracle网上购物系统.docx(18页珍藏版)》请在冰豆网上搜索。
oracle网上购物系统
湖南工业大学
课程设计任务书
2014—2015学年第1学期
计算机与通信学院(系、部)计算机科学与技术专业11级
课程名称:
Oracle大型数据库应用
完成期限:
自2014年12月1日至2014年12月7日共1周
内
容
及
任
务
设计一个网上购物系统,实现网上购物的一般流程,可以实现基本的功能。
从消费者查看商品,下订单到商家确认,发货,物流进展等功能都可以在这个系统中体现。
其中包括消费者子模块,商家子模块,商品信息子模块,商品类别子模块,订单子模块和物流信息子模块等六个系统子模块。
进
度
安
排
起止日期
工作内容
2014_12_1
选题,完成可行性分析文档、需求分析文档
2014_12_2
完成系统的整体结构设计,并进行基本界面设计
2014_12_3-12_5
完成系统的详细设计与实现
2014_12_6
编码系统测试、学生提交文档完成课程设计说明书
2014_12_7
答辩,确定等级,交文档材料(含电子文档)、源程序
主
要
参
考
资
料
[1]邹俊.基于Oracle数据库系统性能调整与优化研究[D].江西财经大学,2006.
[2]吕洪敏.基于Oracle数据仓库应用技术的研究与实现[D].武汉科技大学,2007.
[3]魏亚楠,宋义秋.oracle数据库应用系统的性能优化[J].制造业自动化,2010,08:
204-206+222.
[4]姜召凤.OracleRAC数据库缓存优化方法研究[D].大连海事大学,2009.
[5]卢方亚.Oracle数据库软件产品的战略研究与分析[D].西南交通大学,2007.
[6]郑阿奇,丁有和等.Oracle实用教程[M].北京电子工业出版社,2011.1
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
《大型数据库》课程设计
设计说明书
网上购物系统的设计与实现
起止日期:
2014年12月1日至2014年12月7日
学生姓名
樊赛
班级
计本1102班
学号
11408100220
成绩
指导教师(签字)
计算机与通信学院
2014年12月7日
1、系统需求
1.1需求分析
该系统主要实现了网上购物的一般流程,可以实现基本的功能。
从消费者查看商品,下订单到商家确认,发货,物流进展等功能都可以在这个系统中体现。
其中包括消费者子模块,商家子模块,商品信息子模块,商品类别子模块,订单子模块和物流信息子模块等六个系统子模块。
子模块详细信息:
1.消费者子模块包括用户名,用户密码,姓名,地址,电子邮件和联系电话等信息;
2.商家子模块包括户名,用户密码,姓名和联系电话;
3.商品子模块包括商品编号,商品类别,商品名称,销售价格,销售数量和商品详细信息;
4.商品类别子模块包括分类编号和分类名称;
5.订单子模块包括订单号,商品号,用户名,订购时间,订购数量和销售总价;
6.物流子模块包括物流编号,订单号,发货时间,发货地址,收货时间和收货地址。
其中用户(消费者和商家)可以对各自的部分信息进行修改,如地址,电子邮件和联系电话。
其他模块信息一旦确认后就不可再更改,加强系统的安全性。
在现在竞争激烈的电子商务中,系统的安全性和稳定性是首要的选择,其次是提供完善的服务流程。
当然实际上的网上购物系统要比这个复杂得多,在这里我只是做了一个系统的抽象和简单建模,实际上还要包括更多更复杂的子模块和交互性设置来提高系统的可操作性。
1.2功能模块图
功能模块图就是将系统的功能进行分解,按功能从属关系表示出来的图表。
画出功能模块图主要是为了更加明确的体现内部组织关系,更加清晰的理清内部逻辑关系,做到一目了然规范各自功能部分,使之条理化。
图1网上购物系统功能模块图
1.3数据流程图
数据流图(DataFlowDiagram):
简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
图2数据流程图
1.4数据字典
数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
数据字典中的内容在数据库设计过程中需要不断地修改,充实和完善。
表1customers表的数据结构
表2merchants表的数据结构
表3goods表的数据结构
表4goodstype表的数据结构
表5order表的数据结构
表6logistics表的数据结构
2、数据库设计
完成了对系统的需求分析之后,接下去就是数据库的设计阶段。
这个阶段包括数据库的规划,表空间的设计,安全性设置,表的设计,索引和存储过程的建立。
可以看做是实现数据库的具体设计和对之前分析结果的细化。
2.1数据库的规划
首先是对数据库的规划,包括概念模型设计即E-R图的设计和逻辑模型的设计即将E-R图转换为相应的关系模型。
2.1.1概念模型设计
先画出局部E-R图,即各子模块的实体联系模型,再整理,增加联系,删除冗余后汇总成全局E-R图。
1.局部E-R图
图3customersE-R图
图4merchantE-R图
图5goodsE-R图
图6goodstypeE-R图
图7orderE-R图
图8logisticsE-R图
2全局E-R图
图9全局E-R图
2.1.2逻辑模型设计
这一过程就是将前面设计好地E-R图转化成关系模型。
消费者(用户名,密码,姓名,地址,电邮,电话);
商家(用户名,密码,姓名,电话);
商品(商品编号,类别,价格,数量,详细信息);
商品类别(分类编号,分类名称);
订单(订单号,商品编号,用户名,订购时间,订购数量,销售总价);
物流(物流号,订单号,发货时间,发货地址,收货时间,收货地址);
确认(消费者用户名,商家用户名,买家确认,商家确认);
销售(用户名,商品编号,销售总量,销售总价);
下单(用户名,商品编号,订单号);
跟踪(物流号,订单号,到达时间,到达地点)。
其中加下划线的是主键,加波浪线的是外键。
2.2表空间的设计
ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。
一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。
表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
a)新建一个用户表空间MYTBS,要求大小为500M。
MYTBS表空间下有两个数据文件MYTBS1.DBF和MyTBS2.DBF,文件分别放在E和F两个不同的磁盘分区。
.
createtablespaceMYTBS
datafile‘E:
\pengwenxin\MYTBS1.dbf’size250M,
‘E:
\pengwenxin\MYTBS2.dbf’size250M;
b)在Oracle环境下创建一个新帐号,帐号名为本人姓名的拼音首字母,密码为学号。
createuserpwxidentifiedby1215135242
defaulttablespaceMYTBS;
c)创建用户配置文件,要求密码的生存周期为30天,允许输入错误的密码不得超过5次,超过5次密码锁2天。
createprofilelock_countlimit
password_life_time30
failed_login_attempts5
password_lock_time2;
d)为新帐号分配适当的权限、设置默认表空间为MYTBS。
系统所有对象必须建立在该帐号下,所有对象必须存储在MYTBS表空间中。
createuserpwxidentifiedby1215135242
defaulttablespaceMYTBS;
grantconnect,resourcetopwx;
2.3安全性设置
1.创建用户
createuserpwxidentifiedby1215135242
DefaulttablespaceMYTBS
TemporarytablespaceMYTBS;
2.设置系统权限
grantconnect,resourcetopwx;
3.创建消费者用户和商家用户并授予相应权限
Createusercusidentifiedbycus123;
Grantallontablecustomerstocus;
Createusermeridentifiedbymer123;
Grantallontablemerchantstomer;
2.4表的设计
创建customers表
Createtablecustomers(
Useridvarchar2(10)primarykey,
Passwordvarchar2(10)notnull,
Namevarchar2(10)notnull,
Addressvarchar2(20),
Emailvarchar2(20),
Telephonevarchar(10));
创建merchants表
Createtablemerchants(
Museridvarchar2(10)primarykey,
Mpasswordvarchar2(10)notnull,
Mnamevarchar2(10)notnull,
Mtelephonevarchar2(10));
创建goods表
Createtablegoods(
Goodidvarchar2(10)primarykey,
Typeidvarchar2(10)notnull,
Goodnamevarchar2(10)foreignkey,
Salepricenumbernotnull,
Salecountnumber,
Detailvarchar2(100));
创建goodstype表
Createtablegoodstype(
Typeidvarchar2(10)primarykey,
Typenamevarchar2(10)notnull);
创建order表
Createtableorder(
Orderedvarchar2(10)primarykey,
Goodidvarchar2(10)foreignkey,
Useridvarchar2(10)foreignkey,
Ordertimedatenotnull,
Ordercountnumbernotnull,
Totalpricenumber);
创建logistics表
Createtablelogistics(
Logisticsidvarchar2(10)primarykey,
Orderedvarchar2(10)foreignkey,
Dispatchtimedatenotnull,
Dispatchaddressvarchar2(20)notnull,
Receivetimedate,
Receiveaddressvarchar2(20));
创建confirm表
Createtableconfirm(
Useridvarchar2(10)foreignkey,
Museridvarchar2(10)foreignkey,
Uconfirmnumbercheck(uconfirm=0oruconfirm=1),
Mconfirmnumbercheck(mconfirm=0ormconfirm=1),
Constraintconfirm_pkprimarykey(userid,muserid));
创建sale表
Createtablesale(
Museridvarchar2(10)foreignkey,
Goodidvarchar2(10)foreignkey,
Salecountnumber,
Totalpricenumber,
Constraintsale_pkprimarykey(muserid,goodid));
创建ordering表
Createtableordering(
Useridvarchar2(10)foreignkey,
Goodidvarchar2(10)foreignkey,
Orderedvarchar2(10)foreignkey,
Constraintordering_pkprimarykey(userid,goodid,ordered));
创建track表
Createtabletrack(
Logisticsidvarchar2(10)foreignkey,
Orderedvarchar2(10)foreignkey,
Arrivetimedate,
Arriveaddressvarchar2(10),
Constrainttrack_pkprimarykey(logisticsid,ordered));
2.5创建索引
索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针,数据库使用索引的方式与使用书的目录很相似:
通过搜索索引找到特定的值,然后随着指针到达包含该值的行。
用户可以利用索引快速访问数据库表中的特定的值。
1.如在customers表中的address列建立唯一索引:
Createuniqueindexindex_addressoncustomers(address);
2.使goods表的salecount列按降序排列:
Createindexindex_descongoods(salecountdesc);
2.6pL/SQL完成功能模块
1.添加商品信息的存储过程goods
SQL>createorreplaceproceduregoods
2(Goodidinchar,Typeidinchar,Goodnameinchar,
3Salepriceinchar,Salecountinchar,Detailinchar)
4as
5begin
6insertintogoods
7values(Goodid,Typeid,Goodname,Saleprice,Salecount,Detail);
8endgood;/
2、函数的定义所有商品的数量
SQL>createorreplacefunctioncount
2(goodnameinchar)
3returnnumber
4as
5cntnumber;
6begin
7selectcount(goodname)intocnt
8fromgoods;
9return(cnt);
10endcount;
3、触发器定义
删除goods商品信息表的一条记录,删除记录goodid的字段值在good副本信息表中对应的记录
SQL>createorreplacetriggerGoodDelete
2afterdeleteongoodsforeachrow
3begin
4deletefromgood
5wheregoodid=:
OLD.goodid;
6endGoodDelete;
7/
4、登录模块的建立:
declare
cursorlogin(tuserUsers.UserName%type,tpwdUsers.UserPwd%type)
is
select*fromUsers
whereUserName=pwxandUserPwd=1215135242;
loginrowlogin%rowtype;
begin
openlogin(:
login.tuser,:
login.tpwd);
fetchloginintologinrow;
iflogin%foundthen
go_block('main');
message('登录成功!
');commit;
:
login.tuser:
='';
:
login.tpwd:
='';
:
global.quanxian:
=loginrow.quanxian;
:
global.userno:
=loginrow.userno;
:
global.punish:
=0;
else
message('对不起,用户名或密码错误,请重新输入!
');commit;
:
login.tuser:
='';:
login.tpwd:
='';
endif;
closelogin;
end;
退出:
declare
alert_buttonnumber;
begin
alert_button:
=show_alert('exit_form');
ifalert_button=ALERT_BUTTON1then
EXIT_FORM;
else
bell;
endif
end
3.结束语
终于把基于oracle的网上购物系统做好,做得很简单,算是把基本模型给做出来了吧。
在做的过程中,不但是在复习之前所学过的知识,同时也是学习新知识的过程。
做的时候才发现自己不懂的东西很多,需要从网上和教材上找资料,边做边学。
这里简单总结一下做这个系统的流程。
首先是对系统需求的分析,罗列出系统涉及的子模块,再做出相应的流程图和数据字典。
其次是进行模块的概念设计和逻辑设计,画出E-R图和关系模型。
最后是对系统的具体设计,包括数据库的规划,表空间,安全性,表,索引和存储过程的设计,基本的设计流程就是这样。
通过完成oracle课程的课程报告,发现和之前学习的sqlserver在代码的编写上非常相似,所以写代码花费的时间较少,同时也对sql有了更深入的理解。