当前位置:文档之家› Oracle数据库课程大作业

Oracle数据库课程大作业

Oracle数据库课程大作业
任务一: 基础知识(1-2天)
问题: 1) Oracle 的逻辑存储结构包括哪些结构对象?它们之间有什么关系?
答:包括表空间、数据块、区、段。

1、每个表空间中可以存放一个或多个段;
2、每个段是由一个或多个区段组成;
3、每个区段是有一个或多个连续的Oracle连续的数据块组成。

2) Oracle 数据库服务端口默认是多少?
答:1521
3)Oracle数据库实例的启动过程分为哪几个步骤?请分别写出以下情况下启动数据库的脚本:
答:启动分为
startup nomount
alter database mount
alter database open
a)启动实例不加载数据库;
答:sql>startup nomount
b) 启动实例、加载数据库并保持数据库关闭;
答:sql>startup nomount
sql>alter database mount
c) 启动实例、加载并打开数据库。

答:startup nomount
alter database mount
alter database open
4)Oracle中有四种关闭数据库实例的方式,请写出其执行脚本。

答:shutdown immediate、
shutdown normal、
shutdown abort、
shutdown transactional
5)简述存储过程、函数和触发器的区别和联系。

答:触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;函数是根据输入产生输出,自定义只不过输入输出的关系由用户来定义。

在什么时候用触发器。

要求系统根据某些操作自动完成相关任务,比如,根据买掉的产品的输入数量自动扣除该产品的库存量。

存储过程就是程序,它是经过语法检查和编译的SQL语句,所以运行特别快。

6)简述数据库索引的优点和缺点。

答:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

增加索引也有许多不利的方面:
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

提交文档内容包括上述六个问题的回答。

任务二: 数据库设计与表创建 (1-2天)
说明: 根据学过的数据库原理课程,按照要求设计权限管理数据库系统,并使用Oracle 创建相应数据表;
需求说明: 基于角色的访问控制模型是当前比较成熟、应用非常广泛的权限管理模型。

基于该模型,本课程要设计的权限管理数据库的概要E-R 图如下所示,请在oracle 中建立相应的表结构。

用户
角色
权限
分配有
包含
继承自
1:n
1:n
用户编号
用户名
角色编号
权限编号
要求:1)在新建的用户模式下建表;
2)每个实体至少包括5个属性,请在建表时自行添加有意义的属性。

3)给出所有建表的SQL脚本。

提交文档内容包括每个实体的设计内容和所有建表的SQL脚本。

任务三: 数据库查询(5-7天)
说明:附件是数据库查询任务所用到的数据表,请在新的用户模式下执行附件中SQL脚本,并分析数据表之间的关系,然后使用SQL独立完成下面的任务。

要求:
1)在“产品”表中插入一条记录;
2)在“产品”表中以“产品ID”为条件对上一操作中插入的记录进行查
询、修改、删除操作;
3)查询高于平均价格的产品;查询最贵的产品,查询结果包括:产品名
称、单价;
4)查询各类产品信息,查询结果包括:类别名称、产品名称、单位数量、
库存量;
5)查询订单信息,查询结果包括:订单ID、客户名称、总价;
6)查询各城市的客户和供应商,查询结果包括:城市、公司名称、联系
人姓名、关系;
7)查询1996年度各类产品的季度销售额,查询结果包括:类别名称、产
品名称、产品销售额、订购季度;
8)查询各产品的季度销售额,查询结果包括:产品名称、订购年份、第
1季度销售额、第2季度销售额、第3季度销售额、第4季度销售额;
9)查询所有产品的1月份销量(未销售的产品也需要列出);
10)列出1月份没有销售出去的产品;
11)编写存储过程,生成按季度分类的汇总销售额报表,包括:季度(标
题)、年度、订单数、销售额;
12)编写存储过程,生成按年度分类的汇总销售额报表:包括:年度(标
题)、年度销售额小计、季度、订单数、销售额;
13)编写存储过程,生成按产品分类的各类产品库存量报表,包括:类
别名称(标题)、产品名称、库存量及类别中产品数目小计;
14)编写存储过程,生成按产品分类的各类产品销售额报表,包括:类
别名称(标题)、产品名称、销售额及类别中产品销售额小计;
15)编写触发器,当添加、修改或删除订单明细中的“产品数量”时
(insert,update,delete),“产品库存量”要随之自动变化;
提交文档内容包括每个查询的SQL脚本和相关输出结果的截图(可截取部分)。

任务四: SQL查询优化(2-4天)
说明:在新的用户模式下完成SQL查询优化的任务。

要求:
字段名称数据类型说明
id Int 不允许为空
riqi date 不允许为空
Name Varchar(100)允许为空
Yuefen Number(2)允许为空
2)参照课堂练习依次灌入100万,200万,300万的数据,要求id从1开始自增长。

riqi选择当前时间。

Name为当前登录用户的名称(如当前登录用户为test,则前100万数据Name字段的值设置为test1;之后100万设置为test2;最后100万设置为test3)。

Yuefen为当前时间所属月份。

3)在id无索引和有索引时执行以下查询:
a) 查询某特定id所对应的数据库条目。

b) 查询该数据表的记录数
4)记录查询时间到下表中
实验次数数据记录数时间性能(无索引)时间性能(有索引)
查询a 查询b 查询a 查询b
1
2
3
5)将上述包含有300万数据的数据表改造为Oracle分区表,要求a)改造为范围分区表,0<id<=10000为第一个表分区;100001<id<=20000为第二个表分区,20001<id<=30000为第三个表分区。

在这种情况下,完成任务3)和4)。

b) 改造为列表分区表,按Name字段分为3个分区。

c) 必须使用自定义的表空间和数据文件。

提交文档内容包括该任务涉及的所有SQL脚本以及性能实验数据。

相关主题