




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第八章第八章 面向?qū)ο髷?shù)據(jù)庫(kù)面向?qū)ο髷?shù)據(jù)庫(kù) 2本章主要內(nèi)容:本章主要內(nèi)容:u 面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型u 面向?qū)ο髷?shù)據(jù)庫(kù)的查詢面向?qū)ο髷?shù)據(jù)庫(kù)的查詢u 面向?qū)ο髷?shù)據(jù)庫(kù)的并發(fā)控制面向?qū)ο髷?shù)據(jù)庫(kù)的并發(fā)控制u 面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)u 對(duì)象對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)38.1 8.1 新應(yīng)用的需求新應(yīng)用的需求和傳統(tǒng)數(shù)據(jù)庫(kù)的局限性和傳統(tǒng)數(shù)據(jù)庫(kù)的局限性關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的不足:關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的不足: (1)(1)關(guān)系模型結(jié)構(gòu)簡(jiǎn)單,不能很好模擬復(fù)雜對(duì)象關(guān)系模型結(jié)構(gòu)簡(jiǎn)單,不能很好模擬復(fù)雜對(duì)象 (2) (2)數(shù)據(jù)類型簡(jiǎn)單,沒(méi)有定義抽象數(shù)據(jù)類型數(shù)據(jù)類型簡(jiǎn)單,沒(méi)有定義抽象數(shù)據(jù)類型的能
2、力的能力 (3) (3)結(jié)構(gòu)與行為完全分離,使數(shù)據(jù)庫(kù)中的信息僅能結(jié)構(gòu)與行為完全分離,使數(shù)據(jù)庫(kù)中的信息僅能由識(shí)別他們的應(yīng)用程序解釋執(zhí)行;由識(shí)別他們的應(yīng)用程序解釋執(zhí)行; (4) (4)查詢實(shí)現(xiàn)復(fù)雜,連接優(yōu)化降低了存取效率。查詢實(shí)現(xiàn)復(fù)雜,連接優(yōu)化降低了存取效率。下下4 OODB vs RDB5 89年年1月,在美國(guó)月,在美國(guó)ANSI /X3/SPARC的數(shù)據(jù)庫(kù)系統(tǒng)研究的數(shù)據(jù)庫(kù)系統(tǒng)研究組組(DBSSG)下成立了面向?qū)ο髷?shù)據(jù)庫(kù)任務(wù)組下成立了面向?qū)ο髷?shù)據(jù)庫(kù)任務(wù)組(OODBTG),專門(mén)對(duì)對(duì)象數(shù)據(jù)管理的標(biāo)準(zhǔn)化進(jìn)行了研究。專門(mén)對(duì)對(duì)象數(shù)據(jù)管理的標(biāo)準(zhǔn)化進(jìn)行了研究。90年高級(jí)年高級(jí)DBMS功能委員會(huì)發(fā)表了功能委員會(huì)發(fā)
3、表了第三代數(shù)據(jù)庫(kù)系統(tǒng)宣言第三代數(shù)據(jù)庫(kù)系統(tǒng)宣言的文的文章,文章中提出了第三代章,文章中提出了第三代DBMS應(yīng)具有的基本特征:應(yīng)具有的基本特征: (1)支持面向?qū)ο蟮臄?shù)據(jù)模型,支持復(fù)雜數(shù)據(jù)類型;支持面向?qū)ο蟮臄?shù)據(jù)模型,支持復(fù)雜數(shù)據(jù)類型; (2)具有第二代數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn),即高效、安全、方便具有第二代數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn),即高效、安全、方便 (3)具有開(kāi)放性,即支持?jǐn)?shù)據(jù)庫(kù)標(biāo)準(zhǔn)具有開(kāi)放性,即支持?jǐn)?shù)據(jù)庫(kù)標(biāo)準(zhǔn)(SQL)、網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò)協(xié)議、適應(yīng)多種軟硬件平臺(tái)適應(yīng)多種軟硬件平臺(tái) 。68.2 8.2 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言l面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)u支持模塊化設(shè)計(jì)支持模塊化設(shè)
4、計(jì)l以主體數(shù)據(jù)(對(duì)象)為中心,以數(shù)據(jù)上的操作作為界以主體數(shù)據(jù)(對(duì)象)為中心,以數(shù)據(jù)上的操作作為界面進(jìn)行設(shè)計(jì)(結(jié)構(gòu)化的方法:數(shù)據(jù)輸入處理數(shù)據(jù)面進(jìn)行設(shè)計(jì)(結(jié)構(gòu)化的方法:數(shù)據(jù)輸入處理數(shù)據(jù)輸出)輸出)u軟件復(fù)用軟件復(fù)用 l對(duì)象封裝使程序員可以通過(guò)界面理解和操作對(duì)象對(duì)象封裝使程序員可以通過(guò)界面理解和操作對(duì)象l對(duì)象繼承允許對(duì)象實(shí)現(xiàn)復(fù)用具有相同特征的其它對(duì)象代碼對(duì)象繼承允許對(duì)象實(shí)現(xiàn)復(fù)用具有相同特征的其它對(duì)象代碼u 軟件維護(hù)軟件維護(hù)l面向?qū)ο蟮能浖_(kāi)發(fā),從分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等階段面向?qū)ο蟮能浖_(kāi)發(fā),從分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等階段都是基于對(duì)象的概念,在開(kāi)發(fā)和維護(hù)階段,軟件系統(tǒng)的結(jié)都是基于對(duì)象的概念,在開(kāi)發(fā)和
5、維護(hù)階段,軟件系統(tǒng)的結(jié)構(gòu)都是一致的,易于維護(hù)。構(gòu)都是一致的,易于維護(hù)。7l面向?qū)ο蟪绦蛟O(shè)計(jì)方法在計(jì)算機(jī)多個(gè)領(lǐng)域產(chǎn)生深遠(yuǎn)影響面向?qū)ο蟪绦蛟O(shè)計(jì)方法在計(jì)算機(jī)多個(gè)領(lǐng)域產(chǎn)生深遠(yuǎn)影響u程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言u(píng)人工智能人工智能u軟件工程軟件工程u信息系統(tǒng)設(shè)計(jì)信息系統(tǒng)設(shè)計(jì)u計(jì)算機(jī)硬件設(shè)計(jì)計(jì)算機(jī)硬件設(shè)計(jì)u數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)l面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng):面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng):ObjectStore、O2、Orion、Versant、Gemstone、Itasca8 面相對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)在許多應(yīng)用中取得了進(jìn)展:面相對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)在許多應(yīng)用中取得了進(jìn)展: (1)計(jì)算機(jī)輔助設(shè)計(jì)與制造(計(jì)算機(jī)輔助設(shè)計(jì)與制造(CAD/CAM);); (2
6、)計(jì)算機(jī)集成制造(計(jì)算機(jī)集成制造(CIM);); (3)計(jì)算機(jī)輔助軟件工程(計(jì)算機(jī)輔助軟件工程(CASE);); (4)地理信息系統(tǒng)(地理信息系統(tǒng)(GIS);); (5)企業(yè)資源規(guī)劃(企業(yè)資源規(guī)劃(ERP); (6)能源管理系統(tǒng)(能源管理系統(tǒng)(EMS)。)。9lOO數(shù)據(jù)模型數(shù)據(jù)模型u用面向?qū)ο蟮挠^點(diǎn)描述現(xiàn)實(shí)世界對(duì)象的邏輯組織、用面向?qū)ο蟮挠^點(diǎn)描述現(xiàn)實(shí)世界對(duì)象的邏輯組織、對(duì)象之間的限制、聯(lián)系的模型稱為對(duì)象之間的限制、聯(lián)系的模型稱為OO數(shù)據(jù)模型。數(shù)據(jù)模型。lOO模型的核心概念模型的核心概念u對(duì)象對(duì)象l屬性集合屬性集合 描述對(duì)象的狀態(tài)、組成和特征描述對(duì)象的狀態(tài)、組成和特征l方法集合方法集合 描述對(duì)象
7、的行為特征描述對(duì)象的行為特征l消息集合消息集合 是對(duì)象向外提供的界面,由對(duì)象接是對(duì)象向外提供的界面,由對(duì)象接收和響應(yīng)收和響應(yīng)簡(jiǎn)單對(duì)象、簡(jiǎn)單對(duì)象、 復(fù)雜對(duì)象復(fù)雜對(duì)象8.3 8.3 面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型10u對(duì)象標(biāo)識(shí)對(duì)象標(biāo)識(shí)l每個(gè)對(duì)象都有一個(gè)內(nèi)部標(biāo)識(shí)符每個(gè)對(duì)象都有一個(gè)內(nèi)部標(biāo)識(shí)符OID,OID在整個(gè)在整個(gè)系統(tǒng)中系統(tǒng)中 是唯一的,一旦生成就不能改變。是唯一的,一旦生成就不能改變。uOID的表示的表示l值標(biāo)識(shí)值標(biāo)識(shí) 由對(duì)象的屬性組成對(duì)象標(biāo)識(shí)由對(duì)象的屬性組成對(duì)象標(biāo)識(shí)l 指針標(biāo)識(shí)指針標(biāo)識(shí) 指向物理存儲(chǔ)位置的指針作為對(duì)象標(biāo)識(shí)指向物理存儲(chǔ)位置的指針作為對(duì)象標(biāo)識(shí)l代用品法(代用品法(surrogate
8、surrogate),),與對(duì)象的內(nèi)部屬性無(wú)關(guān)。與對(duì)象的內(nèi)部屬性無(wú)關(guān)。 11u封裝封裝l每個(gè)對(duì)象都是其狀態(tài)和行為的封裝體。每個(gè)對(duì)象都是其狀態(tài)和行為的封裝體。u類類 l 具有相同特征對(duì)象的集合;對(duì)象為類中的實(shí)例。具有相同特征對(duì)象的集合;對(duì)象為類中的實(shí)例。l 類本身看作對(duì)象,稱為類對(duì)象。類本身看作對(duì)象,稱為類對(duì)象。l面向?qū)ο髷?shù)據(jù)庫(kù)模式是類的集合,形成類層次結(jié)構(gòu)面向?qū)ο髷?shù)據(jù)庫(kù)模式是類的集合,形成類層次結(jié)構(gòu)u類層次類層次l一組相關(guān)類形成類層次結(jié)構(gòu)一組相關(guān)類形成類層次結(jié)構(gòu)l子類、超類子類、超類l子類和超類的關(guān)系體現(xiàn)了子類和超類的關(guān)系體現(xiàn)了“is A”is A”的語(yǔ)義的語(yǔ)義12 人人 教職工教職工 學(xué)生學(xué)
9、生 教師教師 行政人員行政人員 工人工人 本科生本科生 研究生研究生助教助教 講師講師 教授教授 類層次的例子類層次的例子在職研究生在職研究生u類層次類層次 l一組相關(guān)類形成類層次結(jié)構(gòu)一組相關(guān)類形成類層次結(jié)構(gòu)l子類、超類子類、超類l子類和超類的關(guān)系體現(xiàn)了子類和超類的關(guān)系體現(xiàn)了“is A”is A”的語(yǔ)義的語(yǔ)義13u繼承繼承 子類和超類間具有繼承關(guān)系子類和超類間具有繼承關(guān)系l子類繼承超類的屬性和方法。子類繼承超類的屬性和方法。l單繼承和單繼承和多繼承多繼承l(wèi) 解決同名沖突的方法:解決同名沖突的方法: 子類與超類間的同名沖突子類與超類間的同名沖突按子類優(yōu)先處理按子類優(yōu)先處理; 多個(gè)超類間的同名沖突
10、,多個(gè)超類間的同名沖突,按說(shuō)明超類的先后取第一按說(shuō)明超類的先后取第一個(gè)超類中的定義個(gè)超類中的定義 或或 規(guī)定繼承的超類;規(guī)定繼承的超類; 提供顯式方法提供顯式方法: : 從多個(gè)沖突的實(shí)例變量或方法中繼從多個(gè)沖突的實(shí)例變量或方法中繼承一個(gè);繼承多個(gè),在類定義中重新命名。承一個(gè);繼承多個(gè),在類定義中重新命名。14u多態(tài)性多態(tài)性l 同一操作有不同的實(shí)現(xiàn),取決于具體對(duì)象。如同一操作有不同的實(shí)現(xiàn),取決于具體對(duì)象。如“”法法 u滯后聯(lián)編滯后聯(lián)編l對(duì)對(duì)象操作的編譯推遲到運(yùn)行時(shí)實(shí)現(xiàn),稱滯后聯(lián)編。對(duì)對(duì)象操作的編譯推遲到運(yùn)行時(shí)實(shí)現(xiàn),稱滯后聯(lián)編。 例:在同一個(gè)超類的不同子類上執(zhí)行同一個(gè)操作。例:在同一個(gè)超類的不同子
11、類上執(zhí)行同一個(gè)操作。 如同一個(gè)顯示操作可以顯示不同的數(shù)據(jù)類型:如同一個(gè)顯示操作可以顯示不同的數(shù)據(jù)類型: 人的信息、圖象人的信息、圖象u對(duì)象的嵌套對(duì)象的嵌套l復(fù)合類層次結(jié)構(gòu)復(fù)合類層次結(jié)構(gòu) 書(shū):書(shū)號(hào)、書(shū)名、書(shū):書(shū)號(hào)、書(shū)名、作者作者、出版社出版社、出版日期。、出版日期。 作者:作者名、地址、電話作者:作者名、地址、電話 出版社:出版社名、地址、負(fù)責(zé)人出版社:出版社名、地址、負(fù)責(zé)人15 一般提供:一般提供: 對(duì)單一類中對(duì)象的查詢對(duì)單一類中對(duì)象的查詢 以類為根的類層次上的查詢。以類為根的類層次上的查詢。 二類索引:二類索引: 類層次索引類層次索引 嵌套屬性索引嵌套屬性索引 8.4 8.4 面向?qū)ο髷?shù)據(jù)庫(kù)
12、系統(tǒng)的查詢面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的查詢16 類層次索引類層次索引 建立在類建立在類C C的屬性的屬性A A上的一個(gè)類層次上的一個(gè)類層次索引,是以該類為根的類層次中所有類在屬性索引,是以該類為根的類層次中所有類在屬性A A上的單一上的單一索引,屬性索引,屬性A A稱為稱為索引屬性索引屬性,類,類C C稱為稱為索引類索引類。 在單一類在單一類上建立的索引稱為單一索引。上建立的索引稱為單一索引。 8.4 8.4 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的查詢面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的查詢 人人 教職工教職工 學(xué)生學(xué)生 教師教師 行政人員行政人員 工人工人 本科生本科生 研究生研究生教職工教職工:職務(wù)、工資、:職務(wù)、工資、參加工作時(shí)
13、間參加工作時(shí)間17 嵌套屬性索引嵌套屬性索引 在復(fù)合類層次的某個(gè)類的屬在復(fù)合類層次的某個(gè)類的屬性上建立索引。這種索引是以索引類為根的類復(fù)合性上建立索引。這種索引是以索引類為根的類復(fù)合層次中某個(gè)類的屬性,該屬性稱為索引類的嵌套屬層次中某個(gè)類的屬性,該屬性稱為索引類的嵌套屬性。性。 書(shū):書(shū)號(hào)、書(shū)名、書(shū):書(shū)號(hào)、書(shū)名、作者作者、出版社出版社、出版日期。、出版日期。 作者:作者:作者名作者名、地址、電話、地址、電話 出版社:出版社名、地址出版社:出版社名、地址 若在若在auth_nameauth_name上建立上建立bookbook的嵌套屬性索引,可的嵌套屬性索引,可找到某個(gè)作者的所有書(shū),以加快查找速度
14、。找到某個(gè)作者的所有書(shū),以加快查找速度。 下下18定義圖書(shū)類:定義圖書(shū)類: class book book_no: string; book_name: string; written_by: author; publisher_by: publisher; date_of_publation: date; new(); ; class author ; class publisher ;19 OODB語(yǔ)言標(biāo)準(zhǔn),大多采用了擴(kuò)充語(yǔ)言標(biāo)準(zhǔn),大多采用了擴(kuò)充SQL語(yǔ)言的方法,語(yǔ)言的方法,稱為稱為OSQL。例:例: 檢索作者為嚴(yán)亮的檢索作者為嚴(yán)亮的“數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理”書(shū)的出版社名。書(shū)的出版社名。SE
15、LECT b. published_by.publi_name FROM b IN book WHERE b.book_name = “數(shù)據(jù)庫(kù)原理數(shù)據(jù)庫(kù)原理” AND b. written_by.auth_name = “嚴(yán)亮嚴(yán)亮”;8.4 8.4 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的查詢面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的查詢( (續(xù)續(xù)) )20在在OODBSOODBS中的更新處理:中的更新處理: (1) (1)當(dāng)一個(gè)事務(wù)訪問(wèn)某個(gè)類的實(shí)例時(shí)其它事務(wù)不能對(duì)這當(dāng)一個(gè)事務(wù)訪問(wèn)某個(gè)類的實(shí)例時(shí)其它事務(wù)不能對(duì)這個(gè)類的任何超類進(jìn)行修改。個(gè)類的任何超類進(jìn)行修改。 (2) (2) 一個(gè)事務(wù)在查詢計(jì)算時(shí)其它事務(wù)也不能修改該類的一個(gè)事務(wù)在查詢計(jì)
16、算時(shí)其它事務(wù)也不能修改該類的所有子類。所有子類。 查詢一個(gè)類時(shí)要對(duì)該類和所有子類進(jìn)行評(píng)估。查詢一個(gè)類時(shí)要對(duì)該類和所有子類進(jìn)行評(píng)估。 在在OODBMSOODBMS中需要提供更復(fù)雜的鎖機(jī)制,需要鎖更多的中需要提供更復(fù)雜的鎖機(jī)制,需要鎖更多的語(yǔ)義信息。語(yǔ)義信息。8.5 8.5 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的并發(fā)控制面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的并發(fā)控制218.5 8.5 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的并發(fā)控制面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)的并發(fā)控制 多粒度鎖,鎖的粒度有:多粒度鎖,鎖的粒度有: RDBSRDBS中的中的鎖粒度鎖粒度: 邏輯單元(屬性、元組、表、數(shù)據(jù)庫(kù)),邏輯單元(屬性、元組、表、數(shù)據(jù)庫(kù)),物理單元(數(shù)據(jù)頁(yè)、索引頁(yè)、數(shù)據(jù)塊)。
17、物理單元(數(shù)據(jù)頁(yè)、索引頁(yè)、數(shù)據(jù)塊)。 OODBMSOODBMS中中鎖的粒度鎖的粒度: 數(shù)據(jù)庫(kù)、類、對(duì)象、屬性、物理頁(yè)等。數(shù)據(jù)庫(kù)、類、對(duì)象、屬性、物理頁(yè)等。22多粒度多粒度封鎖封鎖u允許類層次中的每個(gè)結(jié)點(diǎn)單獨(dú)加鎖允許類層次中的每個(gè)結(jié)點(diǎn)單獨(dú)加鎖u對(duì)一個(gè)結(jié)點(diǎn)加鎖,其下層結(jié)點(diǎn)也被加以同樣類對(duì)一個(gè)結(jié)點(diǎn)加鎖,其下層結(jié)點(diǎn)也被加以同樣類型的隱式鎖。型的隱式鎖。l在多粒度封鎖中一個(gè)數(shù)據(jù)對(duì)象可以兩種方式封鎖:在多粒度封鎖中一個(gè)數(shù)據(jù)對(duì)象可以兩種方式封鎖:顯式封鎖和隱式封鎖顯式封鎖和隱式封鎖23 多粒度封鎖多粒度封鎖l顯式封鎖顯式封鎖u通過(guò)上鎖命令(通過(guò)上鎖命令(LOCK)直接加到數(shù)據(jù)對(duì)象直接加到數(shù)據(jù)對(duì)象上的封鎖;上
18、的封鎖;l隱式封鎖隱式封鎖u該數(shù)據(jù)對(duì)象沒(méi)有獨(dú)立加鎖,是由于其上級(jí)結(jié)該數(shù)據(jù)對(duì)象沒(méi)有獨(dú)立加鎖,是由于其上級(jí)結(jié)點(diǎn)加鎖而使該數(shù)據(jù)對(duì)象隱式加了鎖。點(diǎn)加鎖而使該數(shù)據(jù)對(duì)象隱式加了鎖。 u隱式鎖和顯式鎖的作用是一樣的隱式鎖和顯式鎖的作用是一樣的24對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖 時(shí)系統(tǒng)檢查的內(nèi)容時(shí)系統(tǒng)檢查的內(nèi)容l 該數(shù)據(jù)對(duì)象該數(shù)據(jù)對(duì)象u有無(wú)顯式封鎖與之沖突有無(wú)顯式封鎖與之沖突l 所有上級(jí)結(jié)點(diǎn)所有上級(jí)結(jié)點(diǎn)u檢查本事務(wù)的顯式封鎖是否與該數(shù)據(jù)對(duì)象上的隱檢查本事務(wù)的顯式封鎖是否與該數(shù)據(jù)對(duì)象上的隱式封鎖沖突:式封鎖沖突:(由上級(jí)結(jié)點(diǎn)封鎖造成的)由上級(jí)結(jié)點(diǎn)封鎖造成的)l所有下級(jí)結(jié)點(diǎn)所有下級(jí)結(jié)點(diǎn)u看上面的顯式封鎖是否
19、與本事務(wù)的隱式封鎖看上面的顯式封鎖是否與本事務(wù)的隱式封鎖( 加到下級(jí)結(jié)點(diǎn)的封鎖)加到下級(jí)結(jié)點(diǎn)的封鎖)沖突。沖突。25意向鎖意向鎖(intention lock)例:事務(wù)例:事務(wù)T對(duì)類對(duì)類C 加加X(jué)鎖,系統(tǒng)必須檢查其所有超類鎖,系統(tǒng)必須檢查其所有超類結(jié)點(diǎn)有無(wú)沖突、所有子類有無(wú)沖突,如果有沖突結(jié)點(diǎn)有無(wú)沖突、所有子類有無(wú)沖突,如果有沖突,則,則T等待。等待。引進(jìn)意向鎖目的引進(jìn)意向鎖目的提高對(duì)數(shù)據(jù)對(duì)象加鎖時(shí)系統(tǒng)的檢查效率提高對(duì)數(shù)據(jù)對(duì)象加鎖時(shí)系統(tǒng)的檢查效率 引入意向鎖,在某對(duì)象實(shí)例上加引入意向鎖,在某對(duì)象實(shí)例上加S或或X鎖前,先在其鎖前,先在其祖先結(jié)點(diǎn)上加意向鎖祖先結(jié)點(diǎn)上加意向鎖 ,事務(wù),事務(wù)T對(duì)類對(duì)類
20、C請(qǐng)求請(qǐng)求 加加X(jué)鎖時(shí),鎖時(shí),只要檢查該類上的意向鎖即可。只要檢查該類上的意向鎖即可。26l什么是意向鎖什么是意向鎖u對(duì)任一結(jié)點(diǎn)加基本鎖,必須先對(duì)它的上層結(jié)對(duì)任一結(jié)點(diǎn)加基本鎖,必須先對(duì)它的上層結(jié)點(diǎn)加意向鎖點(diǎn)加意向鎖u如果對(duì)一個(gè)結(jié)點(diǎn)加意向鎖,則說(shuō)明該結(jié)點(diǎn)的如果對(duì)一個(gè)結(jié)點(diǎn)加意向鎖,則說(shuō)明該結(jié)點(diǎn)的下層結(jié)點(diǎn)正在被加鎖下層結(jié)點(diǎn)正在被加鎖 意向鎖意向鎖 27常用意向鎖常用意向鎖l意向共享鎖意向共享鎖( (Intent Share LockIntent Share Lock,簡(jiǎn)稱簡(jiǎn)稱ISIS鎖鎖) )l意向排它鎖意向排它鎖( (Intent Exclusive LockIntent Exclusive Lo
21、ck,簡(jiǎn)稱簡(jiǎn)稱IXIX鎖鎖) )l共享意向排它鎖共享意向排它鎖( (Share Intent Exclusive LockShare Intent Exclusive Lock,簡(jiǎn)簡(jiǎn)稱稱SIXSIX鎖鎖) )28l意向鎖意向鎖: : ISIS、IXIX、SIXSIX 意向共享鎖意向共享鎖(IS): 對(duì)一個(gè)數(shù)據(jù)對(duì)象加對(duì)一個(gè)數(shù)據(jù)對(duì)象加IS鎖,表示事務(wù)可能對(duì)類中的實(shí)例鎖,表示事務(wù)可能對(duì)類中的實(shí)例顯式請(qǐng)求顯式請(qǐng)求S鎖。鎖。意向排它鎖意向排它鎖(IX):在類上加在類上加IX鎖表示事務(wù)可能對(duì)類中實(shí)例顯式請(qǐng)求鎖表示事務(wù)可能對(duì)類中實(shí)例顯式請(qǐng)求X或或S鎖。鎖。 意向鎖意向鎖 29 共享意向排它鎖共享意向排它鎖(
22、SIX) SIX=S+IX,在類上加在類上加SIX鎖表示對(duì)類中所有實(shí)例都隱鎖表示對(duì)類中所有實(shí)例都隱式地加了式地加了S鎖。表示該事務(wù)要讀類中實(shí)例,還可能對(duì)一些鎖。表示該事務(wù)要讀類中實(shí)例,還可能對(duì)一些實(shí)例請(qǐng)求實(shí)例請(qǐng)求X鎖。因此,僅允許其它事務(wù)讀但不允許更新類鎖。因此,僅允許其它事務(wù)讀但不允許更新類中的實(shí)例。中的實(shí)例。 SIX鎖的引入是必要的。合適于需要查詢類中的大量實(shí)鎖的引入是必要的。合適于需要查詢類中的大量實(shí)例而僅更新少數(shù)實(shí)例的情況。例而僅更新少數(shù)實(shí)例的情況。 否則,若僅加否則,若僅加IX鎖,對(duì)只鎖,對(duì)只需讀操作的那些實(shí)例為防止其它事務(wù)寫(xiě)都要加需讀操作的那些實(shí)例為防止其它事務(wù)寫(xiě)都要加S鎖,增加鎖
23、,增加了鎖的開(kāi)銷。了鎖的開(kāi)銷。 30 共享鎖共享鎖(S): 加加S鎖表示該事務(wù)讀類中實(shí)例鎖表示該事務(wù)讀類中實(shí)例。 排它鎖排它鎖(X):該事務(wù)要修改類中的實(shí)例,請(qǐng)?jiān)撌聞?wù)要修改類中的實(shí)例,請(qǐng)求求X鎖。鎖。31 鎖鎖 類類 型型 的的 相容性相容性 矩陣矩陣 S XIS IX SIX SYNYNNXNNNNNISYNYYYIXNNYYNSIX NNYNNX XSIXSIXS IXS IXISIS鎖強(qiáng)度的關(guān)系鎖強(qiáng)度的關(guān)系32在在OODBS中多粒度加鎖的規(guī)則:中多粒度加鎖的規(guī)則: (1). 若事務(wù)對(duì)類層次中的某個(gè)粒度上加若事務(wù)對(duì)類層次中的某個(gè)粒度上加S鎖,則在其所鎖,則在其所有祖先上都要加有祖先上都要加
24、IS鎖。鎖。 (2). 若事務(wù)對(duì)類層次中的某個(gè)粒度上加若事務(wù)對(duì)類層次中的某個(gè)粒度上加X(jué)鎖,在該粒度鎖,在該粒度的所有祖先粒度上要加的所有祖先粒度上要加IX鎖或鎖或SIX鎖。鎖。 (3). 若事務(wù)已獲得對(duì)一個(gè)類的某個(gè)鎖,則該類的所有子若事務(wù)已獲得對(duì)一個(gè)類的某個(gè)鎖,則該類的所有子孫也隱含獲得同樣的鎖。孫也隱含獲得同樣的鎖。 (4). 加鎖從類層次的根開(kāi)始依此往下進(jìn)行直到事務(wù)申請(qǐng)加鎖從類層次的根開(kāi)始依此往下進(jìn)行直到事務(wù)申請(qǐng)鎖的那個(gè)粒度,而解鎖時(shí)的順序則是由下而上的。鎖的那個(gè)粒度,而解鎖時(shí)的順序則是由下而上的。 33 例:例: 已知學(xué)校人員的類層次結(jié)構(gòu),若事務(wù)已知學(xué)校人員的類層次結(jié)構(gòu),若事務(wù)T要修改要
25、修改李偉峰教授的屬性值,則不同層次的加鎖順序和鎖類型。李偉峰教授的屬性值,則不同層次的加鎖順序和鎖類型。 (1) 給類人加給類人加IX鎖,鎖,(2) 給類教職工加給類教職工加IX鎖,鎖,(3) 給類教師加給類教師加IX鎖,鎖,(4) 給類教授加給類教授加IX鎖,鎖,(5) 給對(duì)象李偉峰加給對(duì)象李偉峰加X(jué)鎖。鎖。 解鎖的順序:李偉峰、教授、教師、教職工、人。解鎖的順序:李偉峰、教授、教師、教職工、人。 若要查詢其他教授的信息,則對(duì)類教授改加若要查詢其他教授的信息,則對(duì)類教授改加SIX鎖其鎖其它鎖不變。它鎖不變。 34 ORACLE的鎖:的鎖:(1)RS 行共享鎖行共享鎖 可以上可以上SRX、RS
26、、RX、S鎖鎖 LOCK TABLE IN ROW SHARE MODE (2)RX 行排它鎖行排它鎖 可以上可以上RS、RX鎖鎖 LOCK TABLE IN ROW EXCLUSIVE MODE (3) S 共享表鎖共享表鎖 可以上可以上RS、S鎖鎖 LOCK TABLE IN SHARE MODE(4)SRX 共享行排它表鎖共享行排它表鎖 可以上可以上RS鎖鎖 LOCK TABLE IN SHARE ROW EXCLUSIVE MODE(5)X 排它表鎖排它表鎖 LOCK TABLE IN EXCLUSIVE MODE35 8.6 ORION8.6 ORION的的系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu) 消息處理
27、子系統(tǒng)。消息處理子系統(tǒng)。 負(fù)責(zé)處理發(fā)給負(fù)責(zé)處理發(fā)給 對(duì)象的所有消息;對(duì)象的所有消息;(2) (2) 對(duì)象子系統(tǒng)。對(duì)象子系統(tǒng)。 對(duì)象的存取操作、版本管理、查詢優(yōu)化、多媒體信息管理;對(duì)象的存取操作、版本管理、查詢優(yōu)化、多媒體信息管理;(3) (3) 事務(wù)管理子系統(tǒng)。事務(wù)管理子系統(tǒng)。 提供并發(fā)控制和恢復(fù)機(jī)制;提供并發(fā)控制和恢復(fù)機(jī)制;(4) (4) 存儲(chǔ)子系統(tǒng)。存儲(chǔ)子系統(tǒng)。 該子系統(tǒng)包括頁(yè)緩沖區(qū)管理和磁盤(pán)管理二個(gè)子系統(tǒng)該子系統(tǒng)包括頁(yè)緩沖區(qū)管理和磁盤(pán)管理二個(gè)子系統(tǒng),負(fù)責(zé)存儲(chǔ)在磁盤(pán)上對(duì)象的存取。,負(fù)責(zé)存儲(chǔ)在磁盤(pán)上對(duì)象的存取。 對(duì)象子系統(tǒng)對(duì)象子系統(tǒng)事務(wù)管理子系統(tǒng)事務(wù)管理子系統(tǒng) 存儲(chǔ)子系統(tǒng)存儲(chǔ)子系統(tǒng) 磁盤(pán)段管
28、理磁盤(pán)段管理頁(yè)緩沖管理頁(yè)緩沖管理消息處理子系統(tǒng)消息處理子系統(tǒng)36 8.6.1 ORION的數(shù)據(jù)模型的數(shù)據(jù)模型ORIONORION支持面向?qū)ο蟮暮诵母拍睿褐С置嫦驅(qū)ο蟮暮诵母拍睿?對(duì)象、類、消息、方法。對(duì)象、類、消息、方法。ORIONORION采用多重繼承,一個(gè)類可以有多個(gè)超類。采用多重繼承,一個(gè)類可以有多個(gè)超類。解決同名沖突的方法:解決同名沖突的方法: (1) (1) 類與超類間的同名沖突按子類優(yōu)先處理;類與超類間的同名沖突按子類優(yōu)先處理; (2) (2) 多個(gè)超類間的同名沖突,按說(shuō)明超類的先后取多個(gè)超類間的同名沖突,按說(shuō)明超類的先后取第一個(gè)超類中的定義;第一個(gè)超類中的定義; (3) (3)
29、提供顯式方法提供顯式方法: : 從多個(gè)沖突的實(shí)例變量或方法從多個(gè)沖突的實(shí)例變量或方法中繼承一個(gè);繼承多個(gè),在類定義中重新命名。中繼承一個(gè);繼承多個(gè),在類定義中重新命名。 37 ORIONORION中定義中定義ObjectObject作為類層次結(jié)構(gòu)的根作為類層次結(jié)構(gòu)的根用戶定義類用戶定義類 Object 系統(tǒng)定義類系統(tǒng)定義類 Vehicle Ptype Collection Integer String Set Air Water LandVehicle Vehicle Vehicle Set of Vehicle Set of Ptype Set ofIntegerSet ofString S
30、et ofAir Vehicle Set ofLand Vehicle Set ofWater Vehicle38 8.6.2 復(fù)合對(duì)象復(fù)合對(duì)象ORION中的對(duì)象有:中的對(duì)象有:復(fù)合對(duì)象、依賴對(duì)象、獨(dú)立對(duì)象復(fù)合對(duì)象、依賴對(duì)象、獨(dú)立對(duì)象 復(fù)合對(duì)象:一個(gè)對(duì)象全部或部分由多個(gè)依賴對(duì)象組成。復(fù)合對(duì)象:一個(gè)對(duì)象全部或部分由多個(gè)依賴對(duì)象組成。 依賴對(duì)象:一個(gè)對(duì)象的存在依賴于另一個(gè)對(duì)象。依賴對(duì)象:一個(gè)對(duì)象的存在依賴于另一個(gè)對(duì)象。 依賴對(duì)象只能由一個(gè)對(duì)象所依賴對(duì)象只能由一個(gè)對(duì)象所擁有擁有。例如,裝在車上的發(fā)。例如,裝在車上的發(fā)動(dòng)機(jī)只能為一輛汽車所有,是依賴于汽車的。動(dòng)機(jī)只能為一輛汽車所有,是依賴于汽車的。 獨(dú)
31、立對(duì)象:獨(dú)立于其它對(duì)象存在的對(duì)象,可以被其它對(duì)獨(dú)立對(duì)象:獨(dú)立于其它對(duì)象存在的對(duì)象,可以被其它對(duì)象所象所引用引用。 計(jì)算機(jī):主機(jī),外設(shè),生產(chǎn)廠計(jì)算機(jī):主機(jī),外設(shè),生產(chǎn)廠 主主 機(jī):機(jī):CPU,內(nèi)存,硬盤(pán),軟盤(pán)內(nèi)存,硬盤(pán),軟盤(pán) 外外 設(shè):顯示器,鍵盤(pán),打印機(jī)設(shè):顯示器,鍵盤(pán),打印機(jī)398.6.3 模式進(jìn)化模式進(jìn)化 模式進(jìn)化模式進(jìn)化(schema evolution) 修改數(shù)據(jù)庫(kù)模式:修改數(shù)據(jù)庫(kù)模式: 修改類結(jié)構(gòu)修改類結(jié)構(gòu)、類格的繼承結(jié)構(gòu)類格的繼承結(jié)構(gòu)類定義的修改類定義的修改 對(duì)實(shí)例變量和方法的修改;對(duì)實(shí)例變量和方法的修改; 增刪屬性和方法。增刪屬性和方法。對(duì)類格的修改對(duì)類格的修改 增、刪一個(gè)類或超
32、類,增、刪一個(gè)類或超類, 改變類名或改變類名或改變超類名的順序。改變超類名的順序。 人人 教職工教職工 學(xué)生學(xué)生 教師教師 行政人員行政人員 本科生本科生 研究生研究生408.6.3 模式進(jìn)化模式進(jìn)化ORIONORION為動(dòng)態(tài)修改數(shù)據(jù)庫(kù)模式的功能提供了一為動(dòng)態(tài)修改數(shù)據(jù)庫(kù)模式的功能提供了一組約束規(guī)則:組約束規(guī)則: (1)(1)模式進(jìn)化操作分類模式進(jìn)化操作分類 (2) 模式進(jìn)化的不變性模式進(jìn)化的不變性(一致性一致性) (3) 模式進(jìn)化規(guī)則模式進(jìn)化規(guī)則 41 (1)(1)模式進(jìn)化操作分類模式進(jìn)化操作分類 類格結(jié)點(diǎn)內(nèi)容的修改類格結(jié)點(diǎn)內(nèi)容的修改( (增刪變量和方法增刪變量和方法) ) 邊的修改邊的修改(
33、 (超類子類關(guān)系的修改超類子類關(guān)系的修改) ) 結(jié)點(diǎn)的修改結(jié)點(diǎn)的修改( (增刪類、改類名增刪類、改類名) ) (2) 模式進(jìn)化的不變性模式進(jìn)化的不變性 模式修改后保持成立的特性(模式一致性模式修改后保持成立的特性(模式一致性: 模式內(nèi)部模式內(nèi)部的一致性約束的一致性約束) 同一類中的類名、變量名和方法名的唯一性同一類中的類名、變量名和方法名的唯一性 被引用的類、操作和實(shí)現(xiàn)必須存在被引用的類、操作和實(shí)現(xiàn)必須存在 子類子類/超類不能有環(huán)、多繼承不能有沖突超類不能有環(huán)、多繼承不能有沖突42(3) 模式進(jìn)化規(guī)則模式進(jìn)化規(guī)則 沖突解決規(guī)則沖突解決規(guī)則 發(fā)生命名沖突時(shí)的繼承規(guī)則發(fā)生命名沖突時(shí)的繼承規(guī)則 性質(zhì)
34、傳播性質(zhì)傳播(修改傳播修改傳播)規(guī)則規(guī)則 修改超類結(jié)果傳播給子類修改超類結(jié)果傳播給子類 DAG操縱規(guī)則操縱規(guī)則 對(duì)類格修改的規(guī)則:增加一個(gè)子類的超類,對(duì)類格修改的規(guī)則:增加一個(gè)子類的超類,該超類排在所有超類的最后該超類排在所有超類的最后438.6.4 版本管理版本管理 版本版本 類對(duì)象版本、實(shí)例對(duì)象版本類對(duì)象版本、實(shí)例對(duì)象版本 ORION提供二類版本提供二類版本 1. 臨時(shí)版本臨時(shí)版本 可修改和刪除,可由它導(dǎo)出新的臨時(shí)版本??尚薷暮蛣h除,可由它導(dǎo)出新的臨時(shí)版本。 2. 工作版本工作版本 只能查看不能修改,可導(dǎo)出臨時(shí)版本。只能查看不能修改,可導(dǎo)出臨時(shí)版本。 版本對(duì)象描述版本對(duì)象描述 對(duì)象標(biāo)識(shí)符、
35、版本號(hào)、版本狀態(tài)對(duì)象標(biāo)識(shí)符、版本號(hào)、版本狀態(tài)(臨時(shí)、工作(臨時(shí)、工作 )44 版本管理版本管理線性版本管理模型線性版本管理模型按照版本出現(xiàn)的先后順序排列按照版本出現(xiàn)的先后順序排列樹(shù)型版本管理模型樹(shù)型版本管理模型 一個(gè)版本有多個(gè)后繼版本,能反映版本間的依一個(gè)版本有多個(gè)后繼版本,能反映版本間的依賴關(guān)系。賴關(guān)系。有向無(wú)環(huán)圖版本管理模型有向無(wú)環(huán)圖版本管理模型一個(gè)版本有多個(gè)前驅(qū)版本和多個(gè)后繼版本一個(gè)版本有多個(gè)前驅(qū)版本和多個(gè)后繼版本 45 DBDB0 0生成的不同版本生成的不同版本 DBDB0 0 DBDB4 4 DBDB3 3 DBDB2 2 DBDB1 1 DBDB6 6 DBDB7 7 DBDB5
36、5468.6.4 版本管理版本管理 對(duì)版本操作命令:對(duì)版本操作命令: Create ( 創(chuàng)建版本對(duì)象,生成對(duì)象結(jié)構(gòu)創(chuàng)建版本對(duì)象,生成對(duì)象結(jié)構(gòu)); Derive ( 派生新的臨時(shí)版本派生新的臨時(shí)版本); Replace ( 替換臨時(shí)版本的內(nèi)容替換臨時(shí)版本的內(nèi)容); Delete ( 刪除版本刪除版本); Promote ( 改臨時(shí)版本工作版本改臨時(shí)版本工作版本).47 8.6.5 對(duì)象的存儲(chǔ)管理對(duì)象的存儲(chǔ)管理u 二元存儲(chǔ):二元存儲(chǔ):u 基于對(duì)象的存儲(chǔ)基于對(duì)象的存儲(chǔ) 對(duì)象標(biāo)識(shí)對(duì)象標(biāo)識(shí) 對(duì)象長(zhǎng)度對(duì)象長(zhǎng)度 屬性數(shù)屬性數(shù) 屬性向量屬性向量 值位移向量值位移向量 值值 對(duì)象存儲(chǔ)格式對(duì)象存儲(chǔ)格式u 類層次結(jié)
37、構(gòu)對(duì)象的存儲(chǔ)類層次結(jié)構(gòu)對(duì)象的存儲(chǔ) (1) 屬性值存儲(chǔ)在盡可能低的層次屬性值存儲(chǔ)在盡可能低的層次 (2) 屬性值存儲(chǔ)在較高的層次,還可以將屬性值按不同層次分別屬性值存儲(chǔ)在較高的層次,還可以將屬性值按不同層次分別存儲(chǔ)存儲(chǔ) ORION中采用了第一種存儲(chǔ)策略,盡可能將類中的實(shí)例存儲(chǔ)中采用了第一種存儲(chǔ)策略,盡可能將類中的實(shí)例存儲(chǔ)在類層次的最低層。在類層次的最低層。48 人人 教職工教職工 學(xué)生學(xué)生 教師教師 工人工人 本科生本科生 研究生研究生 學(xué)校人員的類層次結(jié)構(gòu)編號(hào)編號(hào) 姓名姓名001 王平王平編號(hào)編號(hào) 姓名姓名 參加工作時(shí)間參加工作時(shí)間002 李李 力力 1990. 02. 23003 孫小丹孫小
38、丹 1987. 09.15編號(hào)編號(hào) 姓名姓名 入校時(shí)間入校時(shí)間004 吳吳 偉偉 1998.09.06編號(hào)編號(hào) 姓名姓名 參加工作時(shí)間參加工作時(shí)間 職稱職稱005 趙亮趙亮 1978.12.15 教授教授006 劉江水劉江水 1988.10.22 副教授副教授007 史為民史為民 1995.08.12 講師講師編號(hào)編號(hào) 姓名姓名 參加工作時(shí)間參加工作時(shí)間 工種工種008 張也張也 1981.02.12 鉗工鉗工009 樓白樓白 1993.05.09 車工車工編號(hào)編號(hào) 姓名姓名 入校時(shí)間入校時(shí)間 專業(yè)專業(yè)010 趙小亮趙小亮 1998.09.06 機(jī)電機(jī)電011 江浩江浩 1998.09.06
39、化工化工編號(hào)編號(hào) 姓名姓名 入校時(shí)間入校時(shí)間 導(dǎo)師導(dǎo)師012 呂空呂空 1999.09.05 馮江馮江013 陳濤陳濤 2000.09.09 宋為國(guó)宋為國(guó)49OODB存在的問(wèn)題:存在的問(wèn)題: 已有已有OODBMS在程序設(shè)計(jì)接口、實(shí)現(xiàn)方法、對(duì)查在程序設(shè)計(jì)接口、實(shí)現(xiàn)方法、對(duì)查詢的支持等多個(gè)方面存在許多差異;詢的支持等多個(gè)方面存在許多差異; 模式進(jìn)化難于實(shí)現(xiàn);模式進(jìn)化難于實(shí)現(xiàn); 與應(yīng)用程序密切相關(guān),許多系統(tǒng)僅支持一種語(yǔ)言與應(yīng)用程序密切相關(guān),許多系統(tǒng)僅支持一種語(yǔ)言 健壯性、容錯(cuò)性;健壯性、容錯(cuò)性; 缺乏開(kāi)發(fā)工具。缺乏開(kāi)發(fā)工具。 5087 對(duì)象對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng) 對(duì)象對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)在關(guān)
40、系系統(tǒng)基礎(chǔ)上應(yīng)具有關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)在關(guān)系系統(tǒng)基礎(chǔ)上應(yīng)具有以下特征:以下特征: 擴(kuò)充數(shù)據(jù)類型;擴(kuò)充數(shù)據(jù)類型; 支持復(fù)雜對(duì)象管理(組合、集合、引用);支持復(fù)雜對(duì)象管理(組合、集合、引用); 支持繼承(子類支持繼承(子類 / 超類,單繼承超類,單繼承/多繼承);多繼承); 提供通用規(guī)則系統(tǒng)(事件和動(dòng)作為任意提供通用規(guī)則系統(tǒng)(事件和動(dòng)作為任意SQL語(yǔ)句語(yǔ)句的主動(dòng)性規(guī)則、自定義函數(shù)、規(guī)則的繼承)的主動(dòng)性規(guī)則、自定義函數(shù)、規(guī)則的繼承) 51 對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中擴(kuò)展的數(shù)據(jù)類型對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中擴(kuò)展的數(shù)據(jù)類型v擴(kuò)展的類型:擴(kuò)展的類型: LOB BOOLEAN 集合類型集合類型ARRAY 用戶定義的用戶定義的
41、DISTINCT類型類型 面向?qū)ο蟮臄?shù)據(jù)類型面向?qū)ο蟮臄?shù)據(jù)類型 行類型行類型ROW TYPE 抽象數(shù)據(jù)類型(抽象數(shù)據(jù)類型(Abstract Data Type)52 SQL3中提供了中提供了CREATE TYPE語(yǔ)句語(yǔ)句 定義定義DISTINCT類型和抽象數(shù)據(jù)類型類型和抽象數(shù)據(jù)類型 例:例:使用使用DISTINCT類型類型CREATE TYPE AGE_TYPE AS INTEGER FINAL;CREATE TYPE GRADE_TYPE AS INTEGER FINAL;WHERE AGEGRADE 53 871 復(fù)雜對(duì)象復(fù)雜對(duì)象 對(duì)象對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中關(guān)系的屬性域是非原子的關(guān)系數(shù)據(jù)庫(kù)系
42、統(tǒng)中關(guān)系的屬性域是非原子的,可以用復(fù)合數(shù)據(jù)類型表示,也可以是一個(gè)關(guān)系,稱,可以用復(fù)合數(shù)據(jù)類型表示,也可以是一個(gè)關(guān)系,稱為為嵌套關(guān)系嵌套關(guān)系。 復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型:組合類型、集合類型和引用類型。:組合類型、集合類型和引用類型。 組合類型組合類型:由不同類型數(shù)據(jù)值組成;:由不同類型數(shù)據(jù)值組成; 集合類型集合類型:相同類型值的組合;:相同類型值的組合; 引用類型引用類型:指向任意類型實(shí)例的指針。:指向任意類型實(shí)例的指針。54 用復(fù)合數(shù)據(jù)類型構(gòu)造復(fù)雜對(duì)象用復(fù)合數(shù)據(jù)類型構(gòu)造復(fù)雜對(duì)象(抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型ADT)v 定義一個(gè)定義一個(gè)組合數(shù)據(jù)類型組合數(shù)據(jù)類型。 CREATE TYPE ( , ,
43、);簡(jiǎn)單類型或簡(jiǎn)單類型或復(fù)合類型復(fù)合類型v 集合類型集合類型 用關(guān)鍵詞用關(guān)鍵詞 setof(T)說(shuō)明,說(shuō)明,T是任意數(shù)據(jù)類是任意數(shù)據(jù)類型。型。 setof(T)是類型為是類型為T(mén)的值的集合數(shù)據(jù)類型。的值的集合數(shù)據(jù)類型。v 引用類型引用類型 用關(guān)鍵詞用關(guān)鍵詞 ref(T),T可以是任意數(shù)據(jù)類型可以是任意數(shù)據(jù)類型55例子:例子:圖書(shū)(書(shū)號(hào)、書(shū)名、作者、圖書(shū)(書(shū)號(hào)、書(shū)名、作者、 出版社、出版日期)出版社、出版日期)CREATE TYPE mystring varchar(40);CREATE TYPE mydate ( year integer, month integer, day integer
44、);CREATE TYPE publisher_t (publi_ name cahr(20), address varchar(40), telephone intger);集合集合類型類型組合類組合類型型56CREATE TYPE book_t (bookno char(20), bookname varchar(40), author setof (mystring), publisher_ref ref (publisher_t), date mydate);CREATE TABLE publisher of type publisher_t;CREATE TABLE book of
45、type book_t;集合類型集合類型參照類型參照類型組合類型組合類型578 87 72 2 繼承繼承 繼承可以在繼承可以在類型一級(jí)說(shuō)明類型一級(jí)說(shuō)明,也可以用于,也可以用于表一級(jí)表一級(jí)。 CREATE TYPE UNDER CREATE TABLE UNDER 588 87 72 2 繼承繼承v 繼承繼承 可以在可以在類型一級(jí)說(shuō)明類型一級(jí)說(shuō)明CREATE TYPE person_t(name char (8)););CREATE TYPE teacher_t (title char (6) , salary float , department char(8) ) UNDER person_t;CREATE TYPE student_t (class integ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省永州市本年度(2025)小學(xué)一年級(jí)數(shù)學(xué)部編版摸底考試(上學(xué)期)試卷及答案
- 遼寧省沈陽(yáng)市第120中學(xué)2025年高考沖刺押題(最后一卷)英語(yǔ)試卷含解析
- 配電線路工專業(yè)考試題含參考答案
- 2025屆云南省曲靖市會(huì)澤縣茚旺高級(jí)中學(xué)高考英語(yǔ)四模試卷含答案
- 東莞東華高級(jí)中學(xué)2025屆高考仿真卷英語(yǔ)試卷含答案
- 航空飛行器飛行器保險(xiǎn)產(chǎn)品創(chuàng)新考核試卷
- 水產(chǎn)品冷凍加工企業(yè)財(cái)務(wù)管理與投資分析考核試卷
- 石油勘探技術(shù)考核試卷
- 液壓與液力技術(shù)在陶瓷印花機(jī)中的應(yīng)用考核試卷
- 篷布遮陽(yáng)篷在商業(yè)建筑的節(jié)能貢獻(xiàn)與景觀設(shè)計(jì)效果評(píng)價(jià)考核試卷
- 離散數(shù)學(xué)(下)智慧樹(shù)知到課后章節(jié)答案2023年下桂林電子科技大學(xué)
- 醫(yī)療機(jī)構(gòu)安全檢查表
- 【基于雙因素理論下Y公司基層員工激勵(lì)機(jī)制研究11000字(論文)】
- 醫(yī)務(wù)人員手衛(wèi)生考試試題
- 信息技術(shù)說(shuō)課市公開(kāi)課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- GB/T 42172-2022精油產(chǎn)品標(biāo)簽標(biāo)識(shí)通則
- 肺癌SBRT的進(jìn)展課件
- 2500個(gè)常用字按偏旁部首歸類
- 方案設(shè)計(jì)初步設(shè)計(jì)施工圖設(shè)計(jì)要求模板
- 安徽海華科技集團(tuán)有限公司年產(chǎn)2萬(wàn)噸甲酚技改及廠區(qū)清潔化升級(jí)改造項(xiàng)目環(huán)評(píng)報(bào)告書(shū)
- 城鄉(xiāng)規(guī)劃管理與法規(guī)智慧樹(shù)知到答案章節(jié)測(cè)試2023年同濟(jì)大學(xué)
評(píng)論
0/150
提交評(píng)論