大型数据库课程设计_第1页
大型数据库课程设计_第2页
大型数据库课程设计_第3页
大型数据库课程设计_第4页
大型数据库课程设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大型数据库实践报告课题:超市商品管理系统学院(系): 软件学院专 业: 软件工程学 生: 王帅指导教师: 宋薇完成日期 2017年05月精品资料目录TOC\o"1-5"\h\z\o"CurrentDocument"第一章绪论 7\o"CurrentDocument"开发背景 .7\o"CurrentDocument"开发意义 .7\o"CurrentDocument"第二章系统分析 8\o"CurrentDocument"系统的需求分析 8\o"CurrentDocument"系统开发设计思想 8\o"CurrentDocument"系统开发步骤 9系统的主要技术 9数据库相关技术介绍 9系统的运行环境和开发平台 9\o"CurrentDocument"硬件设备及操作系统 10\o"CurrentDocument"系统开发工具 10\o"CurrentDocument"开发工具简介 10\o"CurrentDocument"第三章系统设计 11\o"CurrentDocument"系统流程 11\o"CurrentDocument"系统功能模块的划分 11用户模块 12产品管理 12\o"CurrentDocument"供应商管理 12入库管理 12\o"CurrentDocument"出货管理 13\o"CurrentDocument"库存查看 13\o"CurrentDocument"系统管理 13\o"CurrentDocument"系统监控 13数据库设计 13数据库需求分析 13\o"CurrentDocument"数据库的逻辑设计 14\o"CurrentDocument"用户设计 15\o"CurrentDocument"数据库表的设计 21\o"CurrentDocument"数据表修改 28\o"CurrentDocument"视图函数的使用 31\o"CurrentDocument"数据备份与管理 33\o"CurrentDocument"数据库表结构 38\o"CurrentDocument"表实现相关代码 43\o"CurrentDocument"第四章系统实现 45\o"CurrentDocument"运行截图 45登陆界面 45\o"CurrentDocument"首页展示 46\o"CurrentDocument"添加商品信息 46\o"CurrentDocument"查找商品功能 47\o"CurrentDocument"修改商品功能 47\o"CurrentDocument"删除商品功能 47\o"CurrentDocument"查看销售信息 48修改密码 49\o"CurrentDocument"查看用户信息 49\o"CurrentDocument"用户购买界面 49\o"CurrentDocument"用户退货界面 50\o"CurrentDocument"代码实现 .50myecplise连接数据库 50\o"CurrentDocument"其余代码展示 53\o"CurrentDocument"第五章总结 53参考文献 54致谢: 56精品资料第一章绪论开发背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。计算机的发明应用,被视为人类的第三次重大的科学技术革命,是一次飞跃。过去的革命最高成就就是“用机器制造机器”,是手的延长,而计算机的出现却能做到“用机器控制机器”,是脑的延伸。计算机是提高生产效率的主要工具及途径。随着我国改革开放和经济的快速发展,超市行业也迅速壮大,竞争也越来越激烈。超市商品库在运营过程中会面临大量商品信息的录入,查找,删除,编辑修改等,而人工记录的方法效率低而且错误多,严重影响了商品库的正常管理工作,而这样的情况再不改变,必定要被社会抛弃,在激烈的竞争中走向死亡。因此需要对商品的入库信息,出库信息等进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。本系统就是针对超市库存管理的缺陷,结合了当前超市的发展状况,旨在提高工作人员的工作效率,使其适应现状发展的需要。在这基础上本系统还考虑到将来对系统的要求而添加了一些灵活可更新的功能。作为计算机应用的一部分,使用计算机对超市库存信息进行管理,拥有着手工管理所无法比拟的优点:.可以有效地管理各种商品,减少出入库手续,提高运营速度,提高经济效益;.大大节省了人力,减少财务支出;.系统设计全面,操作方式也容易掌握,且不容易出错,为超市仓库的正常正确营运提供保障。开发意义超市商品管理系统能确保物畅其流,促使企业经营活动繁荣兴旺。不论什么企业,都要储备一些物资。以生产为主的企业,不储备一定的物资,不能维持其连续生产;服务性行业,也要备置某些需用的设备和服务用具;就连一般的事业单位,也要备有某些办公用品等。因此,各行各业都存在不同程度的库存管理业务。第二章系统分析系统的需求分析根据各大中小企业关于超市商品工作流程与实际的需求和特色,本系统在数据库方面需满足以下几个要求:.提供对商品信息维护的功能.提供对数据库的维护功能.提供对不同用户登录的管理功能.提供对数据库表的维护功能.提供对商品查询和相关数据分析功能系统开发设计思想系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护;系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。系统开发步骤超市商品管理系统的建立与应用可以划分成总体规划、系统开发和系统运行三个阶段,其中系统开发阶段还可进一步分为系统分析、系统设计和系统实施等工作环节。上述各个阶段排列成一个严格的线性开发序列,在每个工作阶段均产生完整的技术文档作为下一阶段工作的指导和依据,每一阶段都应对文档进行评审,确信该阶段工作已完成并达到要求后才能进入下一阶段,同时在以后的工作中不能轻易改变前面经过评审的成果。上述开发方式的主要优点是便于开发工作的组织和管理,并且可大大降低在线学习系统开发的复杂性。国内外许多系统开发的实例都证明这是一种行之有效的开发方式。由于时间的原因在本次设计开发中,本文档只介绍数据库方面的设计与维护等功能,对于前台等页面设计将在后续开发中进行实现。系统的主要技术数据库相关技术介绍在数据库方面的设计将严格遵照数据库开发步骤,在此运用了大型数据库设计的相关性知识,包括对存储过程,函数,触发器等的使用,还有对数据库全方面的设计,及安全措施等的设计。其次还涉及表分区,用户管理与权限分配,表空间及数据文件,数据库的导入与导出等,还有视图、索引、序列的建立与使用。系统的运行环境和开发平台硬件设备及操作系统服务器:本地机器华硕电脑,有网络接口,内存12g,硬盘在1T。数据库软件oracle11g。操作系统:windows10企业版客户端:本地机器华硕电脑,有网络接口,内存12g,硬盘在1T。数据库软件oracle11g。网络:服务器和客户端应有网络连通。配置TCP/IP协议。系统开发工具电脑配置:华硕品牌机CPU:i5-7200U内存:DDR312G硬盘:1T操作系统:win10开发环境:oracle11g,myecplise2017CI界面工具:PL/SQL数据库:oracle开发工具简介oracle11g概述Oracle是一个关系型数据库管理系统,Oracle11g有400多项功能,经过了1500多个小时的测试,开发工作量达到了3.6万人/月,相当于1000名员工连续研发3年。Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服务器和存储设备组成的网格上运行,相对过往版本而言,Oracle11g具有了与众不同的特性,数据库重演,计划管理,自动诊断知识库,事务打包服务,自动内存优化等等。第三章系统设计系统流程与本系统相关的角色包括:本系统的用户包括四种:一是最高管理员;二是数据管理人员,该类用户可以进行数据表的创建与修改,数据的修改和删除;三是业务组织人员,该类用户可以进行视图的创建,以及函数、存储过程和触发器等对象的创建和管理;第四种是数据访问人员,该类用户人数比较多,但是只能进行特定的数据表或者视图的查询操作。系统功能模块的划分软件所实现的功能强弱是衡量一个软件的最根本的标准。经过对系统的需求分析和实际应用需求,确定了本子系统的功能模块如图3.2所示:超市商品管理系统1图3.2系统功能模块图用户模块用户包括为用户分配账号,修改密码,用户安全退出功能。此模块只能由系统管理员统一配置,用户不能自行注册,用户密码要进行加密处理。产品管理对需要入库的产品进行增删改查操作。供应商管理对供应商进行增删改查操作入库管理先由最高管理人员对数据管理人员进行授权,然后该类用户对商品信息进行入库操作,即对商品信息表进行修改,或增加数据,或删除数据,可以建立表或删除表。出货管理此操作由数据管理人员进行操作,包括对商品信息进行出库操作,即对商品出库信息表进行修改,或增加数据,或删除数据,可以建立表或删除表。库存查看可以查看产品的库存状况,库存数量。系统管理进行用户角色权限分配使不同的角色拥有不同的权限从而有效的使用系统进行工作。系统监控记录登陆用户的登陆时间、推出时间及在系统内进行的所有操作。数据库设计数据库需求分析数据库的设计在一个系统中的作用十分重要,数据库建立的是否完善直接影响到你系统的实现。数据库的设计既要满足用户的需求又要尽最大可能的降低数据的冗余,尽可能降低数据间的依赖,将他们分离。在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据,数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础.数据库的逻辑设计逻辑结构设计的原则如下:(1)尽可能的减少数据冗余和重复。(2)结构设计与操作设计相结合。(3)数据结构具有相对的稳定性。其实数据库还有要求如下:为了方便数据文件的扩展和迁移,本项目实施要求使用独立的数据文件,请给出具体的实施方案和关键代码。其中,数据文件放在服务器的E盘,文件名称为“自己的姓名.dbf”,文件初始大小为50M,本地化管理,自动扩展。完整代码如下(使用system账户进行创建表空间和数据文件)Createtablespacebigshuaidatafile'E:\oracle\王帅.dbf’Size50MreuseExtentmanagementlocalautoallocate;国君令E&t符-5qlplusSHcrosoftVindmrs 10-CL10240](匚J2015MicrosoftCorporatlollAllrightsreserved.":\Users\bigshuai)■sqlplus■招。L*Plus:Release11,2,0,1.0Productionon星期四...月2512:09:43201?Copyright(c)1982,2010,Oracle.Allrightsreserved,‘输.L用户名:svsteni箍入I1令:C'ricleDatahass11gEnter]>riseEdi;i口二Release.0-64bitProductiijnJfiththePartitioning?OLAP?DataliningandRealApplicationTestingoptions|I.rSQL>Createtabiespacebigshuaidatafile3EzVoracleVilJd).dk-f3Size50MreuseExtentEsanagementlacalautoallocate;卜空间已创建。k>.(E;)>oracle- *1立范八之称 ’、 修改E期 美型 天小口王帅UEF 2017/^/2512:D9DE卜空仁 5L203KB3.2.4用户设计本系统的用户包括四种:一是最高管理员;二是数据管理人员,该类用户可以进行数据表的创建与修改,数据的修改和删除;三是业务组织人员,该类用户可以进行视图的创建,以及函数、存储过程和触发器等对象的创建和管理;第四种是数据访问人员,该类用户人数比较多,但是只能进行特定的数据表或者视图的查询操作。请使用最高管理员执行以下操作:1)实现问题(1)中的数据库设计;2)给出区分其他三种用户的实施方案和关键代码;问题1,已经在上一小题实现,在此不在列出。问题2的实施方案如下:最高管理员在此使用system用户,创建一个用户登录表userLogin,表中有四个属性分别是用户编号Loginid,登陆名LoginName,密码pwdd,权限值authority,权限值可取0,1,2(0代表数据管理员标识,1代表业务组织人员标识,2代表数据访问人员标识)。并编写存储过程对用户登陆数据库时进行身份判断,并返回相应的权限值。其次并规定,登陆时候要判断用户名是否存在,不存在返回-2;判断密码是否正确,如果密码不正确返回-1;用户名和权限值作为主键,并创建序列作为登陆id.1.创建用户登录表:createtableuserLogin(Loginidnumber(3)notnull,--登陆编号Loginnamevarchar2(10)notnull,--登陆姓名pwdvarchar2(16)notnull,--登陆密码authoritynumber(1)check(authorityin(0,1,2)),--权限值primarykey(Loginname,authority));.创建序列:Createsequenceseq_loginidMinvalue1

