Oracle 9i产品帮助文档:

http://docs.oracle.com/cd/B10501_01/index.htm

可根据自己需要进行查询,包含了众多的文档。

Sample Schemas的目录:

http://docs.oracle.com/cd/B10501_01/server.920/a96539/toc.htm

Sample Schemas的文档(示例模式的表及介绍):

http://docs.oracle.com/cd/B10501_01/server.920/a96539.pdf

很多年来,Oracle教师、管理员、程序员、以及用户为了学习、测试或调整他们的数据库,都一直在使用这个值得依赖的SCOTT模式进行着简单地查询、更新、以及删除操作。这些模式就是我们所说的示例模式。示例模式是表、视图、索引这样的数据库对象的集合,并且随之预先供了代表小规模或者中等规模公司的数据。

随着最新版本的Oracle数据库Oracle 9i的出现,又引进了全新的一组示例模式,它们的目标是扩展SCOTT模式向用户提供的功能。所有这些模式一起形成了相同的虚拟公司的一部分,它们各自都有自己的业务侧重点。例如,人力资源部、订单输入部门以及发货部门都有分离的模式。

注意:

当前hr已经锁定了(即lock)。需要执行以下脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
SQL> connect system/zyf;
已连接。
SQL> alter user hr account unlock;
用户已更改。
SQL> alter user hr identified by hr;
用户已更改。
SQL> connect hr/hr;
已连接。
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOBS
JOB_HISTORY
LOCATIONS
REGIONS
已选择7行。

4.1 SCOTT模式

所提供的SCOTT模式可以提供一些示例表以及数据,来展示数据库的一些特性。它是一个相当简单的模式,如图4-1数据结构图所示(通过PowerDesign逆向工程转换为数据库模型)。

图4-1 SCOTT模式数据结构图

为什么要将这个模式命名为SCOTT呢?SCOTT/TIGER是Oracle版本1、2和3时代的Oracle数据库的最初用户名/密码组合。SCOTT是指Oracle公司的元老程序员Bruce Scott。当然,TIGER是Bruce养的猫的名字。

SCOTT模式中所展示的数据库特性通常被认为是大多数关系数据库产品中的主要特性。如果想要真实地展示Oracle数据库的功能,就要深化这些示例!

4.2 Oracle 9i示例模式

Oracle技术可以应用于各种不同的环境中。技术解决方案的两个应用极端情况是,高速在线事务处理和数据库仓库。尽管用户可以使用一个模式,展示怎样在相同的表中完成在线事务处理和数据仓库。但是用户决不可能采用这种方式实现实用的解决方案。我们在如今的业界中经常可以发现,为了解决现实世界中的不同计算需求,通常在单独的数据库实例中会存在不同的模式,或者在网络上会有大量分布式数据库。新的Oracle 9i示例模式模型极好地对这个场景建模。

Oracle 9i示例模式试图模型化一个现实世界中具有一系列典型业务部门的销售组织。这些不同的部门具有不同的信息技术需要,每一个示例模式都使用了不同的Oracle技术来解决它们各自的问题。另外,每个模式设计方案都针对特定的技术用户。这些模式如下:

  • HR——人力资源。
  • OE——订单输入。
  • PM——产品媒体。产品媒体在数据库中存储了公司系列产品的相关多媒体内容,可以用于在Web上发布以及打印。PM利用了Oracle Intermedia,它专门设计用于处理发布音频、视频以及可视数据的多媒体领域。另外,PM也频繁地使用了LOB列类型。
  • QS——队列运送。运送部门负责记录公司向客户进行的产品运送情况,并且使用6个模式来完成这项工作。QS、QS_ES、QS_WS、QS_OS、QS_CB和QS_CS构成了队列运送模式的集合。
  • SH——销售历史。

4.2.1 深入讨论各个模式

1. 人力资源

人力资源模式,或者HR模式,负责管理部门、雇员、工作以及薪金信息。图4-2展示了HR模式的详细数据结构图示。

2. 订单输入

订单输入(Order Entry)模式,或者OE模式,可以用来管理公司从事商务活动的各个渠道中的客户、销售订单以及产品库存。

图4-3详细描绘了OE模式的数据结构。就如我们早先了解的,与人力资源模式相比,订单输入模式更为复杂。

