




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第10章對象關系數(shù)據(jù)庫
在傳統(tǒng)的關系型數(shù)據(jù)庫系統(tǒng)的基礎上引入了面向?qū)ο蟮倪@類系統(tǒng)稱為對象關系數(shù)據(jù)庫系統(tǒng)(ORDB)。
本章主要內(nèi)容包括:對象關系數(shù)據(jù)模型、
ORDBS數(shù)據(jù)庫設計方法—對象聯(lián)系法、SQL3對ORDBS的支持、OODBS和ORDBS的比較。第10章對象關系數(shù)據(jù)庫10.1對象關系數(shù)據(jù)模型10.2對象聯(lián)系圖10.3
ORDB的定義語言10.4
ORDB的查詢語言10.5
OODB與ORDB的比較10.6小結10.7習題10.1對象關系數(shù)據(jù)模型傳統(tǒng)關系模型稱為“平面關系模型”,不允許表中有表。
在傳統(tǒng)關系數(shù)據(jù)模型基礎上,增加了元組、數(shù)組、集合等數(shù)據(jù)類型,以及提供了處理新數(shù)據(jù)類型操作的能力,并具有繼承性和對象標識等面向?qū)ο筇攸c,這樣的數(shù)據(jù)模型,稱為“對象關系數(shù)據(jù)模型”?;趯ο箨P系數(shù)據(jù)模型的DBS稱為“對象關系數(shù)據(jù)庫系統(tǒng)”(ORDBS)。
對象關系模型是對關系模型的發(fā)展,與傳統(tǒng)的關系模型兼容,因此許多概念,如實體標識、多值屬性、泛化/細化等,都可以直接引用,而無需經(jīng)過變換轉(zhuǎn)化。原來
SQL語言照樣可用,只不過擴充了更強的功能。對象關系模型使用對象聯(lián)系圖來描述系統(tǒng)結構。10.2對象聯(lián)系圖
對象聯(lián)系圖是實體聯(lián)系圖的一種擴充形式,用于表達系統(tǒng)中各對象之間的相互關系,不僅能描述關系中基本的數(shù)據(jù)結構,還可以用來表達面向?qū)ο蠹夹g中嵌套、遞歸的數(shù)據(jù)結構。10.2.1對象聯(lián)系圖的成分10.2.2學校、教師和教材對象聯(lián)系圖10.2.2數(shù)據(jù)的泛化/細化的描述10.2.1對象聯(lián)系圖的成分用實線表示對象之間的聯(lián)系。橢圓代表對象類型(相當于實體類型)。小圓圈表示屬性是基本數(shù)據(jù)類型(整型、實型、字符串)。橢圓之間的邊表示對象之間的“引用”。
單箭頭(→)表示屬性值是單值(屬性可以是基本數(shù)據(jù)類型,也可以是另一個對象類型)。
雙箭頭(→→)表示屬性值是多值(屬性可以是基本數(shù)據(jù)類型,也可以是另一個對象類型)。雙線箭頭(雙向箭頭()表示超類與子類間的聯(lián)系(從子類指向超類)。)表示兩個屬性之間值的聯(lián)系為逆聯(lián)系。10.2.2學校教師和教材對象聯(lián)系圖10.2.3數(shù)據(jù)的泛化/細化的描述
當在較低層上抽象表達了與之聯(lián)系的較高層上抽象的特殊情況時,就稱較高層上抽象是較低層上抽象的“泛化”,而較低層上抽象是較高層上抽象的“細化”。
其中,較高層的對象類型稱為“超類型”
(Supertype),較低層的對象類型稱為“子類型”
(SubType)。
子類型具有繼承性,能繼承超類型的特征,而子類型本身又有其他的特征。10.2.3帶泛化邊的對象聯(lián)系圖10.3
ORDB的定義語言
對象關系數(shù)據(jù)庫系統(tǒng)支持更復雜的數(shù)據(jù)類型,如結構類型、元組、數(shù)組、集合數(shù)據(jù)類型,支持繼承和引用,與關系模型兼容,因此原來支持關系模型的SQL語言也照樣可用。
在SQL99標準中提供了對對象關系模型數(shù)據(jù)庫的支持。
本小節(jié)介紹ORDB的定義語言,主要包括ORDB的數(shù)據(jù)類型的定義、繼承性和引用類型的定義等內(nèi)容。10.3
ORDB的定義語言10.3.1
ORDB的數(shù)據(jù)類型10.3.2結構類型10.3.3集合、數(shù)組和大對象10.3.4繼承性的定義10.3.5引用類型的定義10.3.6方法、函數(shù)和過程10.3.7
SQl3過程語句10.3.1
ORDB的數(shù)據(jù)類型復合類型有四種:
(1)結構類型:不同類型元素的有序集合稱為結構。如日期可由日月年三部分組成(如:8,July,2002)。(2)數(shù)組類型:同類元素的有序集合,稱數(shù)組。
(3)多集類型:同類元素的無序集合(成員可多次出現(xiàn)),稱為多集(Multiset)。例如成績集{80,70,80,80}。
(4)集合類型:同類元素的無序集合(每個成員只能出現(xiàn)一次),稱為集合(Set)。例如課程集:{MATHS,PHYSICS,PL,OS,DB}。數(shù)據(jù)類型可以嵌套。10.3.2定義結構類型車間與職工的嵌套關系Dept(dno,dname,staff(empno,ename,age))可用下列形式定義:create
type
Employee(empno
char(8),■ename
varchar(20),age
integer);■create
type
Department(dno
char(8),■dname
Varchar(20),staff
setof(Employee));■10.3.3定義集合、數(shù)組和大對象create
type
NameArray
varchar[10];■/*定義NameArray即是數(shù)組類型*/create
type
CourseGrade(course
Varchar(20),■grade
integer);create
type
StudentCourse
(name
Varchar(20),■cg
setof(course));/*定義StudentGrade由姓名和課程成績表構成*/create
table
sc
of
StudentCourse;/*定義表sc為結構StudentCourse的集合*/10.3.4繼承性的定義
在ORDB中,提供了對繼承的支持,繼承性可以發(fā)生在類型一級或表一級。
類型級的繼承性是指在定義一個類時可以從已存在的類中繼承相關的屬性。表級的繼承性是指一個表可繼承上級表的屬性。類繼承性:定義學生類型create
type
Student
(degree
Varchar,■department
Varchar)under
Person;■10.3.4表級繼承性先用SQL定義一個表People:create
table
person
(name
Varchar,■social_number
integer);然后再用繼承性定義另個表student:create
table
Student
(degree
Varchar,■department
Varchar)under
Person;■10.3.5引用類型的定義
遞歸嵌套結構:在部門類型與雇員類型的聯(lián)系中,定義了元組類型Dept與Emp。Dept(dno,dname,emp(eno,ename,age))Emp(eno,ename,age,Dept(dno,dname))
在Dept類中包括了Emp類,表示個部門有哪些雇員。在
Emp類中又要包括Dept類,表示雇員在哪個部門工作。10.3.5部門雇員引用類型定義create
table
Dept(dno
integer,dname
varchar(20),staff
setof(ref(Emp)));create
table
Emp(empno
integer,ename
varchar(20),sex
varchar(20),Age
integer,Works_for
ref(Dept));10.3.6方法、函數(shù)和過程1定義結構類型時創(chuàng)建方法。如:create
type
Employee
as(■name
varchar(20),salary
integer)method
give_raise(percent
integer))create
method
give_raise(percent
integer)
forEmployeeBeginset
self.salary=
self.salary+(
self.salary*percent)/10end10.3.6方法、函數(shù)和過程2SQL支持函數(shù):
create
function
Publisher(x
varchar(20),yvarchar(20))return
PublisherBegin■set
name=x;set
branch=y;■end10.3.6方法、函數(shù)和過程3SQL3支持過程,如auther_count可寫成過程:
create
procedure
auther_count_proc(in
titlevarchar(20),out
a_count
integer)begin■■select
count(author)
into
a_countfrom
authorswhere
suthors.title=title;end10.3.7
SQl3過程語句
用SQl3構造過程,幾乎可使用通用語言的所有功能,使用分支或循環(huán)結構。它提供以下語句:while<條件>do
set…end
whilerepeat
set…until<條件>end
repeatfor<變量>as…do
set…end
forif<條件>then
set…else…end
ifcase語句10.4
ORDB的查詢語言
對面向?qū)ο髷?shù)據(jù)庫進行查詢?nèi)钥捎肧QL語句實現(xiàn)。對SQL語言的SELECT句型進行擴充便能處理帶有復合類型、嵌套及引用類型。
本節(jié)以學校、員工和教材ORDB為例,介紹面向?qū)ο蟮腟ELECT句型的用法。10.4.1以關系為值的屬性10.4.2路徑表達式10.4.3嵌套與解除嵌套10.4.1以關系為值的屬性
允許表達式出現(xiàn)在任何關系名可以出現(xiàn)的地方,比如
FROM子句或SELECT子句中。表達式可靈活地用于處理嵌套關系結構。
例10_1:檢索講授“maths”課,采用“Math”教材的教工號和姓名。SELECT
fno,fnameFROM
facultyWHERE
("maths","Math")
IN
teach;例10_2:檢索每一位教師開設的課程。
SELECT
A.fname,B.cnameFROM
faculty
as
A,
A.teach
as
B;10.4.2路徑表達式例10_3:檢索長沙地區(qū)的大學校長姓名。
SELECT
uname,president.fnameFROM
universityWERE
city=‘changsha’;例10_4:檢索長沙地區(qū)各大學超過50歲的教師姓名。
SELECT
A.uname,B.fnameFROM
university
as
A,
A.staff
as
BWHERE
A.city=‘changsha’
AND
B.age>50;10.4.3嵌套與解除嵌套
查詢結果可以嵌套關系形式顯示,也可以INF(非嵌套)形式顯示。將一個嵌套關系轉(zhuǎn)換成INF的過程稱為解除嵌套。
例10_5:在上例中,如果希望查詢結果為嵌套關系,那么可在屬性(fno,fname)上對關系進行嵌套,語句如下:
SELECT
A.unme,set(B.fno,B.fname)as
teachersFROM
university
as
A,A.staff
as
B,B.teach
as
CWHERE
C.editor.uname=A.unameGROUP
BY
A.uname;10.5
OODB與ORDB的比較OODB
ORDB從OOPLC++出發(fā)引入持久數(shù)據(jù)概念,能操作DB形成持久化C++導航式查詢從SQL出發(fā),引入復合類型、繼承性、引用類型等概念結構化查詢符合面向?qū)ο笳Z言符合第4代語言顯式聯(lián)系隱式聯(lián)系惟一的對象標識符用主鍵標識記錄能夠表示“關系”能夠表示“對象”10.6小結
在傳統(tǒng)關系模型基礎上引入面向?qū)ο蠊δ?,提供復合?shù)據(jù)類型,這種模型稱為對象關系模型。支持對象關系模型的DBS稱為ORDBS。對于ORDB的設計,常用的方法是采用對象聯(lián)系圖法。
對象聯(lián)系圖是實體聯(lián)系圖的擴充,是面向?qū)ο髷?shù)據(jù)模型中數(shù)據(jù)結構的一種重要圖例表示方法。它使用了對象標識的概念,使結構的嵌套和遞歸成為可能。
在SQL3中已收入了面向?qū)ο蟮膬?nèi)容,擴充的SQL3適應對象概念并提供一個高級接口。10.7習題1
10.1名詞解釋:平面關系模型、嵌套關系模型、復合對象模型、數(shù)據(jù)的泛化/細化、對象關系模型
10.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加工定制窗簾合同范例
- 醫(yī)院對外加工生產(chǎn)合同范本
- 印刷費用合同范本
- 中介托管房屋合同范本
- 出口商務合同范本
- 出國游學合同范本
- 勞動用工陰陽合同范本
- 公司服務用房合同范本
- 出售汽車拆解機合同范本
- 勞務合同范本口腔
- 2024湖北省金口電排站管理處招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 油井供水合同范例
- 2025年人教部編版語文五年級下冊教學計劃(含進度表)
- 全國計算機等級考試一級試題及答案(5套)
- 銀河證券-科創(chuàng)板認知測評題目及答案
- 產(chǎn)品方案設計模板
- 部隊通訊員培訓
- 物業(yè)公司水浸、水管爆裂事故應急處置預案
- 第四章第三節(jié)幼兒的親子關系(課件)-《幼兒心理學》(人教版第二版)
- 國企投資管理制度
- 部編版三年級下冊語文作業(yè)本參考答案
評論
0/150
提交評論