下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、An Introduction to Database System,數(shù)據(jù)庫系統(tǒng)概論 An Introduction to Database System 第十五章 對象關(guān)系數(shù)據(jù)庫系統(tǒng),An Introduction to Database System,對象關(guān)系數(shù)據(jù)庫系統(tǒng),對象關(guān)系數(shù)據(jù)庫系統(tǒng)(Object Relational Database System,ORDBS)是面向?qū)ο髷?shù)據(jù)模型(Object Oriented Data Model,簡稱OO模型)和關(guān)系數(shù)據(jù)模型相結(jié)合的產(chǎn)物 三條研究路線 以面向?qū)ο蟮某绦蛟O(shè)計(jì)語言為基礎(chǔ),研究持久的程序設(shè)計(jì)語言,支持OO模型; 建立新的面向?qū)ο髷?shù)據(jù)庫
2、系統(tǒng)OODBS,支持OO數(shù)據(jù)模型; 以關(guān)系數(shù)據(jù)庫和SQL為基礎(chǔ),把面向?qū)ο蠹夹g(shù)融入數(shù)據(jù)庫系統(tǒng)的ORDBS,An Introduction to Database System,第十五章 對象關(guān)系數(shù)據(jù)庫系統(tǒng),15.1 面向?qū)ο髷?shù)據(jù)模型 15.2 對象-關(guān)系數(shù)據(jù)庫 15.3 小結(jié),An Introduction to Database System,15.1 面向?qū)ο髷?shù)據(jù)模型,面向?qū)ο髷?shù)據(jù)庫系統(tǒng)支持OO模型 面向?qū)ο髷?shù)據(jù)庫系統(tǒng):一個持久的、可共享的對象庫的存儲和管理者 對象庫:由一個OO模型所定義的對象的集合體,An Introduction to Database System,15.1 面向?qū)?/p>
3、象數(shù)據(jù)模型,15.1.1 OO模型的核心概念 15.1.2 類層次(結(jié)構(gòu)) 15.1.3 繼承 15.1.4 對象的嵌套,An Introduction to Database System,15.1.1 OO模型的核心概念,1.對象 定義:對象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來的基本單位。 組成部分 屬性(Attribute)集合 屬性描述對象的狀態(tài)、組成和特性 方法(Method)集合 描述了對象的行為特性,An Introduction to Database System,OO模型的核心概念(續(xù)),2. 對象標(biāo)識OID(Object IDentifier) 概念
4、:面向?qū)ο髷?shù)據(jù)庫中的每個對象都有一個唯一的不變的標(biāo)識稱為對象標(biāo)識(OID) 特點(diǎn): 永久持久性 獨(dú)立于值的、系統(tǒng)全局唯一的,An Introduction to Database System,OO模型的核心概念(續(xù)),3. 封裝(Encapsulation) 每一個對象是其狀態(tài)與行為的封裝 封裝是對象的外部界面與內(nèi)部實(shí)現(xiàn)之間實(shí)行清晰隔離的一種抽象,外部與對象的通信只能通過消息 對象封裝之后查詢屬性值必須通過調(diào)用方法,An Introduction to Database System,OO模型的核心概念(續(xù)),4. 類(Class) 對象類(簡稱類):共享同樣屬性和方法集的所有對象構(gòu)成了一個
5、對象類 實(shí)例:一個對象是某一類的一個實(shí)例(instance) 在OODB中,類是“型”,對象是某一類的一個“值”,An Introduction to Database System,15.1 面向?qū)ο髷?shù)據(jù)模型,15.1.1 OO模型的核心概念 15.1.2 類層次(結(jié)構(gòu)) 15.1.3 繼承 15.1.4 對象的嵌套,An Introduction to Database System,類層次(結(jié)構(gòu))(續(xù)),教員、行政人員、工人中只有本身的特殊屬性和方法 同時它們又繼承教職員工類和人的所有屬性和方法 邏輯上它們具有人、教職員工和本身的所有屬性和方法,圖15.1 學(xué)校數(shù)據(jù)庫的類層次結(jié)構(gòu)圖,An
6、 Introduction to Database System,類層次(結(jié)構(gòu))(續(xù)),超類/子類之間的關(guān)系體現(xiàn)了“IS A”的語義 超類是子類的抽象(Generalization)或概括 子類是超類的特殊化(Specialization)或具體化 類層次可以動態(tài)擴(kuò)展,一個新的子類能從一個或多個已有類導(dǎo)出,An Introduction to Database System,15.1 面向?qū)ο髷?shù)據(jù)模型,15.1.1 OO模型的核心概念 15.1.2 類層次(結(jié)構(gòu)) 15.1.3 繼承 15.1.4 對象的嵌套,An Introduction to Database System,15.1.3
7、繼承,單繼承:一個子類只能繼承一個超類的特性(包括屬性和方法) 層次結(jié)構(gòu)圖是一棵樹 多重繼承:一個子類能繼承多個超類的特性 層次結(jié)構(gòu)圖是一個帶根的有向無回路圖,An Introduction to Database System,繼承(續(xù)),多重繼承,具有多繼承的類層次結(jié)構(gòu)圖,An Introduction to Database System,繼承(續(xù)),繼承性的優(yōu)點(diǎn) 第一,建模的有力工具,提供了對現(xiàn)實(shí)世界簡明而精確的描述 第二,提供了信息重用機(jī)制 子類與超類的沖突 子類在定義自己特殊屬性和方法時可能與繼承下來的超類的屬性和方法發(fā)生沖突 由系統(tǒng)解決,An Introduction to Da
8、tabase System,15.1 面向?qū)ο髷?shù)據(jù)模型,15.1.1 OO模型的核心概念 15.1.2 類層次(結(jié)構(gòu)) 15.1.3 繼承 15.1.4 對象的嵌套,An Introduction to Database System,15.1.4 對象的嵌套,對象嵌套: 一個對象的屬性可以是一個對象,這樣對象之間產(chǎn)生一個嵌套層次結(jié)構(gòu) 設(shè)Obj1和Obj2是兩個對象。如果Obj2是Obj1的某個屬性的值,稱Obj2屬于Obj1,或Obj1包含Obj2。 復(fù)雜對象 子對象 嵌套層次結(jié)構(gòu),An Introduction to Database System,對象的嵌套(續(xù)),汽車的嵌套層次圖,An
9、 Introduction to Database System,對象的嵌套(續(xù)),對象嵌套層次結(jié)構(gòu)和類層次結(jié)構(gòu)形成了對象橫向和縱向的復(fù)雜結(jié)構(gòu) 各種類之間具有層次結(jié)構(gòu) 某一個類內(nèi)部也具有嵌套層次結(jié)構(gòu),An Introduction to Database System,關(guān)系模型與OO模型的比較,表15.1 關(guān)系數(shù)據(jù)模型與OO模型的比較,An Introduction to Database System,第十五章 對象關(guān)系數(shù)據(jù)庫系統(tǒng),15.1 面向?qū)ο髷?shù)據(jù)模型 15.2 對象-關(guān)系數(shù)據(jù)庫 15.3 小結(jié),An Introduction to Database System,15.2 對象-關(guān)系
10、數(shù)據(jù)庫,15.2.1 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型 15.2.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的對象類型及其定義 15.2.3 參照類型(Reference Type) 15.2.4 繼承性 15.2.5 子表和超表,An Introduction to Database System,對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型,擴(kuò)展的類型: LOB BOOLEAN 集合類型ARRAY 用戶定義的DISTINCT類型等 面向?qū)ο蟮臄?shù)據(jù)類型 行類型ROW TYPE 抽象數(shù)據(jù)類型(Abstract Data Type),An Introduction to Database System,ORD
11、BS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),大對象LOB(Large OBject )類型 LOB可存儲多達(dá)十億字節(jié)的串。 LOB分類 二進(jìn)制大對象BLOB(Binary Large OBject) BLOB用于存儲音頻、圖像數(shù)據(jù) 字符串大對象CLOB(Character Large OBject)。 CLOB用于存儲長字符串?dāng)?shù)據(jù),An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),2. BOOLEAN類型 布爾類型,支持3個真值:true、false和unknown 操作符:NOT、AND、OR、EVERY、ANY 例如 WHERE EVERY(Q
12、TY200) 或WHERE ANY(QTY200) QTY列為空值:返回unknown; QTY列為非空: 當(dāng)該列的每一個值都使(QTY200)為true時,EVERY返回true,否則為false; 當(dāng)該列的每一個值都使(QTY200)為false時,ANY返回false,否則為true。,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),3.集合類型(Collection Type)ARRAY 相同類型元素的有序集合稱為數(shù)組ARRAY SQL3新增的集合類型 允許在數(shù)據(jù)庫的一列中存儲數(shù)組 SQL3的數(shù)組只能是一維的 數(shù)組中的元素不能
13、再是數(shù)組,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),例2 CREATE TABLE SALES ( ITEM_NO CHAR(20),/*商品號*/ QTY INTEGER ARRAY12,/*整數(shù)數(shù)組,存放銷售額*/ PRIMARY KEY(ITEM_NO) );,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),向SALES表插入一個元組: INSERT INTO SALES(ITEM_NO,QTY)VALUES (T-shirt2000,ARRAY200,150,2
14、00,100,50,70, 80,200,10,20,100,200); 查找三月份銷售額大于100的商品號: SELECT ITEM_NO FROM SALES WHERE QTY3100;,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),4. DISTINCT類型 SQL3新加了一種DISTINCT類型 定義DISTINCT數(shù)據(jù)類型語法 CREAT TYPE AS FINAL ;,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),沒有使用DISTINCT類型 例如,職工的智
15、商字段(IQ)和鞋號字段(SHOE_SIZE)定義成INTEGER類型 WHERE SHOE_SIZE IQ,An Introduction to Database System,ORDBS中擴(kuò)展的關(guān)系數(shù)據(jù)類型(續(xù)),使用DISTINCT類型 重新定義這兩字段類型 CREAT TYPE SHOE_SIZE_TYPE AS INTEGER FINAL; CREAT TYPE IQ_TYPE AS INTEGER FINAL; SHOE_SIZE_TYPE和IQ _TYPE成為兩種不同的數(shù)據(jù)類型 表達(dá)式:WHERE SHOE_SIZE IQ 是非法的 如果在定義類型時設(shè)置了選項(xiàng),下面用法也是合法的
16、:WHERE MY_SHOE_SIZE CAST (MY_IQ AS SHOE_SIZE),An Introduction to Database System,15.2 對象-關(guān)系數(shù)據(jù)庫,15.2.1 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型 15.2.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的對象類型及其定義 15.2.3 參照類型(Reference Type) 15.2.4 繼承性 15.2.5 子表和超表,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義,在ORDBMS中,類型(TYPE)具有類(CLASS)的特征,可以看成類 1.行對象與行
17、類型 定義行類型(ROW TYPE) : CREATE ROW TYPE ();,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義(續(xù)),創(chuàng)建行類型 例3 CREATE ROW TYPE Person_type (pnoNUMBER, nameVARCHAR2(100), addressVARCHAR2(100) );,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義(續(xù)),創(chuàng)建基于行類型的表 CREATE TABLE OF ; 例4 CREATE TABLE person_exte
18、nt OF Person_type (pno PRIMARY KEY );,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義(續(xù)),2.列對象與對象類型 可以創(chuàng)建一個對象類型,表的屬性可以是該對象類型。 創(chuàng)建列對象語句如下: CREATE TYPE AS OBJECT ();,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義(續(xù)),例5 CREATE TYPE address_objtyp AS OBJECT (streetVARCHAR2(50), cityVARCHAR2(50)
19、 ); CREATE TYPE name_objtyp AS OBJECT (first_nameVARCHAR2(30), last_nameVARCHAR2(30) ) ;,An Introduction to Database System,ORDBS中擴(kuò)展的對象類型及其定義(續(xù)),創(chuàng)建表,定義其中的屬性是對象類型 例6 CREATE TABLE people_reltab (IdNUMBER(10), name_objname_objtyp,address_objaddress_objtyp);,An Introduction to Database System,ORDBS中擴(kuò)展的對
20、象類型及其定義(續(xù)),3. 抽象數(shù)據(jù)類型(Abastract Data Type,ADT) 概念:SQL3允許用戶創(chuàng)建指定的帶有自身行為說明和內(nèi)部結(jié)構(gòu)的用戶定義類型稱為抽象數(shù)據(jù)類型 定義ADT的一般形式為 CREATE TYPE ( 所有屬性名及其類型說明, 定義該類型的等于和小于函數(shù), 定義該類型其他函數(shù)(方法);,An Introduction to Database System,ADT的特點(diǎn),(1) ADT的屬性定義和行類型的屬性定義類同。 (2) 在創(chuàng)建ADT的語句中,通過用戶定義的函數(shù)比較對象的值。 (3) ADT的行為通過方法(methods)、函數(shù)(functions)實(shí)現(xiàn)。
21、(4) SQL3要求抽象數(shù)據(jù)類型是封裝的,而行類型則不要求封裝。 (5) ADT有3個通用的系統(tǒng)內(nèi)置函數(shù) (6) ADT可以參與類型繼承,An Introduction to Database System,15.2 對象-關(guān)系數(shù)據(jù)庫,15.2.1 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型 15.2.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的對象類型及其定義 15.2.3 參照類型(Reference Type) 15.2.4 繼承性 15.2.5 子表和超表,An Introduction to Database System,15.2.3 參照類型(Reference Type),REF類型(參照類型、
22、引用類型) 引入的原因: 類型之間可能具有相互參照的聯(lián)系 形式 REF 特點(diǎn): REF類型總是和某個特定的類型相聯(lián)系。 它的值是OID,An Introduction to Database System,參照類型(續(xù)),創(chuàng)建兩個表:Employee和Company,兩表之間存在相互參照關(guān)系,即某個職工在某個公司工作 (1)創(chuàng)建行類型 例7 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER ); CREATE ROW TYPE Comp_ type( compname VARCHAR(20), location VARCH
23、AR(20) );,An Introduction to Database System,參照類型(續(xù)),(2)創(chuàng)建基于行類型的表: CREATE TABLE Employee OF employee_type; CREATE TABLE Company OF Comp_ type (3)描述參照關(guān)系 CREATE ROW TYPE Employment _type ( employee REF (employee_type), company REF (Comp_ type) ); CREATE TABLE Employment OF Employment _type 表Employment
24、中某一個元組的employee屬性值是某個職工的OID company屬性值是該職工所在公司的OID,An Introduction to Database System,參照類型(續(xù)),例8 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER, emp_id REF(employee_type) ); 例9 CREATE TABLE Employee OF employee_type VALUES FOR emp_id ARE SYSTEM GENERATED;,An Introduction to Database Sy
25、stem,參照類型(續(xù)),建立參照屬性: REF()SCOPE IS 例10 CREATE TABLE address_objtab OF address_objtyp ; 例11 CREATE TABLE people_reltab2 ( id NUMBER(4) PRIMARY KEY, name_obj name_objtyp, addresss_ref REF(address_objtyp) SCOPE IS address_objtab ),An Introduction to Database System,參照類型(續(xù)),例12 CREATE INDEX address_ref_
26、idx ON people_reltab2(address_ref) ; 例13 SELECT id FROM people_reltab2 p WHERE p.address_ref.city=北京 and p.address_ref.street=牛街;,An Introduction to Database System,15.2 對象-關(guān)系數(shù)據(jù)庫,15.2.1 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型 15.2.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的對象類型及其定義 15.2.3 參照類型(Reference Type) 15.2.4 繼承性 15.2.5 子表和超表,An Introducti
27、on to Database System,15.2.4 繼承性,ORDBMS應(yīng)該支持繼承性 一般是單繼承性 例14 CREATE TYPE emp_type UNDER person_type AS( emp_id INTEGER, salary REAL ) NOT FINAL; NOT FINAL:表示不是類層次結(jié)構(gòu)中最后的“葉結(jié)點(diǎn)” FINAL:該類型是類層次結(jié)構(gòu)的葉結(jié)點(diǎn),An Introduction to Database System,15.2 對象-關(guān)系數(shù)據(jù)庫,15.2.1 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的關(guān)系數(shù)據(jù)類型 15.2.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴(kuò)展的對象類型及其定義 15.
28、2.3 參照類型(Reference Type) 15.2.4 繼承性 15.2.5 子表和超表,An Introduction to Database System,15.2.5 子表和超表,超表、子表、子表的子表構(gòu)成一個表層次結(jié)構(gòu) 表層次和類型層次的概念十分相似,An Introduction to Database System,子表和超表(續(xù)),例15 對于下面的類型層次,先定義這些類型TYPE,然后創(chuàng)建基于這些類型的表,類型層次示例,An Introduction to Database System,子表和超表(續(xù)),CREATE TYPE person /*創(chuàng)建person 類型
29、,根類型*/ (id INTEGER, name VARCHAR(20), birthyear INTEGER, address VARCHAR(40) NOT FINAL; /*NOT FINAL表示可以有子類型*/ CREATE TYPE employee /*創(chuàng)建person的子類型employee*/ UNDER person /*類型employee繼承person的屬性*/ (salary INTEGER) /* employee定義自己的屬性*/ NOT FINAL;,An Introduction to Database System,子表和超表(續(xù)),CREATE TYPE
30、executive/*創(chuàng)建employee的子類型executive*/ UNDER employee (bonus INTEGER) FINAL; CREATE TYPE student/*創(chuàng)建person的子類型student */ UNDER person (major VARCHAR(10),wage DECIMAL) FINAL,An Introduction to Database System,子表和超表(續(xù)),例16Department類型和employee具有相互參照的聯(lián)系,使用REF來表示這種聯(lián)系 CREATE TYPE department (ID INTEGER, manager REF(employee), Budget INTEGER); ALTER TYPE employee ADD ATTRIBUTE dept REF(department);,An Introduction to Database System,子表和超表(續(xù)),定義基于這些類型的基本表和表層次: CREATE TABLE person_table OF person (name WITH OPTIONS NOT NULL);,employee_table是 person_table的子表,CREATE TABLE exec_table of executiv
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026北京急救中心第一批招聘備考考試題庫及答案解析
- 中鋁資本2026年校園招聘2人筆試備考試題及答案解析
- 2026年度濟(jì)南市濟(jì)陽區(qū)所屬事業(yè)單位公開招聘初級綜合類崗位人員備考考試題庫及答案解析
- 2026年上半年黑龍江省地震局事業(yè)單位公開招聘工作人員2人考試備考試題及答案解析
- 2026上半年云南事業(yè)單位聯(lián)考省青少年科技中心招聘3備考考試題庫及答案解析
- 2026江西贛州市南康區(qū)糧食收儲公司招聘機(jī)電維修員、消防安保人員3人備考考試題庫及答案解析
- 底層家庭的悲哀與破局愛在慪氣中迷失
- 2026廣東廣州市花都區(qū)花東鎮(zhèn)大塘小學(xué)語文專任教師招聘1人參考考試題庫及答案解析
- 2026山東威海市乳山市屬國有企業(yè)招聘16人參考考試題庫及答案解析
- 傷害的預(yù)防管理制度包括(3篇)
- 基礎(chǔ)電工培訓(xùn)課件
- 具身智能+老年人日常行為識別與輔助系統(tǒng)方案可行性報(bào)告
- 冬蟲夏草發(fā)酵生產(chǎn)工藝流程設(shè)計(jì)
- 股權(quán)轉(zhuǎn)讓法律意見書撰寫范本模板
- 修建羊舍合同(標(biāo)準(zhǔn)版)
- 精神科常見藥物不良反應(yīng)及處理
- 執(zhí)行信息屏蔽申請書
- SA8000-2026社會責(zé)任管理體系新版的主要變化及標(biāo)準(zhǔn)內(nèi)容培訓(xùn)教材
- 2025年版評審準(zhǔn)則考核試題(附答案)
- DB11∕T 2375-2024 城市運(yùn)行監(jiān)測指標(biāo)體系
- 貴陽棄養(yǎng)寵物管理辦法
評論
0/150
提交評論