图4-3 OE模式数据结构

OE模式会记录产品库存。我们将会存储任意指定仓库中指定产品的数量。在公司中会有多个仓库,所以要使用地点标识符指出其地理区域。在WAREHOUSES表中还有一个Oracle Spatial列,它为我们提供了使用Oracle Spatial空间技术的钥匙。

Oracle Spatial是在数据库中支持位置数据和地理数据的技术。

在OE模式中,需要顺便提供提及两个数据库对象模型:

  • CUST_ADDRESS_TYP。这是一个在CUSTOMERS表中使用的对象类型。它包含了许多与客户地址有关的属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> desc cust_address_typ;
名称 是否为空? 类型
----------------------------------------- --------
STREET_ADDRESS VARCHAR2(40)
POSTAL_CODE VARCHAR2(10)
CITY VARCHAR2(30)
STATE_PROVINCE VARCHAR2(10)
COUNTRY_ID CHAR(2)

  • PHONE_LIST_TYP。这是一个VARCHAR2(25)的VARRAY。这个VARRAY在CUSTOMERS表中作为单独的列存储,可以用于存储最多5个电话号码。
1
2
3
SQL> desc phone_list_typ;
phone_list_typ VARRAY(5) OF VARCHAR2(25)

OE模式是一个很好的示例,它展示了正规的供应组织或者计算机零售商店可以使用什么方式去管理它们完整订单处理过程。通过使用订单输入表中的数据,销售组织就可以向潜在的客户提供精确的产品信息,接受销售订单,量化订单收入,存储客户信息,为不同地理位置订购产品的客户提供精确的库存信息,以及其它服务。

3. 产品媒体

产品媒体(Product Media)模式,或者PM模式,用于管理描述公司产品的多媒体数据。视频、音频和图像这样的在线媒体都可以随输出的媒体数据类型存储在数据库中。这是我们要专门研究的模式之一,它着重于多媒体内容,以及Oracle Intermedia所提供的功能。

注意:

Oracle Intermedia是Oracle数据库支持多媒体内容类型的组件。

除了Intermedia数据存储以外,PM模式还特别依赖LOB列类型的使用来存储数据。

产品媒体模式是Oracle 9i使用名为Oracle Intermedia的Oracle技术解决现实世界商务需求的优秀示例。例如,我们虚构的公司就可以存储多媒体数据或者输出多媒体数据。因此,产品媒体模式中的示例可以完成如下工作:

  • 为Oracle中利用Web发布的内容存储缩略图和完全尺寸的图像。
  • 在Oracle中存储音频剪辑。
  • 在Oracle中存储视频剪辑。
  • 对图像类型进行处理,以便转换成与Web兼容的图像类型

利用Oracle Intermedia,一些曾经很难实现的任务就变得相对简单。图4-4表示为产品媒体模式,以及它对订单输入表PRODUCT_INFORMATION的引用。

图4-4 PM模式数据结构

PRINT_MEDIA表拥有一个对象类型(ADHEADER_TYP),以及在表的各个记录中存储的对象嵌套表(TEXTDOC_TAB)。

ORDSYS.ORD__列都是一个Intermedia对象类型。这些Intermedia对象类型不仅可以存储图像、音频、视频这样的二进制数据;还可以存储各种与多媒体类型有关的元数据。

1
SQL> desc ordsys.ordimage;

4. 队列运送

我们的虚拟公司想要使用消息系统,以方便在线客户进行自助订货。当客户初始化订货的时候,系统就需要建立订单,向客户提供账单,并且要确保可以根据客户的位置,通过适当的地区发送订货。

QS_CS模式有一个名为ORDER_STATUS_TABLE的表,可以存储订单状态。这是在整个队列运送模式安装过程中唯一建立表(除了通过高级队列API建立的队列表以外)。我们不会展示与表有关的数据结构图,而是要讨论为队列运送模式所建立的队列系统中的消息流程。

图4-5所示流程图示中可以看到,为了提供一个清晰、直观的订货——发货——结算循环,要在部门之间怎样传递消息。

图4-5 为队列运送(QS)模式在队列系统中建立的消息流程

