資源描述:
《對(duì)象關(guān)系數(shù)據(jù)庫(kù).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第9章:對(duì)象關(guān)系數(shù)據(jù)庫(kù)嵌套關(guān)系復(fù)雜類(lèi)型與面向?qū)ο髲?fù)雜類(lèi)型的查詢(xún)創(chuàng)建復(fù)雜類(lèi)型值及對(duì)象面向?qū)ο笈c對(duì)象關(guān)系數(shù)據(jù)庫(kù)的比較對(duì)象關(guān)系數(shù)據(jù)模型通過(guò)引入面向?qū)ο蠹疤幚韽?fù)雜數(shù)據(jù)類(lèi)型的構(gòu)造來(lái)擴(kuò)展關(guān)系數(shù)據(jù)模型.允許元組屬性具有復(fù)雜類(lèi)型,包括非原子值(如嵌套關(guān)系).保持關(guān)系基礎(chǔ),尤其是對(duì)數(shù)據(jù)的描述性存取,同時(shí)擴(kuò)展建模能力.與現(xiàn)有關(guān)系語(yǔ)言向上兼容.嵌套關(guān)系動(dòng)機(jī):允許非原子域(原子?不可分割)非原子域例:整數(shù)集合,元組集合對(duì)含有復(fù)雜數(shù)據(jù)的應(yīng)用可以更直觀地建模直觀定義:在原先只允許出現(xiàn)原子值(標(biāo)量)的地方可以出現(xiàn)關(guān)系—關(guān)系內(nèi)的關(guān)系保持關(guān)系模型的數(shù)學(xué)基礎(chǔ)違反第一范式嵌套關(guān)系例例如:圖書(shū)館信息系統(tǒng)每本書(shū)具有書(shū)名,作者
2、集合,出版商,關(guān)鍵詞集合非1NF關(guān)系books嵌套關(guān)系的1NF版本1NFversionofbooksflat-books嵌套關(guān)系的4NF分解假設(shè)flat-books上有下列多值依賴(lài):titleauthortitlekeywordtitlepub-name,pub-branch分解到4NF:(title,author)(title,keyword)(title,pub-name,pub-branch)4NF分解flat–books4NF模式的問(wèn)題4NF設(shè)計(jì)使用戶(hù)查詢(xún)時(shí)需要連接.通過(guò)連接4NF關(guān)系而定義的1NF視圖flat-books:使用戶(hù)不必執(zhí)行連接,但丟失了元組與文檔的一一對(duì)應(yīng).具
3、有大量冗余嵌套關(guān)系表示法更自然.復(fù)雜類(lèi)型與SQL:1999對(duì)SQL的擴(kuò)展支持復(fù)雜類(lèi)型,包括:集合與大對(duì)象類(lèi)型嵌套關(guān)系是集合類(lèi)型的例子結(jié)構(gòu)類(lèi)型類(lèi)似符合屬性的嵌套記錄結(jié)構(gòu)繼承面向?qū)ο蟀瑢?duì)象標(biāo)識(shí)符和引用我們主要基于SQL:1999標(biāo)準(zhǔn)介紹當(dāng)前的數(shù)據(jù)庫(kù)系統(tǒng)并沒(méi)有完全實(shí)現(xiàn)但某些特性在主要商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)中都存在請(qǐng)參閱你的數(shù)據(jù)庫(kù)系統(tǒng)的手冊(cè)看看他支持什么我們也介紹一些SQL:1999中沒(méi)有的特性這會(huì)明顯指出集合類(lèi)型Set類(lèi)型(SQL:1999不支持)createtablebooks(…..keyword-setsetof(varchar(20))……)Set是集合類(lèi)型的一種.其他集合類(lèi)型包括
4、Array(SQL:1999支持)E.g.author-arrayvarchar(20)array[10]可按通常方式存取數(shù)組元素:E.g.author-array[1]Multiset(SQL:1999不支持)無(wú)序集合,其中一元素可出現(xiàn)多次嵌套關(guān)系是元組集合SQL:1999支持元組數(shù)組大對(duì)象類(lèi)型大對(duì)象類(lèi)型clob:字符大對(duì)象book-reviewclob(10KB)blob:二進(jìn)制大對(duì)象imageblob(10MB)movieblob(2GB)JDBC/ODBC提供特別方法來(lái)以小片斷形式存取大對(duì)象類(lèi)似于存取操作系統(tǒng)文件應(yīng)用獲取大對(duì)象的定位符,然后再用宿主語(yǔ)言操作大對(duì)象結(jié)構(gòu)與集合類(lèi)型
5、SQL中可聲明并使用結(jié)構(gòu)類(lèi)型createtypePublisheras(namevarchar(20),branchvarchar(20))createtypeBookas(titlevarchar(20),author-arrayvarchar(20)array[10],pub-datedate,publisherPublisher,keyword-setsetof(varchar(20)))注:SQL:1999不支持setof用array存儲(chǔ)作者使我們可以記錄作者順序結(jié)構(gòu)類(lèi)型可用來(lái)創(chuàng)建表createtablebooksofBook類(lèi)似于前面的嵌套關(guān)系books,但對(duì)作者用的是ar
6、ray而非set結(jié)構(gòu)與集合類(lèi)型(續(xù))結(jié)構(gòu)類(lèi)型可直接表示E-R圖中的復(fù)合屬性.SQL:1999中還可用無(wú)名行類(lèi)型來(lái)定義復(fù)合屬性E.g.可以省略Publisher類(lèi)型的聲明,而在類(lèi)型Book中用下列聲明publisherrow(namevarchar(20),branchvarchar(20))類(lèi)似地,集合類(lèi)型可直接表示E-R圖中的多值屬性.結(jié)構(gòu)類(lèi)型(續(xù))可以直接創(chuàng)建表,而不需創(chuàng)建一個(gè)中間類(lèi)型例如,表books可如下定義:createtablebooks(titlevarchar(20),author-arrayvarchar(20)array[10],pub-datedate,publ
7、isherPublisherkeyword-listsetof(varchar(20)))方法可以作為結(jié)構(gòu)類(lèi)型定義的一部分:createtypeEmployeeas(namevarchar(20),salaryinteger)methodgiveraise(percentinteger)單獨(dú)定義方法體createmethodgiveraise(percentinteger)forEmployeebeginsetself.salary=self.salar