国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

Oracle9i 對(duì)象關(guān)系技術(shù)

2024-08-29 13:39:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  簡(jiǎn)介
  Oracle9 i. 已經(jīng)迅速發(fā)展成為可用于所有數(shù)據(jù)(從簡(jiǎn)單到復(fù)雜的各種類型數(shù)據(jù))的數(shù)據(jù)庫(kù)。多媒體數(shù)據(jù)類型(如圖像、地圖、視頻剪輯和音頻剪輯等)曾經(jīng)只能在專業(yè)軟件中見到?,F(xiàn)在很多基于Web 的應(yīng)用程序需要它們的數(shù)據(jù)庫(kù)服務(wù)器治理此類數(shù)據(jù)。 其他的軟件解決方案需要存儲(chǔ)涉及金融工具、設(shè)計(jì)圖表或分子結(jié)構(gòu)的數(shù)據(jù)。為了滿足這些需求,Oracle9 i. 數(shù)據(jù)庫(kù)服務(wù)器采用“對(duì)象關(guān)系技術(shù)”,為涉及復(fù)雜數(shù)據(jù)的開發(fā)、部署和治理提供簡(jiǎn)單策略。
  
  通過使用對(duì)象關(guān)系技術(shù),開發(fā)人員可以增強(qiáng)Oracle9 i. 服務(wù)器,從而創(chuàng)建他們自己的“應(yīng)用程序域特定”的數(shù)據(jù)類型。采用類型演變功能,Oracle9 i. 已經(jīng)增強(qiáng)了支持全面的對(duì)象建模功能,包括繼續(xù)和多級(jí)集合在內(nèi)。例如,可以創(chuàng)建代表客戶、資產(chǎn)組合、照片或電話網(wǎng)絡(luò)的新數(shù)據(jù)類型,然后,確保數(shù)據(jù)庫(kù)程序可以處理與應(yīng)用程序域同樣的抽象級(jí)別。很多情況下,需要將這些新域類型與服務(wù)器盡可能緊密地集成,這樣它們便能作為內(nèi)置類型(如NUMBER 或VARCHAR)看待。使用擴(kuò)充性服務(wù)可以實(shí)現(xiàn)這一目的。采用這樣的集成方式,可以將數(shù)據(jù)庫(kù)服務(wù)器方便地?cái)U(kuò)展到新域中。
  
  采用類型演變功能,Oracle9 i. 已經(jīng)增強(qiáng)為可以支持包括繼續(xù)和多級(jí)別集合在內(nèi)的全面的對(duì)象建模功能。
   Oracle9i 對(duì)象關(guān)系技術(shù)(圖一)
  
  圖1 Oracle9 i 對(duì)象關(guān)系體系結(jié)構(gòu)
  
  Oracle9 i. 還提供廣泛的語(yǔ)言綁定API。數(shù)據(jù)庫(kù)內(nèi)部對(duì)java 提供本地支持,對(duì)象關(guān)系類型系統(tǒng)和Java 環(huán)境間可以緊密集成。它還支持SQL 和C++ 對(duì)象間的映射,從而可以從C++ 應(yīng)用程序無(wú)縫地訪問SQL 對(duì)象。當(dāng)前,xml 正迅速成為信息交換的標(biāo)準(zhǔn)。通過使用對(duì)象關(guān)系框架,可以有效地存儲(chǔ)、索引和查詢XML 數(shù)據(jù)。
  
  面向?qū)ο蟮膽?yīng)用程序開發(fā)
  自從20 世紀(jì)60 年代面向?qū)ο蠹夹g(shù)出現(xiàn),數(shù)十年來(lái)該技術(shù)在廣度和深度上不斷發(fā)展、成熟。逐漸成為被廣泛采用的行業(yè)標(biāo)準(zhǔn),面向?qū)ο蟮膽?yīng)用程序開發(fā)目前已經(jīng)是信息技術(shù)的主流。最聞名的一些標(biāo)準(zhǔn)包括:用于面向?qū)ο蠓治龊驮O(shè)計(jì)的UML(統(tǒng)一建模語(yǔ)言)、用于對(duì)象關(guān)系數(shù)據(jù)庫(kù)的SQL:1999 標(biāo)準(zhǔn)以及用于面向?qū)ο缶幊痰腏ava 和C++ 語(yǔ)言。在深入研究Oracle9i 的SQL:1999 標(biāo)準(zhǔn)的實(shí)現(xiàn)及其相應(yīng)的面向?qū)ο髴?yīng)用程序編程接口(例如Java、C++)之前,當(dāng)今的軟件開發(fā)人員應(yīng)該充分了解UML,這一點(diǎn)非常重要。
   Oracle9i 對(duì)象關(guān)系技術(shù)(圖二)
  
  此UML 規(guī)范匯集了對(duì)象技術(shù)行業(yè)中的最佳實(shí)踐應(yīng)用。它當(dāng)前的版本是由對(duì)象技術(shù)標(biāo)準(zhǔn)的國(guó)際組織“對(duì)象治理小組”(OMG) 發(fā)布的1.3 版。UML 為將面向?qū)ο蟮能浖鳛閷?duì)象模型來(lái)描述定義了標(biāo)準(zhǔn)結(jié)構(gòu)。例如,以下UML 圖說(shuō)明某個(gè)在線目錄應(yīng)用程序的對(duì)象模型,Oracle 已經(jīng)將該應(yīng)用程序發(fā)展為新“通用模式”項(xiàng)目的一部分。
  
  對(duì)象模型中有很多類(例如,Category、leafCategory)。其中的每個(gè)類都有很多屬性和操作。例如,Category 類具有category_name 和category_description 屬性,以及add() 和remove() 操作。各個(gè)類之間也存在各種關(guān)系。例如,leafCategory 類從Category 類繼續(xù)而來(lái);compositeCategory 類具有Category 類的集合;leafCategory 類與PRodUCt_Information 類具有可導(dǎo)航的關(guān)聯(lián)(即,leafCategory 類引用Product_ Information 對(duì)象的列表)。
  
  使用UML 分析和設(shè)計(jì)應(yīng)用程序后,即可使用特定編程語(yǔ)言和永久數(shù)據(jù)存儲(chǔ)將生成的對(duì)象模型映射為目標(biāo)實(shí)施。然后,可將已實(shí)施的應(yīng)用程序部署到特定目標(biāo)體系結(jié)構(gòu)。隨著該面向?qū)ο箝_發(fā)過程的進(jìn)行,Oracle9 i 對(duì)象關(guān)系技術(shù)的優(yōu)勢(shì)逐漸顯現(xiàn)出來(lái)。如下節(jié)所述,使用Oracle9 i 的“對(duì)象類型系統(tǒng)”,可以將UML 對(duì)象模型的結(jié)構(gòu)完全一對(duì)一地映射到相應(yīng)的對(duì)象關(guān)系模式中。
  
  Oracle 的對(duì)象類型系統(tǒng)
  以前,應(yīng)用程序注重訪問和修改存儲(chǔ)在由諸如INTEGER、NUMBER、DATE 和CHAR等本地SQL 數(shù)據(jù)類型組成的表中的共同數(shù)據(jù)。
