Oracle物流信息管理系统.docx
《Oracle物流信息管理系统.docx》由会员分享,可在线阅读,更多相关《Oracle物流信息管理系统.docx(33页珍藏版)》请在冰点文库上搜索。
Oracle物流信息管理系统
2015-2016学年第二学期《大型数据库技术》大作业
课题名称:
物流信息管理系统
班级:
14级软工云计算2班
学号:
姓名:
成绩:
2016年5月
一)ORACLE11g的安装与配置(20分)
在自己的电脑上配置安装ORACLE11g,并创建数据库。
具体要求如下:
(1)安装版本为企业版
(2)在安装时,只安装Oralce服务器。
在安装完成后再创建数据库。
安装数据库软件
(3)利用DBCA创建数据库,数据库名称为自己姓名的拼音首字母,如某学生的姓名为“张三”,则数据库的名称则为zs。
LrHrPZ3。
在CMD下面输入DBCA 就可以弹出创建数据库的对话框,是那种图示化的界面
创建数据库
设置数据库名称:
XP
设置所有用户密码为我的学号:
1415925675
(4)数据库为共享数据库。
(5)创建数据库时选择示例模式。
数据库创建中
数据库创建完成
(6)数据库所有的用户使用相同的口令,口令为学生的学号。
登录到system用户中
登录到scott用户中
(二)用户的创建与权限管理(20分)
(1)新建一个用户表空间MYTBS,要求大小为500M。
MYTBS表空间下有两个数据文件MYTBS1.DBF和MyTBS2.DBF,文件分别放在E和F两个不同的磁盘分区。
(因为在虚拟机里安装的oracle11g所以两个文件都放在了C盘里)MfAwUSk。
SQL>connectsystem/1415925675
已连接。
SQL>createtablespacemytbsdatafile'c:
\mytbsl.dbf'size30m,'c:
\mytbs2.dbf'sc2vMEaa。
ize20m;
表空间已创建。
(2)创建用户配置文件userprofile,要求密码的生存周期为30天,允许输入错误的密码不得超过5次,超过5次密码锁2天。
(用语句查看该配置文件中的资源配置结果,dba_profiles数据字典表,截图语句及查询结果)KeJ80rw。
SQL>createprolimitpassword_life_time30failed_login_attemptsPsJyKYj。
5password_lock_time2;
配置文件已创建
SQL>select*fromdba_profileswhereprofile='LOCK_COUNT';3Xgh03e。
(3)新建一个用户,用户名称为学生姓名的首字母,密码为学生的学号。
如学生姓名为“张三”,则用户名称则为zs。
为新帐号设置默认表空间为MYTBS。
系统所有对象必须建立在该帐号下,所有对象必须存储在MYTBS表空间中。
用户的配置文件为userprofile;(用语句查看新建的用户默认表空间,dba_users数据字典表,截图语句及查询结果)b2BRl1K。
SQL>createuserxpidentifiedby1415925675defaulttablespaceMYTBS;dmPP97W。
用户已创建。
SQL>grantconnect,resourcetoxp;
授权成功。
SQL>alteruserxppro;
用户已更改。
SQL>connxp/1415925675;
已连接。
SQL>showuser;
USER为"XP"
SQL>selectusername,account_status,lock_date,expiry_datefromdba_usersawhereyAuvu3G。
a.username='XP';
USERNAMEACCOUNT_STATUSLOCK_DATE0ES5Llk。
----------------------------------------------------------------------------8zb84Zg。
EXPIRY_DATE
--------------
XPOPEN
27-6月-16
(4)为用户赋予登录Oracle的权限;为用户赋予创建任何表、创建任何索引的权限;将DBA的角色给新建用户;查看对应的用户获得的权限和角色(用数据字典表user_sys_privs,user_tab_privs,user_role_等,,截图语句及查询结果)kjWlLXR。
SQL>grantconnect,resourcetoxp;
授权成功。
SQL>selectusername,default_tablespacefromuser_users;UejPS2W。
SQL>select*fromuser_sys_privs;
SQL>select*fromuser_tab_privs;
SQL>select*fromuser_role_privs;
(5)用新建的帐号登录。
并执行showuser命令,显示当前登录用户。
完成以上命令,并写入文档中。
(三)Oracle对象的创建与管理(20分)
物流管理系统
1.需求分析
该系统目标就是为物流业提供方便快捷管理方式。
主要设计:
建立业务信息、货物信息、卖家信息、消费者信息;完成业务信息、货物信息、卖家信息、消费者信息;业务实体包括操作员、发货城市、发货站、费用、接洽时间、收货站、收货城市,一个收货人选择业务,收货人包括姓名、身份证号码、年龄、电话、地址,一个收货人要网购一种货物,一个货物有标签、名称、体积、重量、包装类型。
货物由发货人统一发送,发货人包括姓名、身份证号码、电话、地址。
pyxbaUI。
2.数据库设计
卖家信息(ID号,,姓名,年龄,电话,住址);
货物信息(货物名,货号,体积,重量,包装类型);
消费者信息(ID号,姓名,年龄,电话,住址);
业务信息(业务员号,接洽时间,发货站,发货城市,收货站,收货城市);
选择信息(选择号,业务员号,消费者ID号,货物名,费用);
运输信息(运输号,卖家ID号,货物名,发货时间)
Seller(ID号,姓名,年龄,电话,住址);
SQL>edit
已写入
1createtablex_Seller(
2SeIDchar(20)primarykey,
3Snamechar(10)notnull,
4Agechar(10),
5Tellchar(20)notnull,
6Adrchar(20)notnull
7*)
8
SQL>/
表已创建。
Goods(货物名,货号,体积,重量,包装类型);
SQL>edit
已写入
1createtablex_Goods(
2Gnamechar(10)primarykey,
3Gnochar(10)notnull,
4Volumechar(10),
5Weightchar(10),
6Packchar(10)
7*)
SQL>/
表已创建。
Consume(ID号,姓名,年龄,电话,住址);
SQL>edit
已写入
1createtablex_Consume(
2CIDchar(20)primarykey,
3Cnamechar(10)notnull,
4Agechar(10),
5Tellchar(20)notnull,
6Adrchar(20)
7*)
SQL>/
表已创建。
Business(业务员号,接洽时间,发货站,发货城市,收货站,收货城市);
SQL>edit
已写入
1createtablex_Business(
2Onochar(4)primarykey,
3Jtimechar(10)notnull,
4Fhzchar(10)notnull,
5Fhcitychar(10)notnull,
6Shzchar(10)notnull,
7Shcitychar(10)notnull
8*)
9;
表已创建。
Select(选择号,业务员号,消费者ID号,货物名,费用);
SQL>edit
已写入
1createtablex_Select(
2Xnochar(10),
3Onochar(4),
4CIDchar(20),
5Gnamechar(10),
6Costchar(10),
7primarykey(Xno,Ono,CID,Gname),
8foreignkey(Ono)referencesx_Business(Ono),
9foreignkey(CID)referencesx_Consume(CID),
10foreignkey(Gname)referencesx_Goods(Gname)
11*)
SQL>/
表已创建。
Transport(运输号,卖家ID号,货物名,发货时间)
SQL>edit
已写入
1createtablex_Transport(
2Ynochar(10),
3SeIDchar(20),
4Gnamechar(10),
5Ftimechar(10)notnull,
6primarykey(Yno,SeID,Gname),
7foreignkey(SeID)referencesx_Seller(SeID),
8foreignkey(Gname)referencesx_Goods(Gname)
9*)
SQL>/
表已创建。
3.添加数据信息
添加卖家信息
已写入
1insertintox_Seller(SeID,Sname,Age,Tell,Adr)
2*values('20162016','徐棚','22','','南阳理工学院')
添加消费者信息
insertintox_Consumevalues('20172017','许仙','21','','东南山')ExUjFoE。
insertintox_Goodsvalues('、','1415925','2','3kg','精装')XWxEvHI。
insertintox_Businessvalues('110','2016525','圆通站1','郑州','圆通站2','南京')ZX1rJhR。
insertintox_Selectvalues('0','110','20172017','枇杷果','500$')HJUKkcT。
insertintox_Transportvalues('2016618','20162016','枇杷果','2016520')w4x3aAH。
4.建立索引
由于上面好多表创建的同时设置的有主键,创建主键的时候会创建同名索引
SQL>createindexsy1onx_Transport(Ftime);
5.视图创建
SQL>createviewxbasselectTell,Adrfromx_SellerwhereSname='徐棚';vf5Zmc6。
SQL>edit
已写入
1createviewxb2(SeID,Sname,Gname)
2as
3selectx_Seller.SeID,x_Seller.Sname,x_Transport.GnameZWrMo61。
4fromx_Seller,x_Transport
5*wherex_Seller.SeID=x_Transport.SeID
SQL>edit
已写入
1createviewxb3(Ono,Fhcity,CID,Cost)
2as
3selectx_Business.Ono,x_Business.Fhcity,x_Select.CID,x_Select.CostYJhEHKr。
4fromx_Business,x_Select
5*wherex_Business.Ono=x_Select.Ono
SQL>/
(四)PL/SQL编程(20分)
系统功能必须通过函数、存储过程、触发器或包实现。
至少创建一个函数、一个触发器(实现级联更新功能)、2个过程。
不能用程序设计语言实现。
先描述功能,再写实现代码。
qMtZcJL。
例如:
用户登录验证,可以创建一个存储过程,输入参数是用户帐号、用户密码,输出参数是整型值。
-1表示登录失败,0表示没有此用户,1表示登录成功。
Cz3Qzqn。
SQL>createuserxbpidentifiedby1415925675accountunlock;eNvfF3l。
grantcreatesession,createtable,createview,createanyprocedure,createrole,createsequencetoxbp;LYZXLaM。
连接xbp用户,然后建立四张表(关于学生管理系统的表)
createtablestudentInfo
(
stuIDchar(10)primarykey,
stuNamechar(20)notnull,
sexchar(8)notnull,
specchar(20)notnull,
classchar(20)notnull,
brithdaychar(20)notnull,
addresschar(20)notnull
)
SQL>insertintostudentInfovalues(20161,'路人甲','女','软件学院','云计算2班','1994-5-25','南阳');lDaZ1EO。
建立courses表
createtableCourses(
courIDchar(10)primarykey,
courNamechar(15)notnull,
creditHournumber(2,0)notnull,
creditScorenumber(3,1)notnull
);
insertintocoursesvalues(1201,'数据库一班',26,2.0);
insertintocoursesvalues(1202,'软件设计一班',32,2.5);
insertintocoursesvalues(1203,'数据库二班',26,2.0);
insertintocoursesvalues(1204,'软件设计二班',32,3.0);
insertintocoursesvalues(1205,'数据库计三班',26,2.0);
建立scores
createtablescores(
stuIDchar(10),
stuNamechar(20)notnull,
classchar(20)notnull,courIDchar(10),
usualScorenumber(3,1)notnull,
testScorenumber(3,1)notnull,
constraintscores_stuIDforeignkey(stuID)referencesstudentInfo(stuID),constraintscores_courseIDforeignkey(courID)referencescourses(courID)h251B5B。
)
insertintoscoresvalues(201301,'李力','软件设计一班',1202,90.0,95.0);Lp75K6T。
insertintoscoresvalues(201302,'王雪','软件设计二班',1204,95.0,96.0);5iqn1mc。
insertintoscoresvalues(201303,'李冰','数据库一班',1201,80.0,90.0);IihKy57。
insertintoscoresvalues(201304,'张丽','数据库二班',1203,85.0,90.0);JieK5mA。
insertintoscoresvalues(201305,'赵水','数据库计三班',1205,60.0,95.0);bI011zL。
建立users表
insertintousersvalues('student',14159256,'学生');
insertintousersvalues('admin',14159256,'管理员');
insertintousersvalues('teacher',14159256,'教师');
创建一个陆的存储过程,判断登陆用户的权限,包括学生、教师、系统管理员。
createorreplaceprocedurelogin(VWKd86y。
p_nameinusers.userName%type,
p_passwordinusers.password%type)
As
v_passwordusers.password%type;/*判别输入的密码是否正确*/
v_usertypeusers.usertype%type;/*判别该用户的管理等级*/
begin
selectpassword,usertypeintov_password,v_usertypefromuserswhereuserName=p_name;/*核对用户是否存在*/Z7BB1B8。
begin
ifv_password=p_passwordthen/*验证密码*/
begin
ifv_usertype='学生'thendbms_output.put_line('学生'||p_name||'登陆成功');elsifv_usertype='教师'thendbms_output.put_line('教师'||p_name||'登陆成功');QKw0Ewz。
elsifv_usertype='系统管理员'thendbms_output.put_line('系统管理员'||p_name||'登陆成功');2BCl5XY。
endif;
end;
elsedbms_output.put_line('密码输入错误,该用户登录失败');
endif;
end;
exceptionwhenno_data_foundthendbms_output.put_line('该用户不存在!
');endlogin;hiPSjZD。
SQL>setserveroutputon
SQL>declare
2begin
3login('student','14159256');
4end;
5/
学生student登陆成功
PL/SQL过程已成功完成。
(五)Oracle备份与导出(20分)
利用备份和还原的有关知识。
设置数据库的备份方案。
设计数据库备份和恢复的方法,并写出相关的命令和操作。
(1)设置归档模式。
查看当前文档归档模式
SQL>selectlog_modefromv$database;
SQL>shutdownimmediate;
SQL>startupmount;
(2)归档当前日志。
(3)数据库完全备份及实现。
数据库查询文件datafile的所在目录
SQL>selectnamefromv$datafile;
关闭数据库,可以直接拷贝数据库所有文件
shutdownimmediate;
(4)数据库完全恢复及实现。
recover datafile
(5)利用数据泵实现逻辑导出与导入。
SQL>createdirectorydump_diras'c:
\dump';
SQL>grantwrite,readondirectorydump_dirtoxp;X2TJz6O。
SQL>selecttable_namefromuser_tables;
C:
\Users\XP>expdpxp/1415925675directory=dump_dirdumptables=X_GOODSGyJTB14。
C:
\Users\XP>impdpxp/1415925675directory=dump_dirdumptablespaces=X_GOODSH9hSoFh。
(6)举例说明闪回技术使用(闪回查询、闪回表、闪回删除等)。
在xp里新建一个emp表
SQL>createtableemp(idint,namechar(20));
SQL>conn/assysdba
已连接。
SQL>grantexecuteondbms_flashbacktoxp;
授权成功。
闪回查询:
1、alter database flashback on;
SQL>settimeon;
17:
54:
46SQL>select*fromempasoftimestampto_timestamp('2016-5-3017:
52:
26okFectf。
','YYYY-MM-DDHH24:
MI:
SS');
IDNAME
------------------------------
1aaaaa
闪回表:
17:
58:
49SQL>deletefromemp;
已删除1行。
17:
59:
24SQL>altertableempenablerowmovement;
表已更改。
18:
00:
03SQL>flashbacktableemptotimestampto_timestamp('2016-5-3017:
58:
49'rCIiDVW。
'yyyy-mm--ddhh24:
mi:
ss');
闪回完成。
闪回删除:
18:
02:
30SQL>droptableemp;
表已删除。
18:
04:
13SQL>flashbacktableemptobeforedrop;