大型数据库课程设计完整版.docx
- 文档编号:27464723
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:42
- 大小:1.39MB
大型数据库课程设计完整版.docx
《大型数据库课程设计完整版.docx》由会员分享,可在线阅读,更多相关《大型数据库课程设计完整版.docx(42页珍藏版)》请在冰豆网上搜索。
大型数据库课程设计完整版
大型数据库实践报告
课题:
超市商品管理系统
学院(系):
软件学院
专业:
软件工程
学生:
王帅
指导教师:
宋薇
完成日期2017年05月
第一章绪论
1.1开发背景
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
计算机的发明应用,被视为人类的第三次重大的科学技术革命,是一次飞跃。
过去的革命最高成就就是“用机器制造机器”,是手的延长,而计算机的出现却能做到“用机器控制机器”,是脑的延伸。
计算机是提高生产效率的主要工具及途径。
随着我国改革开放和经济的快速发展,超市行业也迅速壮大,竞争也越来越激烈。
超市商品库在运营过程中会面临大量商品信息的录入,查找,删除,编辑修改等,而人工记录的方法效率低而且错误多,严重影响了商品库的正常管理工作,而这样的情况再不改变,必定要被社会抛弃,在激烈的竞争中走向死亡。
因此需要对商品的入库信息,出库信息等进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。
本系统就是针对超市库存管理的缺陷,结合了当前超市的发展状况,旨在提高工作人员的工作效率,使其适应现状发展的需要。
在这基础上本系统还考虑到将来对系统的要求而添加了一些灵活可更新的功能。
作为计算机应用的一部分,使用计算机对超市库存信息进行管理,拥有着手工管理所无法比拟的优点:
1.可以有效地管理各种商品,减少出入库手续,提高运营速度,提高经济效益;
2.大大节省了人力,减少财务支出;
3.系统设计全面,操作方式也容易掌握,且不容易出错,为超市仓库的正常正确营运提供保障。
1.2开发意义
超市商品管理系统能确保物畅其流,促使企业经营活动繁荣兴旺。
不论什么企业,都要储备一些物资。
以生产为主的企业,不储备一定的物资,不能维持其连续生产;服务性行业,也要备置某些需用的设备和服务用具;就连一般的事业单位,也要备有某些办公用品等。
因此,各行各业都存在不同程度的库存管理业务。
第二章系统分析
2.1系统的需求分析
根据各大中小企业关于超市商品工作流程与实际的需求和特色,本系统在数据库方面需满足以下几个要求:
1.提供对商品信息维护的功能
2.提供对数据库的维护功能
3.提供对不同用户登录的管理功能
4.提供对数据库表的维护功能
5.提供对商品查询和相关数据分析功能
2.2系统开发设计思想
系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护;
系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。
2.3系统开发步骤
超市商品管理系统的建立与应用可以划分成总体规划、系统开发和系统运行三个阶段,其中系统开发阶段还可进一步分为系统分析、系统设计和系统实施等工作环节。
上述各个阶段排列成一个严格的线性开发序列,在每个工作阶段均产生完整的技术文档作为下一阶段工作的指导和依据,每一阶段都应对文档进行评审,确信该阶段工作已完成并达到要求后才能进入下一阶段,同时在以后的工作中不能轻易改变前面经过评审的成果。
上述开发方式的主要优点是便于开发工作的组织和管理,并且可大大降低在线学习系统开发的复杂性。
国内外许多系统开发的实例都证明这是一种行之有效的开发方式。
由于时间的原因在本次设计开发中,本文档只介绍数据库方面的设计与维护等功能,对于前台等页面设计将在后续开发中进行实现。
2.4系统的主要技术
2.4.1数据库相关技术介绍
在数据库方面的设计将严格遵照数据库开发步骤,在此运用了大型数据库设计的相关性知识,包括对存储过程,函数,触发器等的使用,还有对数据库全方面的设计,及安全措施等的设计。
其次还涉及表分区,用户管理与权限分配,表空间及数据文件,数据库的导入与导出等,还有视图、索引、序列的建立与使用。
2.5系统的运行环境和开发平台
2.5.1硬件设备及操作系统
服务器:
本地机器华硕电脑,有网络接口,内存12g,硬盘在1T。
数据库软件oracle11g。
操作系统:
windows10企业版
客户端:
本地机器华硕电脑,有网络接口,内存12g,硬盘在1T。
数据库软件oracle11g。
网络:
服务器和客户端应有网络连通。
配置TCP/IP协议。
2.5.2系统开发工具
电脑配置:
华硕品牌机CPU:
i5-7200U内存:
DDR312G硬盘:
1T
操作系统:
win10
开发环境:
oracle11g,myecplise2017CI
界面工具:
PL/SQL
数据库:
oracle
2.5.3开发工具简介
(1)oracle11g概述
Oracle是一个关系型数据库管理系统,Oracle11g有400多项功能,经过了1500多个小时的测试,开发工作量达到了3.6万人/月,相当于1000名员工连续研发3年。
Oracle11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服务器和存储设备组成的网格上运行,相对过往版本而言,Oracle11g具有了与众不同的特性,数据库重演,计划管理,自动诊断知识库,事务打包服务,自动内存优化等等。
第三章系统设计
3.1系统流程
与本系统相关的角色包括:
本系统的用户包括四种:
一是最高管理员;二是数据管理人员,该类用户可以进行数据表的创建与修改,数据的修改和删除;三是业务组织人员,该类用户可以进行视图的创建,以及函数、存储过程和触发器等对象的创建和管理;第四种是数据访问人员,该类用户人数比较多,但是只能进行特定的数据表或者视图的查询操作。
3.2系统功能模块的划分
软件所实现的功能强弱是衡量一个软件的最根本的标准。
经过对系统的需求分析和实际应用需求,确定了本子系统的功能模块如图3.2所示:
图3.2系统功能模块图
3.2.1用户模块
用户包括为用户分配账号,修改密码,用户安全退出功能。
此模块只能由系统管理员统一配置,用户不能自行注册,用户密码要进行加密处理。
3.2.3产品管理
对需要入库的产品进行增删改查操作。
3.2.4供应商管理
对供应商进行增删改查操作
3.2.5入库管理
先由最高管理人员对数据管理人员进行授权,然后该类用户对商品信息进行入库操作,即对商品信息表进行修改,或增加数据,或删除数据,可以建立表或删除表。
3.2.6出货管理
此操作由数据管理人员进行操作,包括对商品信息进行出库操作,即对商品出库信息表进行修改,或增加数据,或删除数据,可以建立表或删除表。
3.2.8库存查看
可以查看产品的库存状况,库存数量。
3.2.9系统管理
进行用户角色权限分配,使不同的角色拥有不同的权限从而有效的使用系统进行工作。
3.2.10系统监控
记录登陆用户的登陆时间、推出时间及在系统内进行的所有操作。
3.3数据库设计
3.3.1数据库需求分析
数据库的设计在一个系统中的作用十分重要,数据库建立的是否完善直接影响到你系统的实现。
数据库的设计既要满足用户的需求又要尽最大可能的降低数据的冗余,尽可能降低数据间的依赖,将他们分离。
在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据,数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础.
3.3.2数据库的逻辑设计
逻辑结构设计的原则如下:
(1)尽可能的减少数据冗余和重复。
(2)结构设计与操作设计相结合。
(3)数据结构具有相对的稳定性。
其实数据库还有要求如下:
为了方便数据文件的扩展和迁移,本项目实施要求使用独立的数据文件,请给出具体的实施方案和关键代码。
其中,数据文件放在服务器的E盘,文件名称为“自己的姓名.dbf”,文件初始大小为50M,本地化管理,自动扩展。
完整代码如下(使用system账户进行创建表空间和数据文件)
1.Create tablespace bigshuai datafile ‘E:
\oracle\王帅.dbf’
2.Size50M reuse
3.Extent management local autoallocate;
3.2.4用户设计
本系统的用户包括四种:
一是最高管理员;二是数据管理人员,该类用户可以进行数据表的创建与修改,数据的修改和删除;三是业务组织人员,该类用户可以进行视图的创建,以及函数、存储过程和触发器等对象的创建和管理;第四种是数据访问人员,该类用户人数比较多,但是只能进行特定的数据表或者视图的查询操作。
请使用最高管理员执行以下操作:
1)实现问题
(1)中的数据库设计;
2)给出区分其他三种用户的实施方案和关键代码;
问题1,已经在上一小题实现,在此不在列出。
问题2的实施方案如下:
最高管理员在此使用system用户,创建一个用户登录表userLogin,表中有四个属性,分别是用户编号Loginid,登陆名LoginName,密码pwdd,权限值authority,权限值可取0,1,2(0代表数据管理员标识,1代表业务组织人员标识,2代表数据访问人员标识)。
并编写存储过程对用户登陆数据库时进行身份判断,并返回相应的权限值。
其次并规定,登陆时候要判断用户名是否存在,不存在返回-2;判断密码是否正确,如果密码不正确返回-1;用户名和权限值作为主键,并创建序列作为登陆id.
1.创建用户登录表:
1.create table userLogin(
2.Loginid number(3) not null ,--登陆编号
3.Loginname varchar2(10) not null ,--登陆姓名
4.pwd varchar2(16) not null,--登陆密码
5.authority number
(1) check (authority in(0,1,2)),--权限值
6.primary key (Loginname,authority)
7.);
2.创建序列:
1.Create sequence seq_loginid
2.Minvalue 1
3.Maxvalue 999
4.Start with 1
5.Increment by 1
6.Nocycle;
3.插入数据:
1.insert into userLogin values(seq_loginid.nextval,’aaa’,’123456’,0);
2.insert into userLogin values(seq_loginid.nextval,’bbb’,’123456’,1);
3.insert into userLogin values(seq_loginid.nextval,’ccc’,’123456’,2);
4.登陆存储过程的实现:
1.create or replace procedure userLoginCheck-- 对登陆用户的审查
2.(uname varchar2,passwd varchar2,authority out number)
3.As
4. v_count number;
5.begin
6. select count(*) into v_count from userLogin where Loginname=uname;
7. if v_count=0 then
8. authority:
=-2; -- -2 用户名不存在
9. else
10.select count(*) into v_count from userLogin where Loginname=uname and pwd=passwd;
11. if v_count=0 then
12. authority:
=-1;-- -1密码不正确
13. else
14.select authority into authority from userLogin where Loginname=uname and pwd=passwd;
15. end if;
16. end if;
17.end;
5.调用存储过程,对登陆功能进行验证:
1.declare
2. v_authority number;
3.begin
4. userLoginCheck('aaa','123456',v_authority);
5. dbms_output.put_line(v_authority);
6.end;
7.
8.
3)创建一个数据管理人员账户,账户名为“自己的姓名”,密码为自己的学号。
并且设置密码生命周期为30天,允许输入错误的密码不得超过5次,超过5次密码锁1天:
1.Create user 王帅identified by 1515925661-- 创建账户
2.Default tablespace bigshuai; --并额外设置默认表空间为bigshuai
3.
4.Create profile password_life_time
5.Password_life_time 30
6.Password_grace_time 3;--另加密码宽限时间三天
7.
8.Create profile lock_account limit
9.Failed_login_attempts 5-- 错误密码不可超过三次
10.Password_lock_time 1;
3.2.5数据库表的设计
以上述账户连入数据库,使用适当的命令显示当前用户身份信息,请给出截图。
使用该账户执行一下操作:
1)创建表“商品信息”,该表至少包含一个商品编号列,一个商品名称列,商品类型列,一个单价列;将商品编号列和商品名称列设置为联合主键。
2)创建表“零售信息”,该表至少包含一个销售编号列,一个商品编号列,一个商品名称列,一个销售数量列和一个销售金额列。
将销售编号和商品编号设置为联合主键(一次销售的所有商品对应一个销售编号),商品编号和商品名称为外键。
在其他列上设置非空约束。
3)“零售信息”表中的数据默认按照编号和销售时间进行排序,并且按照销售时间一个季度划分一个分区。
同时,数据分布要求符合问题
(1)中的方案。
具体实现方案如下:
准备:
在使用该用户连接数据库前应对该用户进行授予相应的权限,使用system账户进行授予连接数据库权限session,表的相关权限createanytable等,授权方式也可对用户授予已经存在的某些角色的权限例如connect,resource权限等,为了严格按照实验要求,故使用如下命令:
1.grant create session to 王帅;
2.grant create table,drop any table,alter any table to 王帅;
3.grant unlimited tablespace to 王帅;
当前用户的一些信息:
a)查看当前的登陆的用户名:
Select * from dual;(show user;)
b)查看当前用户的一些信息:
Select * from user_users;
c)查看当前用户拥有的角色和权限:
d)Select* from user_role_privs;
e)Select * from sessions_privs;
1.创建商品信息表:
1. Create table product
2.( proid number(10) unique,--商品编号列
3.Proname varchar2(20) unique,--商品名
4.Protype varchar2(20) ,--类型
5.Proprice number(10),--价格
6.Primary key (proid,proname));
2.创建零售信息表,并且按照销售时间一个季度划分一个分区,使用bigshuai表空间:
(在验收发现:
表的分区应该全面考虑,分区的时间最好是按照月份和日期,这样就可以把整个数据表进行整体分区,而不是单单的一年)
1.Create table productOut( --销售信息表
2.Outid number(10) not null,--销售编号
3.Outnum number(10)not null,--销售数量
4.Outmoney number(10)not null,--销售金额
5.Outdate date not null,--销售日期
6.Primary key(outid,proid),--联合逐渐
7.Proid number(10) references product (proid),--外键
8.Proname varchar2(20) references product (proname)
9.)
10.Partition by range(outdate)--按照销售时间每个季节划分一个表分区,共四个分区
11.(
12.Partition par_01 values less than(to_date('2017-04-01','yyyy-mm-dd')) tablespace bigshuai,
13.Partition par_02 values less than(to_date('2017-07-01','yyyy-mm-dd')) tablespace bigshuai,
14.Partition par_03 values less than(to_date('2017-10-01','yyyy-mm-dd')) tablespace bigshuai,
15.Partition par_04 values less than(to_date('2018-01-01','yyyy-mm-dd')) tablespace bigshuai
16.)
3.像两个表中录入数据,并将表中数据按照编号和销售时间进行排序:
录入数据:
1.--商品信息表
2.insert into product values(1,'三星手机','电子类',1000);
3.insert into product values(2,'苹果','水果类',3);
4.insert into product values(3,'篮球','体育类',70);
5.insert into product values(4,'泡面','食品类',70);
6.insert into product values(5,'裙子','服装类',70);
7.
8.---销售信息表
9. insert into productout values(1,5,350,to_date('2017-02-05','yyyy-mm-dd'),3,'篮球');
10.insert into productout values(2,3,210,to_date('2017-04-05','yyyy-mm-dd'),5,'裙子');
11.insert into productout values(2,2,140,to_date('2017-04-14','yyyy-mm-dd'),4,'泡面');
12.insert into productout values(3,2,2000,to_date('2017-05-14','yyyy-mm-dd'),1,'三星手机');
13.insert into productout values(3,5,350,to_date('2017-05-14','yyyy-mm-dd'),5,'裙子');
14.insert into productout values(3,5,350,to_date('2017-06-14','yyyy-mm-dd'),3,'篮球');
15.insert into productout values(1,1,1000,to_date('2017-02-14','yyyy-mm-dd'),1,'三星手机');
3对表中数据录入完成后,数据默认是按照销售编号进行升序,销售时间升序排列。
再次如果表中数据没有按照.对于零售信息没有按照编号和销售时间进行排序,下面介绍两种方法可以实现数据的排序;
a在建立一张新表,命令如下:
1.Create table productout2 as select * from productout order by outid asc,outdate asc;
b.使用视图的方式进行表中的数据进行排序,视图可以保证原有数据的顺序不被打乱。
(此方法虽好,但无创建视图的权限,命令不可执行)
1.Create or replace view producteout_view as
2.Select outid, outdate,outmoney from productout order by outid ,outdate;
3.2.6数据表修改
本系统在投入使用之后发现,由于“零售信息”表中没有存储商品单价,每次计算商品销售金额都要进行连接查询操作,效率太低,请对数据库做如下修改:
1)为“零售信息”表添加商品单价列;
执行命令如下:
1.Alter table productout add (outprice number(10));
2)编写一个存储过程,将“商品信息”表中的商品单价写入“零售信息”表的单价列;
在本题中由(3)可知,赋予王帅用户业务组织人员的权限。
使用最高管理员system授权语句如下所示:
1.grant create view,create any procedure,create any trigger to 黄国峰;
将商品信息表数据写入零售信息表中方法有多种可以使用循环,游标等,在不考虑执行效率的前提下,为了方便在此我使用merge命令如下:
1.Create or replace procedure write_outprice as
2.begin--merge可以对一个表同时执行inserts和updates操作,在此仅执行update
3.merge into productout op using product p on (op.proid = p.proid)---使用merge 命令
4.when matched then
5. update set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大型 数据库 课程设计 完整版