王曉東
摘 要:按照面向?qū)ο髷?shù)據(jù)模型定義數(shù)據(jù)對(duì)象的行為和聯(lián)系,并以此構(gòu)成的數(shù)據(jù)庫(kù)稱為面向?qū)ο髷?shù)據(jù)庫(kù)。面向?qū)ο髷?shù)據(jù)庫(kù)是面向?qū)ο蟪绦蛟O(shè)計(jì)方法和數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的產(chǎn)物,本文探討了面向?qū)ο髷?shù)據(jù)庫(kù)的教學(xué)方法,引導(dǎo)學(xué)生理解面向?qū)ο髷?shù)據(jù)庫(kù)的基本概念和特征。
關(guān)鍵詞:面向?qū)ο?數(shù)據(jù)庫(kù);教學(xué)
一、引言
數(shù)據(jù)模型是對(duì)現(xiàn)實(shí)世界中實(shí)體本身及其約束的抽象描述和實(shí)體間相互聯(lián)系的邏輯刻畫(huà)。以面向?qū)ο蠓椒橹笇?dǎo)對(duì)數(shù)據(jù)模型做語(yǔ)義解釋,就可構(gòu)建面向?qū)ο髷?shù)據(jù)模型(OODM)。它吸收了面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的核心概念和基本方法,其要點(diǎn)是采用面向?qū)ο蟮挠^點(diǎn)來(lái)描述現(xiàn)實(shí)世界中實(shí)體的邏輯結(jié)構(gòu)和對(duì)象之間的聯(lián)系與限制。講解面向?qū)ο髷?shù)據(jù)庫(kù)時(shí)一定要先介紹OODM,面向?qū)ο髷?shù)據(jù)庫(kù)(OODB)就是按照OODM定義相應(yīng)的數(shù)據(jù)對(duì)象生成的。進(jìn)一步可以向?qū)W生講述,對(duì)OODB進(jìn)行有效管理的數(shù)據(jù)庫(kù)管理系統(tǒng)稱為面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(OODBMS),以O(shè)ODBMS為核心構(gòu)造的數(shù)據(jù)庫(kù)系統(tǒng)則稱為面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(OODBS)。
二、面向?qū)ο蟾拍?/p>
通常在學(xué)習(xí)面向?qū)ο髷?shù)據(jù)庫(kù)之前,學(xué)生已經(jīng)學(xué)習(xí)了傳統(tǒng)數(shù)據(jù)庫(kù)的基本理論。此時(shí)的教學(xué)重點(diǎn)應(yīng)該是講解面向?qū)ο蟮母拍?,以及如何與數(shù)據(jù)庫(kù)理論有機(jī)地結(jié)合,構(gòu)建面向?qū)ο髷?shù)據(jù)庫(kù)。面向?qū)ο螅∣O)中的對(duì)象可以解釋為客觀世界中的客體,面向?qū)ο蠓椒▌t可以理解為以客觀世界中的客體為觀察目標(biāo)的方法。面向?qū)ο蠓椒ǖ耐怀鎏攸c(diǎn)是通過(guò)可構(gòu)造手段表現(xiàn)客觀要求,以及使用有限構(gòu)造手段與步驟建立客觀世界模型。由于計(jì)算機(jī)本身可構(gòu)造的特點(diǎn),從本質(zhì)上來(lái)說(shuō),面向?qū)ο蠓椒ㄋ鶚?gòu)造的模型可在計(jì)算機(jī)上有效實(shí)現(xiàn)。
面向?qū)ο蟾拍钪饕▽?duì)象、類(lèi)、消息、繼承和多態(tài)性,這些概念很抽象嗎,講課時(shí)要盡量向編程方向引導(dǎo)。對(duì)象是面向?qū)ο蠓椒ㄖ械幕締挝?,也是客觀世界中的一種抽象與泛化。在程序中對(duì)象是由一組屬性(數(shù)據(jù)結(jié)構(gòu))以及相關(guān)的一組方法(代碼)封裝起來(lái)的基本單位,它具有封裝性、隱蔽性和穩(wěn)定性等重要特性。封裝是使對(duì)象的外部界面與內(nèi)部實(shí)現(xiàn)之間實(shí)行清晰隔離的一種技術(shù),是面向?qū)ο竽P偷闹饕卣髦?。它使得用戶只能看到?duì)象外在的界面信息,例如規(guī)格說(shuō)明;而看不到對(duì)象內(nèi)部的信息,例如方法實(shí)現(xiàn)的細(xì)節(jié)。對(duì)象的界面實(shí)際上就是若干個(gè)外部接口,它對(duì)外部開(kāi)放并為外部所見(jiàn),而對(duì)象封裝則屏蔽了外界對(duì)其內(nèi)部細(xì)節(jié)的了解,這稱為隱藏。對(duì)象隱藏使得復(fù)雜處理簡(jiǎn)單化,簡(jiǎn)化了對(duì)象的認(rèn)識(shí)與操作。對(duì)象內(nèi)部的行為建立在屬性之上,這就在對(duì)象內(nèi)部建立起以屬性為核心并以行為作為附屬的穩(wěn)定實(shí)體特性,稱為穩(wěn)定性。
類(lèi)是對(duì)具有共同屬性和方法的對(duì)象全體的概括描述,它相當(dāng)于數(shù)據(jù)庫(kù)關(guān)系模型中的關(guān)系模式。類(lèi)給出了屬于其全部對(duì)象屬性與行為的抽象定義,類(lèi)中對(duì)象僅是類(lèi)定義中的一個(gè)實(shí)體。類(lèi)簡(jiǎn)化了人們對(duì)客觀世界的認(rèn)識(shí),眾多的復(fù)雜對(duì)象因?yàn)橛辛祟?lèi)而變得簡(jiǎn)單清晰。類(lèi)之間的基本關(guān)系有三種,分別是繼承關(guān)系、組合關(guān)系和通信關(guān)系。消息是對(duì)象與對(duì)象之間的聯(lián)系信息。由于對(duì)象的封裝性和隱蔽性,對(duì)象的消息僅僅作用于對(duì)象界面,然后再通過(guò)界面進(jìn)一步作用于對(duì)象內(nèi)部。消息用于請(qǐng)求對(duì)象為其服務(wù),它由接收者、操作要求和操作參數(shù)組成。每個(gè)對(duì)象都可以發(fā)送和接收若干消息,程序執(zhí)行依賴于對(duì)象之間的傳遞消息。
繼承使得一個(gè)派生類(lèi)能夠自動(dòng)獲得基類(lèi)所具有的屬性和方法,這是OODM中避免重復(fù)定義的一個(gè)重要機(jī)制。派生類(lèi)除了能繼承基類(lèi)中的屬性和方法之外,還可以用增加和取代的途徑,定義派生類(lèi)所具有的新的屬性和方法。在類(lèi)的繼承過(guò)程中,基類(lèi)屬性與方法在派生類(lèi)中允許有不同的實(shí)現(xiàn)形式、方法與語(yǔ)義,這稱為多態(tài)性。在面向?qū)ο蟮南到y(tǒng)中,利用多態(tài)性可以為系統(tǒng)需求分析和設(shè)計(jì)帶來(lái)好處。
三、面向?qū)ο髷?shù)據(jù)模型
面向?qū)ο髷?shù)據(jù)模型是依據(jù)面向?qū)ο蠓椒ㄋ⒌臄?shù)據(jù)模型,其中包含數(shù)據(jù)模式以及相關(guān)的數(shù)據(jù)操作和數(shù)據(jù)約束。數(shù)據(jù)模式是由對(duì)象結(jié)構(gòu)以及類(lèi)間繼承和組合關(guān)系建立起來(lái)的數(shù)據(jù)間的組織結(jié)構(gòu)關(guān)系,其語(yǔ)義表達(dá)能力遠(yuǎn)強(qiáng)于常用的ER方法。由對(duì)象與類(lèi)中方法建構(gòu)的數(shù)據(jù)操作,其語(yǔ)義也強(qiáng)于傳統(tǒng)數(shù)據(jù)模型。數(shù)據(jù)約束是一種邏輯表示式,可以用類(lèi)的方法表示模式約束。面向?qū)ο髷?shù)據(jù)一般使用方法或者消息表示完整性約束條件,稱為完整性約束方法與完整性約束消息。任何一個(gè)對(duì)象及屬性都有一種類(lèi)型,面向?qū)ο髷?shù)據(jù)模型的類(lèi)型系統(tǒng)由一組自身定義的基本類(lèi)型和一些用來(lái)遞歸地構(gòu)造復(fù)雜類(lèi)型的構(gòu)成器組成。
在講解面向?qū)ο髷?shù)據(jù)模型時(shí),要適時(shí)引導(dǎo)學(xué)生與傳統(tǒng)數(shù)據(jù)模型做比較。面向?qū)ο髷?shù)據(jù)模型是一種層次式的結(jié)構(gòu)模型,以類(lèi)為基本單元,以繼承和組合作為結(jié)構(gòu)方式,從而組成圖結(jié)構(gòu)形式,具有豐富語(yǔ)義,能夠表達(dá)客觀世界復(fù)雜的結(jié)構(gòu)形式。它是將數(shù)據(jù)與操作封裝于一體的結(jié)構(gòu)方式,使得類(lèi)具有獨(dú)立運(yùn)作能力,彌補(bǔ)了傳統(tǒng)數(shù)據(jù)模型中實(shí)體集僅僅是單一數(shù)據(jù)集的不足。面向?qū)ο髷?shù)據(jù)模型具有構(gòu)造多種復(fù)雜抽象數(shù)據(jù)類(lèi)型的能力,使得數(shù)據(jù)類(lèi)型得到大大擴(kuò)充。面向?qū)ο髷?shù)據(jù)模型中的類(lèi)層次結(jié)構(gòu)是一種結(jié)構(gòu)化形式,它可以根據(jù)需要隨時(shí)改變結(jié)構(gòu),從而擁有模式演化能力,不斷更新結(jié)構(gòu)。
四、面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)
面向?qū)ο髷?shù)據(jù)庫(kù)的主要用戶是專業(yè)程序員,而不是普通終端用戶。它的一個(gè)優(yōu)勢(shì)在于可以與面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言一體化,使用者不需要學(xué)習(xí)新的數(shù)據(jù)庫(kù)語(yǔ)言。在教學(xué)過(guò)程中需要強(qiáng)調(diào),面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)作為一種數(shù)據(jù)庫(kù)系統(tǒng),自然要滿足普通數(shù)據(jù)庫(kù)系統(tǒng)的組成要求,但更需注意其自身的特征和要求。數(shù)據(jù)庫(kù)系統(tǒng)的最小需求是有一個(gè)具有優(yōu)化能力的高級(jí)查詢語(yǔ)言,支持持久性和自動(dòng)的事務(wù)并發(fā)控制和恢復(fù),支持復(fù)雜數(shù)據(jù)類(lèi)型快速和有效的查詢、索引和存取。數(shù)據(jù)庫(kù)管理系統(tǒng)是任何一個(gè)數(shù)據(jù)庫(kù)的中樞,面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)由類(lèi)管理、對(duì)象管理和對(duì)象控制三個(gè)部分組成,支持面向?qū)ο髷?shù)據(jù)模型,提供面向?qū)ο蟮臄?shù)據(jù)庫(kù)語(yǔ)言,提供面向?qū)ο髷?shù)據(jù)庫(kù)管理機(jī)制,同時(shí)具有傳統(tǒng)數(shù)據(jù)庫(kù)的管理能力。
五、結(jié)語(yǔ)
面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)首先是一個(gè)面向?qū)ο蟮南到y(tǒng),其出發(fā)點(diǎn)是針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的持久性對(duì)象存儲(chǔ)管理,其核心是充分支持完整地面向?qū)ο蟾拍詈蜋C(jī)制,例如用戶自定義數(shù)據(jù)類(lèi)型、自定義函數(shù)和對(duì)象封裝等必不可少的面向?qū)ο蠓椒ㄌ卣?,與當(dāng)前流行的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言取得一致。其次面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)還是一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),借助擴(kuò)充傳統(tǒng)數(shù)據(jù)庫(kù)語(yǔ)義,使之與核心面向?qū)ο髷?shù)據(jù)模型協(xié)調(diào),以支持傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)中的所有數(shù)據(jù)庫(kù)特征和功能,例如持久性、輔存管理、數(shù)據(jù)共享、事務(wù)管理和一致性控制及恢復(fù)等等。在教學(xué)過(guò)程中應(yīng)充分把握以上要點(diǎn),使得學(xué)生能夠理解面向?qū)ο髷?shù)據(jù)庫(kù)的概念和特征,更好地學(xué)習(xí)相關(guān)理論以及操作技術(shù)。
參考文獻(xiàn):
[1] 湯庸. 高級(jí)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用[M].北京:高等教育出版社, 2008.