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
?
Sample Schemas的文檔(示例模式的表及介紹):
http://docs.oracle.com/cd/B10501_01/server.920/a96539.pdf
?
很多年來,Oracle教師、管理員、程序員、以及用戶為了學習、測試或調整他們的數據庫,都一直在使用這個值得依賴的SCOTT模式進行著簡單地查詢、更新、以及刪除操作。這些模式就是我們所說的示例模式。示例模式是表、視圖、索引這樣的數據庫對象的集合,并且隨之預先供了代表小規?;蛘咧械纫幠9镜臄祿?/p>
隨著最新版本的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技術可以應用于各種不同的環境中。技術解決方案的兩個應用極端情況是,高速在線事務處理和數據庫倉庫。盡管用戶可以使用一個模式,展示怎樣在相同的表中完成在線事務處理和數據倉庫。但是用戶決不可能采用這種方式實現實用的解決方案。我們在如今的業界中經??梢园l現,為了解決現實世界中的不同計算需求,通常在單獨的數據庫實例中會存在不同的模式,或者在網絡上會有大量分布式數據庫。新的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. 隊列運送
我們的虛擬公司想要使用消息系統,以方便在線客戶進行自助訂貨。當客戶初始化訂貨的時候,系統就需要建立訂單,向客戶提供賬單,并且要確??梢愿鶕蛻舻奈恢?#xff0c;通過適當的地區發送訂貨。
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示例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle编程入门经典 第3章 建立以
- 下一篇: Oracle编程入门经典 第6章 在Or