【數(shù)據(jù)庫原理及應用】對象關系數(shù)據(jù)庫 -_第1頁
【數(shù)據(jù)庫原理及應用】對象關系數(shù)據(jù)庫 -_第2頁
【數(shù)據(jù)庫原理及應用】對象關系數(shù)據(jù)庫 -_第3頁
【數(shù)據(jù)庫原理及應用】對象關系數(shù)據(jù)庫 -_第4頁
【數(shù)據(jù)庫原理及應用】對象關系數(shù)據(jù)庫 -_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論