一切都要从图示顶部的订单输入开始。Oracle Input(订单输入)过程所生成的订单会放入New Order Queue(新订单队列)中。这个队列要Oracle Entry应用处理,然后会将订单放到Booked Orders Queue(登记订单队列)中。再将Booked Orders Queue中的订单发往适当的运送中心(East(东部)、West(西部)或者Overseas(海外)),以及客户服务部门。

在这时,运送中心就会接收要完成的订单,并且向客户发送订货,而且客户服务部门也会意识到订单的状态。在适当的运送中心,Shipping Center(运送中心)应用就会负责发送订货,或者将订货调整回订单状态。一旦得到了产品,就会发送退回为订单状态的产品,并且将订单放到shipped orders(已运送订单)队列中。

当订单发送之后,就会通过shipped orders gueue通知客户服务和客户结算部门,并且向客户发送账单。经过结算的订单会放在Billed Orders(已结算订单)队列中,它会通知客户服务部门,然后就可以完成订单处理过程。

5. 销售历史

如今商务环境中的公司已经发现,除非人们能够采用一种有意义而且即时的方式,根据信息生成精确的决策报告,否则世界上的所有销售信息都是毫无价值的。决策支持(decision support)就是用来描述在进行决策的过程中信息技术使用的术语。

销售历史模式是一个传统数据仓库的示例。表会按照星型模式(star schema)设计进行组织,在这种方式下,会有一个大的SALES表位于中心,SALES表的外围还会有一些小的查询表,或者维数(dimension)表。SALES表通常会有大量的数据(所有的销售实时),而维数表相对于SALES表来讲会相当小。

图4-6的数据结构图展示了销售历史模式:

图4-6 销售历史模式数据结构

4.2.2 渐进学习方式

按照不同的受众组织模式的方式可以鼓励新的Oracle用户通过结构化的方法学习技术。例如,初学者可以从人力资源开始。这可以让他熟悉关系概念、查询数据、数据库操作语言、数据库定义语言、以及一些其他基本概念。

当新Oracle用户熟悉了人力资源模式之后,可以继续分析订单输入模式。在这个新模式中,他将会遇到对象类型、XML支持、Oracle Spatial、以及其他一些较为高级的数据库特性。

接下来,用户可以分析其余模式所提供的特定领域。多媒体专家可以深入学习产品媒体模式。设计发布-订阅型基于消息的系统的用户可以发现,队列运送模式在他们开始学习Oracle高级队列的时候将会非常有帮助。数据仓库的热衷者最好去分析和了解销售历史模式。

4.2.3 发现更多有关示例模式的内容

1. 数据库对象描述

在这部分中,我们将会浏览数据库,找到属于示例模式下的对象,然后使用SQL查询直接从数据库中获取这些对象的定义。

注意:

以下试验部分所需的全部脚本都可以从http://www.wrox.com/的本书可下载代码中得到。

试验:获取数据库列表

将以下脚本保存到用户本地硬盘上名为dbls.sql的文件中(C:\oracle\ora92\bin,即sql*plus工作目录)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
column object_name format a30
column tablespace_name format a30
column object_type format a12
column status format a1
break on object_type skip 1
select object_type,object_name,
decode(status,'INVALID','*','') status,
tablespace_name
from user_objects a,user_segments b
where a.object_name=b.segment_name(+)
and a.object_type=b.segment_type(+)
order by object_type,object_name
/
column status format a10

运行以下代码可得到数据库对象列表:

1
2
3
4
5
SQL> connect hr/hr;
已连接。
SQL> @dbls

2. 自解释模式

Oracle提供了一种可以让表的所有者在数据库中存储表或者列的纯文本注释的方式。在示例模式安装期间,每个模式都拥有一个脚本,可以为它们各自的表和列建立这些注释。这可以使用SQL命令CREATE COMMENT实现。其中注释样本如下:

1
2
3
4
5
COMMENT ON TABLE jobs
IS ‘jobs table with job titles and salary ranges.Contains 19 rows.
References with employees and job_history table.’;

4.3 小结

文章根据自己理解浓缩,仅供参考。

摘自:《Oracle编程入门经典》 清华大学出版社 http://www.tup.com.cn/

