Oracle编程入门经典 第4章 新9i示例形式

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

 

山姆ple Schemas的文档(示例情势的表及介绍):

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

 

成百上千年来,Oracle讲师、管理员、程序员、以及用户为了学习、测试或调整他们的数据库,都直接在动用那个值得依靠的SCOTT情势展开着简单地查询、更新、以及去除操作。这个格局就是大家所说的以身作则格局。示例情势是表、视图、索引这样的数据库对象的聚合,并且随着预先供了象征小框框依旧中等规模公司的数码。

乘势最新版本的Oracle数据库Oracle
9i的面世,又推荐了崭新的一组示例格局,它们的对象是扩展SCOTT格局向用户提供的效劳。所有这多少个格局一起形成了一样的虚构公司的一部分,它们各自都有投机的事务重点。例如,人力资源部、订单输入部门以及发货部门都有离其余形式。

注意:

时下hr已经锁定了(即lock)。需要履行以下脚本:

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形式数据结构图

 C++ 1

怎么要将这些情势命名为SCOTT呢?SCOTT/TIGER是Oracle版本1、2和3时代的Oracle数据库的早期用户名/密码组合。SCOTT是指Oracle公司的大茂山北斗程序员布鲁斯司各脱。当然,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_C++,CS构成了队列运送情势的集纳。
  • SH——销售历史。

4.2.1 深刻座谈各样格局

1. 人力资源

人力资源情势,或者HR形式,负责管理部门、雇员、工作以及薪金新闻。图4-2显得了HR情势的详尽数据结构图示。

C++ 2

2. 订单输入

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

图4-3详细刻画了OE格局的数据结构。就如我们从前理解的,与人力资源情势相比,订单输入格局更加复杂。

C++ 3

图4-3 OE情势数据结构

OE形式会记录产品库存。我们将会蕴藏任意指定仓库中指定产品的多少。在铺子中会有四个仓库,所以要使用地方标识符指出其地理区域。在WAREHOUSES表中还有一个Oracle
Spatial列,它为我们提供了应用Oracle Spatial空间技术的钥匙。

Oracle Spatial是在数据库中襄助地点数据和地理数据的技艺。

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

  • CUST_ADDRESS_TYP。这是一个在CUSTOMERS表中采纳的目的类型。它富含了广大与客户地址有关的属性。

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个电话号码。

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的引用。

C++ 4

图4-4 PM形式数据结构

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

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

SQL> desc ordsys.ordimage;

4. 体系运送

俺们的虚构公司想要使用音讯系统,以利于在线客户开展自助订货。当客户最先化订货的时候,系统就需要树立订单,向客户提供账单,并且要确保可以依照客户的职务,通过适当的地段发送订货。

QS_CS形式有一个名为ORDER_STATUS_TABLE的表,能够储存订单状态。这是在总体队列运送格局安装过程中唯一建立表(除了通过高档队列API建立的行列表以外)。大家不会来得与表有关的数据结构图,而是要研究为队列运送情势所建立的行列系统中的信息流程。

图4-5所示流程图示中可以寓目,为了提供一个清楚、直观的订货——发货——结算循环,要在单位期间什么传递信息。

C++ 5

图4-5 为队列运送(QS)情势在队列系统中确立的消息流程

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

在此刻,运送主旨就会收到要到位的订单,并且向客户发送订货,而且客户服务部门也会意识到订单的情事。在分外的运输核心,Shipping
Center(运送核心)应用就会承担发送订货,或者将预订调整回订单状态。一旦取得了产品,就会发送退回为订单状态的产品,并且将订单放到shipped
orders(已运送订单)队列中。

当订单发送之后,就会透过shipped orders
gueue通告客户服务和客户结算部门,并且向客户发送账单。经过结算的订单会放在比尔ed
Orders(已结算订单)队列中,它会打招呼客户服务单位,然后就足以做到订单处理过程。

5. 售货历史

现在商务环境中的公司曾经发现,除非人们可以采纳一种有含义并且即时的措施,按照音信变化精确的决策报告,否则世界上的保有销售信息都是毫无价值的。决策扶助(decision
support)就是用来叙述在进展决策的经过中音讯技术使用的术语。

销售历史情势是一个价值观数据仓库的言传身教。表会遵照星型格局(star
schema)设计开展公司,在这种方法下,会有一个大的SALES表位于核心,SALES表的外界还会有一部分小的查询表,或者维数(dimension)表。SALES表平日会有恢宏的数据(所有的销售实时),而维数表相对于SALES表来讲会十分小。

图4-6的数据结构图展现了销售历史格局:

C++ 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工作目录)

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

运转以下代码可拿到数据库对象列表:

SQL> connect hr/hr;

已连接。

SQL> @dbls

2. 自解释形式

Oracle提供了一种可以让表的主人在数据库中存储表或者列的纯文本注释的不二法门。在演示形式安装期间,每个情势都怀有一个本子,能够为它们各自的表和列建立这些注释。这可以动用SQL命令CREATE
COMMENT实现。其中注释样本如下:

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/