在Oracle9 i 中,不但支持這些本地類型,而且也支持新的“對(duì)象”數(shù)據(jù)類型,這是最近的ANSI SQL99 標(biāo)準(zhǔn)中的新部分。本節(jié)將簡(jiǎn)介對(duì)象關(guān)系類型系統(tǒng)的基本特性。
  
  對(duì)象類型
  Oracle 已經(jīng)擴(kuò)展了SQL(DDL 和DML),并答應(yīng)用戶定義他們自己的類型(表示他們的商務(wù)對(duì)象)以及這些類型間的關(guān)系(例如,繼續(xù)、集合)、將它們作為基本或本地類型存儲(chǔ)在數(shù)據(jù)庫(kù)中(存儲(chǔ)在表的某列中,或存儲(chǔ)為表本身),以及查詢、插入和更新它們。它們可以在一個(gè)商務(wù)對(duì)象中包括另一個(gè)商務(wù)對(duì)象、從一個(gè)商務(wù)對(duì)象指向另一個(gè)商務(wù)對(duì)象(使用稱作REF 的指針),以及使用稱作VARRAYS 和“嵌套表”的結(jié)構(gòu)訪問和操作這些對(duì)象的集合或組合。用戶可以象對(duì)象的方法一樣定義對(duì)商務(wù)對(duì)象的操作??梢匀缤琍L/SQL 存儲(chǔ)過程一樣執(zhí)行方法。對(duì)象具有全局唯一標(biāo)識(shí)符,稱作Object ID,它用來(lái)捕捉對(duì)象間的引用。
  
  與本地SQL 數(shù)據(jù)類型完全不同,對(duì)象類型是用戶定義的,并指定底層永久數(shù)據(jù)(稱作對(duì)象類型的“屬性”)和相關(guān)的行為(對(duì)象類型的“方法”)。
  
  Oracle9i 答應(yīng)用戶相關(guān)地對(duì)待對(duì)象數(shù)據(jù),同時(shí)將關(guān)系數(shù)據(jù)作為對(duì)象看待。例如,用戶可以使用SQL 按照與訪問關(guān)系數(shù)據(jù)相同的方式查詢對(duì)象數(shù)據(jù)。用戶使用擴(kuò)展的路徑表達(dá)式(例如,object.attribute)可以訪問對(duì)象(通過用于查詢的SQL DML)、對(duì)象類型屬性和方法。他們也可以使用SQL 在表中的各個(gè)對(duì)象間執(zhí)行顯式聯(lián)接。另外,通過將REF 從一個(gè)對(duì)象傳送或?qū)Ш降搅硪粋€(gè)對(duì)象,Oracle9 i答應(yīng)用戶執(zhí)行對(duì)象間的隱式聯(lián)合。對(duì)象類型可以編入索引,使用MAP 或ORDER方法將對(duì)象類型轉(zhuǎn)換為標(biāo)量值,然后可以對(duì)這些值進(jìn)行索引。
  
  Oracle9 i 的對(duì)象結(jié)構(gòu)與Oracle 客戶所熟悉的關(guān)系結(jié)構(gòu)具有緊密的對(duì)應(yīng)關(guān)系。例如,REF 與外部鍵很相似,方法是存儲(chǔ)過程(可以采用Java、PL/SQL 或C/C++來(lái)編寫它們),并且,在對(duì)象類型上操作的安全和事務(wù)方法與Oracle 為關(guān)系表定義的方法完全一樣。
   Oracle9i 對(duì)象關(guān)系技術(shù)(圖三)
  圖3 用戶定義類型答應(yīng)采用應(yīng)用程序域結(jié)構(gòu)
  對(duì)象類型系統(tǒng)從本質(zhì)上提高了編寫數(shù)據(jù)庫(kù)程序所使用的抽象級(jí)別。因?yàn)槌绦虿⒉惶幚鞱UMBER、CHAR 等,而是處理諸如Customer、Portfolio 或Money 等應(yīng)用程序域結(jié)構(gòu)。這帶來(lái)很多優(yōu)點(diǎn),并不僅僅只是在數(shù)據(jù)庫(kù)中優(yōu)化對(duì)商務(wù)的建模。
  
  對(duì)象視圖
  另外Oracle 9i答應(yīng)用戶象對(duì)待對(duì)象一樣對(duì)待關(guān)系數(shù)據(jù)。對(duì)象視圖答應(yīng)從持續(xù)存儲(chǔ)在關(guān)系表中的數(shù)據(jù)合成商務(wù)對(duì)象。具體地說(shuō),
   定義要在應(yīng)用程序中使用的對(duì)象,而不用移植任何關(guān)系數(shù)據(jù)。
   以不同的方式將為一個(gè)應(yīng)用程序開發(fā)的對(duì)象與其他應(yīng)用程序結(jié)合使用。對(duì)象視圖中的對(duì)象具有很多對(duì)象表所具有的功能。它們可以具有方法、屬于集合、指向另一個(gè)對(duì)象、具有對(duì)象身份,以及從SQL 或通過指針遍歷訪問它們。另外,Oracle 已經(jīng)擴(kuò)展視圖機(jī)制,使用非凡的INSTEAD OF 觸發(fā)器提供完全可更新的視圖。
  Oracle9i 對(duì)象關(guān)系技術(shù)(圖四)
  圖4 對(duì)象視圖為傳統(tǒng)的數(shù)據(jù)訪問增加了靈活性
  
  繼續(xù)
  類型繼續(xù)是任何面向?qū)ο笙到y(tǒng)中的基本概念。類型繼續(xù)答應(yīng)共享類型間的相似之處,并擴(kuò)展它們的特性。
  
  類型繼續(xù)答應(yīng)共享類型間的相似之處,并擴(kuò)展它們的特性。
  
  大多數(shù)面向?qū)ο髴?yīng)用程序?qū)⑺鼈兊膶?duì)象按類型組織,并將類型按類型層次組織。根據(jù)經(jīng)驗(yàn)表明,足可以將類型層次組織到一個(gè)樹集合中。這樣,單一的類型繼續(xù)足可以支持大多數(shù)應(yīng)用程序的類型組織。Java 是一種支持單一繼續(xù)的面向?qū)ο蟮木幊陶Z(yǔ)言。采用單一繼續(xù),某個(gè)類型可以擴(kuò)展(繼續(xù)自)一個(gè)超類(supertype)。這樣的類型(稱作子類/suBType)將繼續(xù)其超類的所有屬性和方法。子類也可添加新屬性和方法,或覆蓋已繼續(xù)的方法。
  
  可替換性是繼續(xù)的主要優(yōu)點(diǎn)之一??商鎿Q性是類型多態(tài)性的主要特性,類型多態(tài)性答應(yīng)在需要超類的地方(例如,方法參數(shù))使用某些子類的值,而無(wú)須提前了解子類的任何特定情況。實(shí)例可替換性指在按照超類聲明的上下文中使用子類的對(duì)象值的能力。REF 可替換性指在按照超類的REF 聲明的上下文中使用子類REF 的能力。
  
  可替換性是類型多態(tài)性的主要特性,類型多態(tài)性答應(yīng)在需要超類的地方使用某些子類的值。
  
  Oracle 支持單一類型繼續(xù)模型。這與ANSI SQL99 標(biāo)準(zhǔn)緊密結(jié)合。以下幾節(jié)將具體說(shuō)明Oracle 對(duì)繼續(xù)的支持。
  
  類型層次
  使用CREATE TYPE 語(yǔ)句創(chuàng)建層次的根類型,并應(yīng)將其聲明為NOT FINAL。
  CREATE TYPE Person_t AS OBJECT(
  name VARCHAR2(100),
  dob DATE,
  
  MEMBER FUNCTION age() RETURN number,
  MEMBER FUNCTION print() RETURN varchar2) NOT FINAL;
  可在“非最終”類型下創(chuàng)建子類。它從其超類繼續(xù)所有屬性和方法。它可添加新屬性和方法,以及/或覆蓋已繼續(xù)的方法。
  CREATE TYPE Employee_t UNDER Person_t(
  salary NUMBER,
  bonus NUMBER,
  MEMBER FUNCTION wages() RETURN number,
  OVERRIDING MEMBER FUNCTION print() RETURN varchar2);
  在“Oracle 通用模式”中,有一個(gè)更加具體的有關(guān)類型繼續(xù)層次的示例。
