《數(shù)據(jù)庫原理》知識點之面向?qū)ο髷?shù)據(jù)庫

字號:

考核要求:達到“識記”
    層次知識點:基本概念
    8.3.1 面向?qū)ο髷?shù)據(jù)模型的基本概念
    (1)對象:客觀世界中的實體經(jīng)過抽象稱為問題空間中的對象,它是對一組信息及其操作的描述。
    對象由三部分組成:一組變量;一組消息;一組方法
    (2)類:是具有相同的變量名和類型、相同的消息和使用相同的方法的對象的集合。
    類中的每個對象稱為類的實例
    (3)繼承性:允許不同類的對象共享他們公共部分的結(jié)構(gòu)和特性。
    單重繼承性:一個子類繼承某一個超類的結(jié)構(gòu)和特性,稱為單重繼承性。
    多重繼承性:一個子類繼承多個超類的結(jié)構(gòu)和特性,稱為多重繼承性。
    (4)對象標識:與對象的物理存儲位置無關(guān),也與數(shù)據(jù)的描述方式和值無關(guān)的一個標識。
    在對象創(chuàng)建的瞬間,由系統(tǒng)賦給每個對象一個“標識”,即系統(tǒng)內(nèi)的一個的指針,在對象生存期內(nèi),這個標識不可改變。
    在面向?qū)ο笳Z言中,對象標識是一個指針一級的概念
    (5)對象包含:不同類的對象之間存在的包含關(guān)系稱為對象包含,包含其他對象的對象稱為復(fù)合對象。
    Notice:繼承是" is a "聯(lián)系,包含是"is part of"聯(lián)系。比如卡車是車的子類(繼承),車包含輪胎(包含)
    8.3.2 持久化程序設(shè)計語言
    OOPL:面向?qū)ο笳Z言對現(xiàn)有的OOPL進行擴充,使之能處理數(shù)據(jù)庫,這樣的OOPL稱為持久性程序設(shè)計語言。
    持久化語言與嵌入式SQL語言的不同:
    (1)格式轉(zhuǎn)換對程序員透明;
    (2)程序員可直接操縱持久數(shù)據(jù)。
    (具體內(nèi)容可參見教材P211)
    一些基本概念:
    持久數(shù)據(jù):是指創(chuàng)建這些數(shù)據(jù)的程序運行終止后數(shù)據(jù)依然存在于系統(tǒng)之中。
    持久指針:持久化指針不像內(nèi)存中的指針,它在程序執(zhí)行后及數(shù)據(jù)重組后仍保持有效。 在概念上,持久指針可以看作是數(shù)據(jù)庫中指向?qū)ο蟮闹羔槨?BR>    查找數(shù)據(jù)庫對象的三種方法:
    (1)根據(jù)對象名找對象;
    (2)根據(jù)對象標識找對象;
    (3)將對象按聚集形式存放,然后利用程序循環(huán)找所需對象。
    8.3.3 持久化C++系統(tǒng)
    C++中可以說明一個稱為Persistent_Object(持久對象)的類及其屬性和方法來支持持久性, 而其他的類作為該類的子類繼承其持久性。
    ODMG(Object DataBase Management Group)對C++的擴充有兩個方面:
    C++對象定義語言(ODL)
    C++對象操縱語言(OML)
    總結(jié):
    在OO技術(shù)與DB技術(shù)相結(jié)合過程中,采取了兩條不同的途徑:
    一條途徑是在傳統(tǒng)的關(guān)系模型基礎(chǔ)上,提供復(fù)合數(shù)據(jù)類型,擴充SQL語言使之能處理新的數(shù)據(jù)結(jié)構(gòu)。這種模型稱為對象關(guān)系模型,還不能說是嚴格意義上的面向?qū)ο髷?shù)據(jù)模型。但是用戶容易接受,易于推廣。
    另一條途徑是在OOPL C++基礎(chǔ)上進行擴充,能操作持久數(shù)據(jù),處理數(shù)據(jù)庫,形成持久化C++系統(tǒng),即OODBS.但較難提供對說明性查詢的支持,因此推廣使用難度較大。