from: http://www.cnblogs.com/yongfeng/archive/2013/01/16/2858316.html

Oracle编程入门经典 第4章 新9i示例模式相关推荐

  1. Oracle编程入门经典 第12章 事务处理和并发控制

    目录 12.1          什么是事务处理... 1 12.2          事务处理控制语句... 1 12.2.1       COMMIT处理... 2 12.2.2       RO ...

  2. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

  3. Oracle编程入门经典 第10章 PLSQL

    目录 10.1          总览... 1 10.2          基于程序块的开发... 1 试验:PL/SQL程序块... 2 工作原理... 2 块嵌套... 2 10.3       ...

  4. Oracle编程入门经典 第9章 掌握SQL*Plus

    目录 9.1             高级启动选项... 1 9.1.1         LOGON.. 2 9.1.2         设置描述文件... 2 9.1.3         START ...

  5. Oracle编程入门经典 第8章 索引

    目录 8.1        索引工作方式... 1 8.2        Oracle中的索引... 1 8.3        索引什么时候有用... 4 8.4        索引开销... 7 8 ...

  6. Oracle编程入门经典 第7章 表

    表是在行和列中存储数据的基本结构.而且,就如同Oracle向数据库整体增加特性一样,随着时间失衡,它也增强了表的概念,以适应更加复杂的应用要求.在本章中,我们将要讨论: Oracle中最常用的表类型, ...

  7. Oracle编程入门经典 第3章 建立以及管理用户和表

    数据定义语言(DDL). 怎样建立我们自己的用户账号. 可以用于Oracle表的不同数据类型. 怎样在表上建立约束. 怎样使用数据词典获取与数据库中对象有关的信息. 3.1 数据定义语言 DDL通常用 ...

  8. Oracle编程入门经典 第1章 了解Oracle

    基本概念.什么是数据库?什么是实例?什么是模式?Oracle的基本术语?什么是SYS和SYSTEM? Oracle数据库的一些变化版本 1.1   Oracle基本术语 1.1.1          ...

  9. Oracle编程入门经典 第6章 在Oracle中处理语句

    6.1     SQL语句类别 DDL:数据定义语言语句.这样的语句有CREATE.TRUNCATE和ALTER,它们用于建立数据库中的结构,设置许可等.用户可以使用它们维护Oracle数据词典. D ...

最新文章

  1. python批量pdf转word,python批量实现Word文件转换为PDF文件
  2. 基于 Docker 的现代软件供应链
  3. 尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(四)
  4. 10.31NOIP模拟赛解题报告
  5. 光纤传感器实验模块_飞秒激光制备异质光纤光栅的温度应变双参数传感器
  6. Metrics, tracing 和 logging 的关系
  7. Robot Framework自动化测试(一)--- 安装
  8. 三星s9php禁用列表,ADB禁用列表
  9. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  10. 通过NavMeshObstacle解决NavMesh防卡
  11. as3 htmlText 的bug
  12. 服务器系统 比较,各种服务器操作系统比较
  13. Logback配置一(按时间归档)
  14. ijkplayer框架深入剖析
  15. 菲氏微积分与Keisler微积分:两个不同时代的微积分教材
  16. 100个javaweb实战项目(视频+源码+文档),带你上天!
  17. opencv轮廓检测
  18. 社科研究中的问卷设计详解——结合论文具体例子来看
  19. Android RecyclerView使用ItemDecoration刻画时间线/时间轴/时光轴timeline
  20. Ruby 之Gem kaminari 分页

热门文章

  1. mysql的引擎讲解
  2. 返乡置业?多数人将掉入陷阱
  3. linux驱动读取文件失败怎么办,linux – 由于单个驱动器读取错误导致软件RAID-1导致内核故障...
  4. 并发编程-09安全发布对象+单例模式详解
  5. 【Linux】【服务器】 CentOS7下安装Redis详细过程步骤
  6. python编程16章_Python核心编程——Chapter16
  7. python从键盘获取输入数字_python获取从命令行输入数字的方法
  8. c 字符串数组_redis为什么不直接使用C字符串,而要自定义简单动态字符串?
  9. 在 Element-UI 的 Table 组件上添加列拖拽效果
  10. linux grep 详细深入学习