如圖2 所示,Category 類及其子類采用精致而簡(jiǎn)單的結(jié)構(gòu)進(jìn)行建模,表示樹狀結(jié)構(gòu)的部分與整體間的層次。該示例進(jìn)一步展示了Oracle9 i 對(duì)象類型系統(tǒng)在保留應(yīng)用程序?qū)ο竽P偷乃蟹矫嬷械闹饕獌?yōu)點(diǎn)。
  create type category_typ as object
  ( category_name varchar2(50)
  , category_description varchar2(1000)
  , category_id number(2)
  )
  NOT INSTANTIABLE NOT FINAL;
  create type subcategory_ref_list_typ as table of ref
  category_typ;
  create type product_

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岢岚县| 沂源县| 盘山县| 库伦旗| 那曲县| 宜良县| 海晏县| 思茅市| 德保县| 临沭县| 周宁县| 邻水| 新绛县| 十堰市| 疏勒县| 乌审旗| 社会| SHOW| 承德市| 高阳县| 彰化县| 镇沅| 焉耆| 民县| 罗田县| 丰台区| 玉门市| 沐川县| 宿松县| 两当县| 密山市| 麻栗坡县| 云安县| 浑源县| 小金县| 宜州市| 吉安市| 昌图县| 沙雅县| 开平市| 新邵县|