Maxvalue999Startwith1Incrementby1Nocycle;.插入数据:1.insertintouserLoginvalues(seq_loginid.nextval,’aaa’,1.insertintouserLoginvalues(seq_loginid.nextval,’aaa’,’123456’,0);2.insertintouserLoginvalues(seq_loginid.nextval,’bbb’,’123456’,1);3.insertintouserLoginvalues(seq_loginid.nextval,‘ccc','123456’,2);ISQL>createtableuserLoginf2Loginldnumber(3)notnull;,3Logirmairsvaichar2(10)notnull?I4pwdvarchar2(16)notnullnautharitynunitiEr(1jchecklautharityin(.0,1,priirarykey(Loginnamc^authority));表已创建口9QL>CreategequBnceSGq_lDgimdKinyaLue1Kasvalue995Startwith1Increirentby1NocycLe;序列已创建.92L>insertintouserloginvalues(seq_loginidrneutval?3aaa3?3123456,7c0;已创建1行.9QL>insertintouserlDginvalues(seq_loginidLunextval33bbb?35123456151);已创建1行.92L>insertintouserloginvalues(seq_loginidrneistval,3ccc:3?a1234561?2);4.登陆存储过程的实现:createorreplaceprocedureuserLoginCheck--对登陆用户的审查(unamevarchar2,passwdvarchar2,authorityoutnumber)Asv_countnumber;beginselectcount(*)intov_countfromuserLoginwhereLoginname=uname;ifv_count=0thenauthority:=-2;——2用户名不存在elseselectcount(*)intov_countfromuserLoginwhereLoginname=unameandpwd=passwd;ifv_count=0 thenauthority:=-1;---1密码不正确elseendif;endif;end;5.调用存储过程,对登陆功能进行验证:declarev_authoritynumber;beginuserLoginCheck('aaa','123456',v_authority);dbms_output.put_line(v_authority);end;7.3QL>insertintouserlogJnvalues(seq_lo^irid.nextval,'ccc',12345&',2)已创建1行。createorreplaceprocedureuserL□§inCheck(unaue7archar2,passwdvarchar2?authorityout.nurriber)Asv_countnumber;begin三巳1巳匚tCDimtinto¥_countfiamuserLogin啪巳r巳LoginnaniB=unaTfieBif7_count=0thenauthority:=-2;―-2用户名不存在elss10与已1巳ctcount(*)intov_coimtIraniuserLogin^nereLoginname=unameandpwd=passvd;101Xifv_connt=Dthen1X12131415161713authorit7;=-l,-—L密码不正破12131415161713selectauthorityintoauthorityfranuserLogin.yiiereLoglnname=Lma]rieandpy?d=paggwd;endif;endif;end;过程已创建。8.15endif;16endif;17End,18/近呈已创建.SQL>declare2v_autharitynumber;3begin4userLoginCheck(?aaa?3'123456?।v_authority.),dbins_output.put_line(v_author1ty);end;/PL/SQL过程已成功完成.£QL》5EtSErverautpLitan.,SQL>/口PL/SQL过程已成功完成。SQL>3)创建一个数据管理人员账户,账户名为咱己的姓名”密码为自己的学号。并且设置密码生命周期为30天,允许输入错误的密码不得超过5次,超过5次密码锁1天:Createuser王帅identifiedby1515925661--创建账户Defaulttablespacebigshuai;--并额外设置默认表空间为bigshuaiCreateprofilepassword_life_timePassword_life_time30Password_grace_time3;--另加密码宽限时间三天Createprofilelock_accountlimitFailed_login_attempts5--错误密码不可超过三次Password_lock_time1;SQL>reateuser王帅identifiedby15L5925S61—创建账户2Defaulttablespacebigshuaig用户已创建.SQL:CreateprafiLepasswccrd_life_tiire1LhilI.PaeswordL_lL±e_tlire3DPasEword_srace_tItde3;史亘文件己创建9QL》Cr'Qapz'a£,3.Lq1ack_accaunt1£ml±Failed_lLn_at±ernF,"t-sSFasswiDTidLlock_time1;I置文件已创建EQL>.2.5数据库表的设计以上述账户连入数据库,使用适当的命令显示当前用户身份信息,请给出截图。使用该账户执行一下操作:1)创建表“商品信息”,该表至少包含一个商品编号列,一个商品名称列,商品类型列,一个单价列;将商品编号列和商品名称列设置为联合主键。2)创建表“零售信息”,该表至少包含一个销售编号列,一个商品编号列,一

个商品名称列,一个销售数量列和一个销售金额列。将销售编号和商品编号设置为联合主键(一次销售的所有商品对应一个销售编号),商品编号和商品名称为外键。在其他列上设置非空约束。3)'零售信息”表中的数据默认按照编号和销售时间进行排序,并且按照销售时间一个季度划分一个分区。同时,数据分布要求符合问题(1)中的方案。具体实现方案如下:准备:在使用该用户连接数据库前应对该用户进行授予相应的权限,使用system账户进行授予连接数据库权限session,表的相关权限createanytable等,授权方式也可对用户授予已经存在的某些角色的权限例如connect,resource权限等,为了严格按照实验要求,故使用如下命令:grantcreatesessionto王帅;grantcreatetable,dropanytable,alteranytableto王帅;grantunlimitedtablespaceto王帅;92L>grantcreatetable,dropanytable,alteranytableto干帅;立权成才■:(C立权成才■:(C接L>:iL;回n灯王帅门515925661当前用户的一些信息:a)查看当前的登陆的用户名:Select*fromdual;(showuser;)b)查看当前用户的一些信息:Select*fromuser_users;C)查看当前用户拥有的角色和权限:Select*fromuser_role_privs;Select*fromsessions_privs;SQL>showuser;USES为任帅.92L>select*fromuser-users;L1SEENANEUSEELID^OCOUIiT.STATUSLOCKJATE EXPIRY_DATEDEFAULT-TABLESPACEFEMPORARY.TABLESPACECREATEDIMITIAL_RSR£_COMSUMER_GROLIPIeJCTERNAL.NANE帅S3OPEM21-11^-17BIGSHUAI[7CHP25-5月-17DEFAULT_C0N3UMER_GR0UP.创建商品信息表:Createtableproduct(proidnumber(10)unique,--商品编号列Pronamevarchar2(20)unique,--商品名Protypevarchar2(20),--类型Proprice number(10),--价格Primarykey(proid,proname));

威命令里示符■sqlpUi 一匚3QL>Createt^bLeproduct(proidnumber(1Kunique,PrDnanetarch置r2(2。)unique,ProtypeTarchar2(20)Laiique,PrDpricenuHber、10J,bPrimalykey(proid,pr3naine));哀已创建.贝L).2.创建零售信息表,并且按照销售时间一个季度划分一个分区,使用bigshuai表空间:(在验收发现:表的分区应该全面考虑,分区的时间最好是按照月份和日期,这样就可以把整个数据表进行整体分区,而不是单单的一年)CreatetableproductOut(--销售信息表Outidnumber(10)notnull,--销售编号Outnumnumber(10)notnull,--销售数量Outmoneynumber(10)notnull,--销售金额Outdatedatenotnull,--销售日期Primarykey(outid,proid),--联合逐渐Proidnumber(10)referencesproduct(proid),--外键Pronamevarchar2(20)referencesproduct(proname)9.10.Partitionbyrange(outdate)--按照销售时间每个季节划分一个表分区,共四个分区11.(12.Partitionpar_01valueslessthan(to_date('2017-04-01','yyyy-mm-dd'))tablespacebigshuai13.Partitionpar_02valueslessthan(to_date('2017-07-01','yyyy-mm-dd'))tablespacebigshuai,14.Partitionpar_03valueslessthan(to_date('2017-10-01','yyyy-mm-dd'))tablespacebigshuai,15.Partitionpar_04valueslessthan(to_date('2018-01-01','yyyy-mm-dd'))tablespacebigshuai16.3.像两个表中录入数据,并将表中数据按照编号和销售时间进行排序:录入数据:--商品信息表insertintoproductvalues(1,'三星手机','电子类',1000);insertintoproductvalues(2,'苹果','水果类',3);insertintoproductvalues(3,‘篮球','体育类',70);insertintoproductvalues(4,‘泡面','食品类',70);insertintoproductvalues(5,‘裙子’,'服装类',70);---销售信息表insertintoproductoutvalues(1,5,350,to_date('2017-02-05','yyyy-mm-dd'),3,'篮球');insertintoproductoutvalues(2,3,210,to_date('2017-04-05','yyyy-mm-dd'),5,'裙子’);insertintoproductoutvalues(2,2,140,to_date('2017-04-14','yyyy-mm-dd'),4,'泡面');

insertintoproductoutvalues(3,2,2000,to_date('2017-05-14','yyyy-mm-dd'),1,'三星手机');insertintoproductoutvaluesinsertintoproductoutvalues(3,2,2000,to_date('2017-05-14','yyyy-mm-dd'),1,'三星手机');insertintoproductoutvalues(3,5,350,to_date('2017-05-14','yyyy-mm-dd'),5,'裙子’);insertintoproductoutvalues(3,5,350,to_date('2017-06-14','yyyy-mm-dd'),3,'篮球');insertintoproductoutvalues(1,1,1000,to_date('2017-02-14','yyyy-mm-dd'),1,'三星手机');SQLPlusPROIDPRONAME PROTYPE PROPBICE星半越面了

=苹篮泡裙类品

予胃口巽星半越面了

=苹篮泡裙类品

予胃口巽体食服u308o0777u1SQL>select"fromproduct:out>PROHfiHFPPOTDCIHNIIMOIITMONFVOIITEfiTFourid机手

我孜星于面

篮篮三用3315415777777?.1PROHfiHFPPOTDCIHNIIMOIITMONFVOIITEfiTFourid机手

我孜星于面

篮篮三用3315415777777?.1-------月月月月月2-500532-4100014-500125-41053已选择7行。GQL>3对表中数据录入完成后,数据默认是按照销售编号进行升序,销售时间升序排列。再次如果表中数据没有按照.对于零售信息没有按照编号和销售时间进行排序,下面介绍两种方法可以实现数据的排序;a在建立一张新表,命令如下:Createtableproductout2asselect*fromproductoutorderbyoutidasc,outdateasc;b.使用视图的方式进行表中的数据进行排序视图可以保证原有数据的顺序不被打乱。(此方法虽好,但无创建视图的权限,命令不可执行)

Createorreplaceviewproducteout_viewasSelectoutid,outdate,outmoneyfromproductoutorderbyoutid,outdate;SQLPlus3SQLPlus3医已创建:■|SQL>select«fromproduet:ont2;OUTNUMOUTHONEVOUTDftTEPEOIEPROHAME已选择7行。QL>createorOUTIDi543OUTNUMOUTHONEVOUTDftTEPEOIEPROHAME已选择7行。QL>createorOUTIDi543G1埒星了直球子星监三*篮唔二于机手机vievjpctciduel;utiL_viewas2selectoutid,out[latej-outmoneyfromproduetontorderfcyouti(l,out[late;reateorreplaceuieupaoductout_uieljas■*n1行出现惜误;BA-01031:叹眼不足3.2.6数据表修改本系统在投入使用之后发现,由于“零售信息”表中没有存储商品单价,每次计算商品销售金额都要进行连接查询操作,效率太低,请对数据库做如下修改:1)为“零售信息”表添加商品单价列;执行命令如下:1.Altertableproductoutadd(outpricenumber(10));

SQL>altertableproduetoutaddCoutpricenumber<10>>;表已更改■:SQL>descproduetout;名称 是否为空?类型OUTIDNOTNULLNUMBEE<11>OUTNUNNOTNULLNUMBEEC10>WIMONEYN01NULLOUTDATENOTNULLDATEFROIDNOTNULLNJMBEE<1Q>PRO厢MEUARCHAR2<23>OUTPHICENJMBEP<10>PQL>2)编写一个存储过程,将“商品信息”表中的商品单价写入“零售信息”表的单价列;在本题中由(3)可知赋予王帅用户业务组织人员的权限。使用最高管理员system授权语句如下所示:grantcreateview,createanyprocedure,createanytriggerto黄国峰;SQL>connsystem/oracle;已连接. 上SQL?grantcreateuiew,createanyprocedui'e,createanytriggerto苴国峰;授杈成R。SQL>将商品信息表数据写入零售信息表中方法有多种可以使用循环,游标等,在不考虑执行效率的前提下,为了方便在此我使用merge命令如下:Createorreplaceprocedurewrite_outpriceasbegin--merge可以对一个表同时执行inserts和updates操作,在此仅执行updatemergeintoproductoutopusingproductpon(id=id)---使用merge命令4.when4.whenmatchedthen5.updatesetop.outprice=price;5.6.end;以下为执行该存储过程后,零售信息表中的单价信息已经成功更改:SQL>executewrite_ou.tprice;PL/SQL过程已成功完成“OUTDATEPROIDPfiaiOESQL>select小2SQL>select中□UTIDfroiriproductaut,\frompruductout;oirmuNOUTKONHTOUTPRICE1535005-2月-L73期7D1i100U14-2^-li1华为手矶100012618-2^-172W工OUTIDOUTNUNOUTHONEYOUTDATEPEOIDPEnMAMEOUTPRICE23210)5-4月-175材衫7U2214014-4月-174泡面TD,i-r_n3)由于修改表和数据的权限与创建存储过程的权限不属于同一个用户,给我们的操作带来了麻烦,请将业务组织人员(角色或用户)的权限并入数据管理人员,然后再执行上述两步操作;最后,删除业务组织人员(角色或用户)。实施方案如下:在⑵中已经完成对用户授予业务组织人员的权限,从userLogin表中删除业务组织人员,由于王帅用户没有删除用户权限,在此使用最高管理员system身份进行删除,命令如下:1.deletefromuserloginwhereauthority=1;select*fromuserLogin;LO&INIDLOI}INNAIEPVD AlTTHDRIT?TOC\o"1-5"\h\z1aaa 123456 02bbb 122456 13ccc 123456 2pjL>deletefromuserloginwhereauttiority=l;已删除L行.匕上:select*fromusseLdsli.,LOGINIDL0GIWWA1EP¥D MTTHORITT1aaa 123456 03匚匚。 123456 2SQL>.补充说明:因为我没有实体化业务组织人员,如果已经创建了该用户,或者创建了改角色可以使用如下命令进行删除:Dropuserusernamne;--删除用户Droprolerolename;--删除角色3.2.7视图函数的使用由于,零售信息”表中只存储了每种商品的销售金额,没有存储销售总额,每次显示销售总额还要进行一次计算。而将销售总额加进表中的话,重复信息又太多。请执行如下操作解决该问题:1)创建一个视图,该视图中只保存销售编号和销售总额。2)创建一个函数,实现输入销售编号显示该次销售的总额。实施方案如下:1.(1).Createviewproductout_info_view(outid,outmoney)1.2.Asselectoutid,sum(outmoney)fromproductoutgroupbyoutid;

HiJL>Createv: productouT_Jr.fr^riaa'门二tid,Mitnonpy)2Asselectoutid,£HJD(Dutnnnay)fronproductcutgr口联bycutLc视图已创建.SQL>seiect*froinpraductout_iLifD_vlew,OUTIDOUTMOHEYTOC\o"1-5"\h\z1QL>..创建函数:Createorreplacefunctionget_out_sum(product_outidproductout.outid%type)--此处不可用number(10)替换returnproductout.outid%typeisoutsum productout.outid%type;BeginSelect sum(outmoney) intooutsumfromproductoutwhereoutid=product_outid;--注意where语句,此处不能用groupbyReturn outsum;End;调用函数进行测试:declare--调用函数,计算销售编号为2的销售总金额m_outsumnumber(10);beginm_outsum:=get_out_sum('2');

dbms_output.put_line('编号为2的总金额是:'||m_outsum);end;SQL>editIlIeafiedt.bufGreatsorreplacgfunctionget_Dut_suni(pToctLict_ouLductout.out!d%type)returnroductout.outpriG^itypeisoutGuniproductaut,outprice%typB;BeginSelectSLUuluutHcney)intoont.SLinifrontproductoutwhereoutid=product_outi.d,Returnoutsum;6+End,SQL>/函数已创建。SQL>edit已写入fileafiedt.bufdeclareE^oiitsuninumber(1。工beginni_autsLLm^=get_DLLt_si_Lni(,2’J;dbnis_Dutput.put」inqC编号为3时急金额是「|IncoutsunO;6*end;SQL>/编号为2的用捻额是:驼口PL/SQL过程已成功完成。3.2.8数据备份与管理系统运行了一段时间之后,随着数据量增多,服务器负载变大,查询效率变低。超市决定将历史数据备份,新数据写入新表,请执行以下操作:1)将2017年以前的数据导出到F盘BAK文件夹;2)将2017年以后的零售信息存入新的表“2017年销售情况;请给出数据转存的方案和关键代码。执行了上述操作之后发现,现有的超市前台系统仍然将数据写入旧的“零售信息”表,请使用触发器实现“2017年销售情况”表中数据的同步更新。实施方案如下:(1).在此题中我只进行逻辑备份即备份超市数据表,对于备份即导出其他模式中的表,或者导出全部数据库和导出模式都需要dba或者exp_full_database角色权限。导出18年以前的数据表(因为在录入数据时只录入了17年的数据信息)。a).首先使用SYS用户(必须sys用户)创建目录对象WANGSHUAI,并将该目录的使用权限赋予王帅用户,然后要在F盘建立BAK文件夹命令如下:CREATEDIRECTORYWANGSHUAIAS'F:\BAK';GRANTREAD,WRITEONDIRECTORYWANGSHUAITO王帅;SQL>CREATEDIRECTORYWANGSHUAIAS'F:\EAK';目录已创建口SQL》GRANTREAD,WRITEONDIRECTORYWANGSHUAITO王帅;授权成功ob).使用如下命令导出数据文件:>expdp王帅/1515925661directory=WANGSHUAIDUMPFILE=WS.DMPTABLES=PRODUCTOUT,PRODUCTQUERY=\"WHEREOUTDATE<to_date('20180101','yyyy-mm-dd')\"JEsport;ReleaseLI,2rQ,1,Q-Productionon星期五5月26Z1;07;342017apyrifht(c)JSS2,2009,Oraclband/qtitsaffiliates.Allrightsreserved.旌接至।:0ra-:leDatabase11aEntEcrpriseEditicnRelease11.2.0L110-64bitProducti.onjViththeFartitLoning,OLAF;,DataMiningandRealApplLestLonTestingoptidtib‘广动'王帅"JSY5EKPCRT_TAZLE_01-,r:王哺.9dlzactDry=WANGSHUAIDUIPFILE=VS.DMPTABLES=PRCjfciLCTOLJT,PRuLlirCTQUERY=^HE.<EniHPiYi'E<to_dsteC?201SO10V.nyyyy-irm-ddn)"m正在使用BLOCKS方法迸行估计.一口号好彖土型TkL三?:TCET7TaELE/TABLEDATa携用BLOCKS方法的总估计:192KB平工T对军史型化生对京生呈犷"对象:"问•理对号也弟TA&LZ_EXPORT/TABLE/TABLET PXPORT/I廿LE/CONSTEtAlNT7cdi■1STRA1NTTAPLaXE忠T/TAPLFVINDEX/3]£:ISTICS/IKiJ'>_STATISTIC5WLi_EZPl:RT/TABLE/CDNSTEAINT/REF_OONSTR?liNTI'Aiil.^-E;-^ijRT/TABLE/TRIGGERTAPLE_3KPORT;TABLE/"ATISTICS「隹T3」-lt:丁ICS++理明呈上呈[如.•理对象类型 — —金耨据对象"王师・'.・?配DUCT无法加载原口载并且被跳过,错误如下:CEUi-00904;JUTDATE":标识符无放"干帅"."PEODUCTOUT":"PAR_0『"工的"."PRODIQ:U1":"AR_Ci2"田竹:"froductout—faOm""王帅2"PRODUCTOUTWARJM"7.726KB3迂7.789KB5行0KB0行0KB0行已成功加毂,可官了十:表"王帅:"SYS_EXFOKT_TftBLE_01"ii.lt.SYS_EKPORT_Y?J<,E_01的转储文件集为:,F:\BAE\¥SrDlir作业"王।帅"「」¥£_EKPORT_TABLE_Ci:r已经完成,但是有1个错误f于21:07:37完成〕中用,BAK y□拽S名称 ", 修贰闩朋 雀 大小P3-export.log 2917/5/2621:0^~史小-档 2KB^j]W&.DMP 2017/5/2621:07 DumpFile 2D0KE(2).a.首先创建新表,表名为,2017年销售情况,,以后信息的录入插入新表即可,创建新表并带有2017年之后的销售情况代码如下:1.createtable"2017年销售情况"asselect*fromproductoutwhereoutdate2. >to_date('2017-01-01','yyyy-mm-dd');EL>createtable"2口17年格甘情•,兄”asselect*framproductoutwhereoutdate2>to_date(?2017-01-01'3Jyyyy-im-dd?),已创建.L>select*from"2。L7年销售情况7;OUTIDoumunOUTIONEYOUTDATEPROIDPRONAIEOUTPRICE15350 2月-173篮球7011100014-2月-L?1华为手机1000126基-2月-LT2苹果3OUTIDOUTNUHoumoNEyoutdatePfvQIDPEGNAIEOUTPRICE23SID口5-妒1-175衬衫7022L4D14-4^-174泡面70.使用触发器更新表字段,触发器实现如下,录入数据并检验触发器:在此应该注意到问题是:题目中确指出是2017年后数据,所以在触发器执行前应进行判断。加上6,7,8行后代码。(此处bug在验收后发现).--插入数据变更触发器Createor replace triggertrg_insert_outafterinserton productoutForeach rowBegin--ifoutdate>to_date(‘2016-12-31’,’yyyy-mm-dd’)-then

Insertinto"2017年销售情况"(outid,outnum,outmoney,outdate,proid,proname,outprice)Values(:new.outid,:new.outnum,:new.outmoney,:new.outdate,:id,:name,:new.outprice);--Endif;End;Create□工replacetriggertrg_insert_oijtafterinsertonproductoutForeachrmrBeginInsertinto'20L7年销售情况”(.Dutid?autnuir^DutEonsyjcnitdate?proiiijpronairSjoutprice)Vainest:new.outida:new・0utnu1nl:new.autirDney,:new.outdatE,:ida:nEW.proname,:new.outeri.ce),科End;E/收发器已创建插入数据:|SOL>insertintoproductoutvalues(4,21140,to_dateC,20170Slln,?yyyy-j[m_dd,),5,1 ,^0);已创建1行.OUTIDOUINUIOUTMONBYOUTDXTEPE0IDPRONAIZOUTPRICE3535014-5月-175荷移70353501-T月-173篮球704214011兆月-175利彩70另外并设有两表同步更新触发器,在这就不在进行运行截图了。1.--1.--数据更新触发器2.Createorreplacetriggertrg_update_out2.afterupdateonproductoutForeachrowBeginUpdate"2017年销售情况"setoutid=:new.outid,outmoney=:new.outmoney,outdate=:new.outdate,outprice=:new.outpricewhereproid=:idandoutid=:new.outid;End;数据库表结构数据库表中其余相关表的设计结构如下所示:字段类型长度主键是否空说明IdVarchar236YN管理员编号userNameVarchar210NN用户名PasswordVarchar2100NN密码RealnameVarchar250NY真实姓名StatusNumber6NY状态BrowserVachar220NY浏览器SignatureBlobNY标志附件UserkeyVarchar2200NY秘钥码DepartidVarchar232NY所属部门

表1管理员信息表(T_S_BASE_USER)表2供应商表(T_B_SUPPLIER)字段类型长度主键是否空说明IdVarchar236YN供应商编号SupplierNameVarchar220NY供应商名称SupplierAddrVarchar226NY供应商地址SupplierTelVarchar215NY供应商电话SupplierEmailVarchar220NY供应商EmailSupplierNumVarchar220NY企业注册号ContactPersonVarchar210NY联系人PersonTelVarchar215NY联系人电话表3货品表(T_B_GOODS)字段类型长度主键是否空说明IdVarchar236YN货品编号GoodsNameVarchar216NY货品名称GoodsTypeVarchar22NY货品类型

CostPricenumber10NY成本价RemarkVarchar2100NY备注表4库存表(T_B_STOCK)字段类型长度主键是否空说明IdVarchar236YN库存编号GoodsIdVarchar236NY货品编号TotalCountVarchar210NY数量表5入库单表(T_B_PURCHASE)字段类型长度主键是否空说明IdVarchar236YN入库编号GoodsIdVarchar236NY货品编号GoodsNameVarchar220NY货品名称GoodsNumberVarchar220NY货品批号GoodsCountVarchar210NY数量Pricenumber10NY单价StatusChar1NY状态SupplierIdVarchar236NY供应商编号SupplierNameVarchar220NY供应商名称

ContactPersonVarchar210NY联系人PersonTelVarchar215NY联系人电话RemarkVarchar2100NY备注表6出库单表(T_B_SHIP)字段类型长度主键是否空说明IdVarchar236YN出库编号GoodsIdVarchar236NY货品编号GoodsNameVarchar220NY货品名称GoodsCountVarchar210NY数量StatusChar21NY状态BranchIdVarchar236NY分部编号BranchNameVarchar220NY分部名称ShipDatedate10NY出库日期RemarkVarchar2100NY备注表7角色表(T_S_ROLE)字段类型长度主键是否空说明

IdVarchar236YN角色编号RolecodeVarchar210NY角色码RolenameVarchar2100NY角色名称表8用户角色表(T_S_ROLE_USER)字段类型长度主键是否空说明IdVarchar236YN用户角色编号RoleidVarchar236NY角色编号useridVarchar236NY用户编号表9用户功能表(T_S_ROLE_FUNCTION)字段类型长度主键是否空说明IdVarchar236YN用户功能编号operationVarcahr2100NY操作roleidVarchar236NY角色编号表实现相关代码在此只显示部分代码CREATETABLEt_b_goods(--货品表idvarchar(36)NOTNULL,goodsnamevarchar(16)DEFAULTNULL,--'货品名称',goodstypevarchar(2)DEFAULTNULL--'货品类型',ostpricedoubleDEFAULT'0'--'成本价',remarkvarchar(100)DEFAULTnull--'备注',PRIMARYKEY(id));CREATETABLEt_b_purchase(--入库单表idvarchar(36)NOTNULL,goodsidvarchar(36)DEFAULTNULL--'货品编号',goodsnumbervarchar(20)DEFAULTNULL--'货品批号',goodscountvarchar(10)DEFAULTNULL--'数量’,pricedoubleDEFAULT'0'--'单价',statusvarchar(1)DEFAULTNULL--'状态',suppliernamevarchar(20)DEFAULTNULL--'供应商名称',contactpersonvarchar(10)DEFAULTNULL--'联系人',persontelvarchar(15)DEFAULTNULL--'联系人电话',supplieridvarchar(36)DEFAULTNULL--'供应商编号',goodsnamevarchar(20)DEFAULTNULL--'货品名称',. remarkvarchar(100)DEFAULTNULL--'备注',. PRIMARYKEY(id));CREATETABLEt_b_ship(--出库单表idvarchar(36)NOTNULL,goodsidvarchar(36)DEFAULTNULL--'货品编号',goodsnamevarchar(20)DEFAULTNULL--'货品名称',goodscountvarchar(10)DEFAULTNULL--'数量',statusvarchar(1)DEFAULTNULL--'状态',branchidvarchar(36)DEFAULTNULL--'发送分部',branchaddvarchar(20)DEFAULTNULL--'分部地址',shipdatedatetimeDEFAULTNULL--'出库日期,remarkvarchar(100)DEFAULTNULL--'备注',PRIMARYKEY(id));--其余代码的实现请见附件,在此就不在粘出第四章系统实现4.1运行截4.1.1登陆界面用户登陆界面有两种用户身份,一个是用户数据管理人员,一个是购买商品的用户,第一次使用本商品购物系统的用户,可进行用户信息进行注册。4.1.2首页展示超市管理系统■■FUFX/rT ¥TH?・俄在管。.工m@如盛士mi日是ma0%信/若页/mmcs/陶鼎信同《乔BnHHffiw工用户usn 上退业嘉双迎使用印的帕印超市管理系统!祝你购物愉快!4.1.3添加商品信息添加成功截图finlD商品名棉SHA健救星期1道哪MS柞B7底想ihinkpzdadmh52003电建函旧电脑城36致马人鼠标Tim1660电愣脑图王一J535留开百阳理工学猊班至王牌5W2解上海82IPhone?王牌43003电璞美国洛例63上山150919悻育类[晾体育中心B4华硕电脑上山45002电子类北4.1.4查找商品功能根据商品编号进行查找蜒既昂:干甘02口「与早期口g才30W首庆/福响曷的・育曷值一・育品陋详怕1曲暄鼠强“伯船鹃上鼬耕ID商船物大翻和请作86牧马人鼠标王即166D电磔1晾旗主群4.1.5修改商品功能修改oracle图书的数量为10本_L7FIUWu七」太090班畸蛹作Ifl45310KSffl熊firtiH1rMgitLSt4.1.6删除商品功能删除oracle图书功能,在相应的商品信息后,点击删除即可

王玲。2017曰目"日星熊四94J后*苣页,•釉:向军性息•商品信息郅■启品为由任情皂用F4B理 ◎棒青型1理出我高白£^口|口-』川1,的融商品S称酬人儡蛔演醺影F87rainkiad第min52003电弦南阳电世潴86牧马人拆王帅166d用孩场的郴副5002眼装阜 162iptwia7王帅期口口3电磔黜荆矶 ।53NE嘲王帅150.913体育类二晾箱中心 ।翘现王帅m2由蹊日志4.1.7查看销售信息

4.1.8修改密码4.1.9查看用户信息融等淫比三帅0 3^39^37★首页/锄商品醺・西一■商品畸能。用户用。◎幡醛用工IB皿EID.二1;「;q|ID用户名蜩崎电话Sf»厮遁作0张三G28f2c279a0Sib521699b424&e23109

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论