




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第2章 數(shù)據(jù)模型,1,本章主要內(nèi)容,本章將著重介紹一下概念模型、層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P偷葦?shù)據(jù)庫系統(tǒng)的數(shù)據(jù)模型的基本概念和設(shè)計方法,為后面的數(shù)據(jù)庫設(shè)計打下基礎(chǔ)。 (1)數(shù)據(jù)描述 概念設(shè)計、邏輯設(shè)計和物理設(shè)計等各階段中數(shù)據(jù)描述的術(shù)語,概念設(shè)計中實體間二元聯(lián)系的描述(1:1,1:N,M:N)。 (2)數(shù)據(jù)模型 數(shù)據(jù)模型的定義,兩類數(shù)據(jù)模型,邏輯模型的形式定義,ER模型,層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P偷臄?shù)據(jù)結(jié)構(gòu)以及聯(lián)系的實現(xiàn)方式。,2,數(shù)據(jù)模型,2.1 數(shù)據(jù)模型概述 2.2 ER數(shù)據(jù)模型 2.3 層次數(shù)據(jù)模型 2.4 網(wǎng)狀數(shù)據(jù)模型 2.5 關(guān)系數(shù)據(jù)模型 2.6 面向?qū)ο?/p>
2、數(shù)據(jù)模型 本章小結(jié),3,2.1 數(shù)據(jù)模型概述,數(shù)據(jù)模型(Data Model)是對現(xiàn)實世界數(shù)據(jù)特征的抽象,是用來描述數(shù)據(jù)的一組概念和定義。 現(xiàn)實世界中的客觀對象抽象為概念模型; 然后把概念模型轉(zhuǎn)換為DBMS支持的數(shù)據(jù)模型。 其轉(zhuǎn)換過程如右圖。 數(shù)據(jù)模型的分類: 概念數(shù)據(jù)模型(又稱概念模型) 邏輯數(shù)據(jù)模型(又稱數(shù)據(jù)模型),4,2.1.1 數(shù)據(jù)模型的基本組成,數(shù)據(jù)模型是現(xiàn)實世界中的事物及其間聯(lián)系的一種抽象表示,是一種形式化描述數(shù)據(jù)、數(shù)據(jù)間聯(lián)系以及有關(guān)語義約束規(guī)則的方法。它通常由以下三個部分組成: (1)數(shù)據(jù)結(jié)構(gòu) 它是指對實體類型和實體間聯(lián)系的表達(dá)實現(xiàn)。 它是數(shù)據(jù)模型最基本的組織部分,規(guī)定了數(shù)據(jù)模型
3、的靜態(tài)特性。 (2)數(shù)據(jù)操作 是指對數(shù)據(jù)庫進(jìn)行的檢索和更新兩類操作。 (3)數(shù)據(jù)的約束條件 數(shù)據(jù)的約束條件是一組完整性規(guī)則的集合。 它定義了給定數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系應(yīng)具有的制約和依賴規(guī)則。,5,2.1.2 數(shù)據(jù)模型的發(fā)展,20世紀(jì)60年代后期,在文件系統(tǒng)基礎(chǔ)上發(fā)展起來的層次模型、網(wǎng)狀模型和關(guān)系模型等傳統(tǒng)數(shù)據(jù)模型; 20世紀(jì)70年代后期產(chǎn)生的ER數(shù)據(jù)模型 ; 20世紀(jì)80年代以來又相繼推出面向?qū)ο髷?shù)據(jù)模型、基于邏輯的數(shù)據(jù)模型等新的模型。,6,2.2 ER數(shù)據(jù)模型,2.2.1 基本概念 2.2.2 ER圖 2.2.3 擴(kuò)充ER數(shù)據(jù)模型,7,2.2.1 基本概念,ER數(shù)據(jù)模型(即Entity-Re
4、lationship data model,實體聯(lián)系數(shù)據(jù)模型)是P. Chen(Peter Pin-Shan Chen)于1976年提出的一種語義數(shù)據(jù)模型。E-R數(shù)據(jù)模型不同于傳統(tǒng)數(shù)據(jù)模型,它不是面向?qū)崿F(xiàn),而是面向現(xiàn)實世界。 1)實體(Entity) 實體是客觀存在的且可以區(qū)別的事物。 2)聯(lián)系(Relationship) 實體與實體間的關(guān)系抽象為聯(lián)系。 (1)二元聯(lián)系 只有兩個實體參與的聯(lián)系稱為二元聯(lián)系。 在二元聯(lián)系中,ER數(shù)據(jù)模型又把聯(lián)系區(qū)分為一對一(1:1)、一對多(1:n)、和多對多(m:n)三種 。,8,一對一(1:1)聯(lián)系 若兩個實體集中E1、E2中的每一個實體至多和另一個實體集中
5、的一個實體有聯(lián)系,則稱E1和E2是一對一的聯(lián)系,記為1:1。 例如,學(xué)校實體集與校長實體集間的聯(lián)系是一對一聯(lián)系。 一對多(1:n)聯(lián)系 設(shè)兩個實體集E1、E2,若E1中每一個實體與E2中任意個實體(包括零個)相聯(lián)系,而E2中每個實體至多和E1中一個實體有聯(lián)系,則稱E1和E2是一對多的聯(lián)系,記為1:n。 多對多(m:n)聯(lián)系 設(shè)兩個實體集E1、E2,若E1中每一個實體都和另一個實體集中任意個實體(包括零個)有聯(lián)系,則稱E1和E2是多對多的聯(lián)系,記為m:n。 它們?nèi)咧g是包含關(guān)系。如右圖所示。,二元聯(lián)系,9,數(shù)據(jù)聯(lián)系的描述,(1:1)聯(lián)系,(1:n)聯(lián)系,(m:n)聯(lián)系,10,多元聯(lián)系與自反聯(lián)系
6、,(2)多元聯(lián)系 在ER數(shù)據(jù)模型中,二元聯(lián)系這種表示方法還可推廣到多元聯(lián)系,即參與聯(lián)系的實體個數(shù)n3。例如,三元聯(lián)系也可區(qū)分1:1:1、1:1:p、1:n:p、m:n:p等聯(lián)系。 (3)自反聯(lián)系 表示同一個實體集兩部分實體之間的聯(lián)系,是一種特殊的二元聯(lián)系。這兩部分實體之間的聯(lián)系也可以區(qū)分為1:1、1:n和m:n三種。 例如,在“人”這個實體集中存在夫妻之間的1:1聯(lián)系;教師實體集中為了描述領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)關(guān)系,可用1:n聯(lián)系描述;在課程實體集中存在一門課程與另外一門或幾門課程之間的預(yù)選課聯(lián)系。,11,3)屬性,實體或聯(lián)系所具有的特征稱為屬性。 實體是由特征來表征和區(qū)分的,通常一個實體可以由多個屬性
7、來描述。例如,學(xué)生具有姓名、學(xué)號等屬性。 一個實體可以有若干個屬性,但在數(shù)據(jù)庫設(shè)計中通常只選擇部分?jǐn)?shù)據(jù)管理需要的屬性。 屬性往往是不可再細(xì)分的原子屬性,如姓名、性別等。 屬性有型和值的區(qū)別。 例如,學(xué)生實體中的學(xué)號、姓名等屬性名是屬性型,而“021231142”、“李定”等具體數(shù)據(jù)稱為屬性值。 每個屬性值都有一定的變化范圍,通常稱屬性取值的變化范圍為屬性值的域。 例如,性別屬性域是男、女,年齡屬性域是1200。 能唯一標(biāo)識實體集中某一實體的屬性或?qū)傩越M稱為實體集的標(biāo)識關(guān)鍵字或稱關(guān)鍵字。,12,2.2.2 ER圖,ER圖是ER數(shù)據(jù)模型的圖形表示法,是一種直觀表示現(xiàn)實世界的有力工具,目前E-R圖已
8、用于數(shù)據(jù)庫的概念設(shè)計。 1)ER圖的表示方法,實體集名,聯(lián)系,屬性,上述提到的幾種聯(lián)系的ER簡圖如下:,13,2)ER圖的構(gòu)成規(guī)則,(1)畫出實體集及它們之間的聯(lián)系 如果實體集A中實體之間有聯(lián)系A(chǔ)A,則實體間聯(lián)系如下圖:,如果實體集A和實體集B之間有聯(lián)系A(chǔ)B,則實體間聯(lián)系如下圖:,如果三個上實體集A、B、C之間有聯(lián)系A(chǔ)-B-C,則實體間聯(lián)系如下圖:,14,(2)畫出實體集及聯(lián)系的屬性,用無向邊把屬性框連向與其相關(guān)的實體集或聯(lián)系。 例如學(xué)校和教師實體集間存在聘任聯(lián)系,聯(lián)系有“聘任日期”屬性,則一個描述學(xué)校和教師實體集及其聯(lián)系的ER圖如下圖所示。,15,2.2.3 擴(kuò)充ER數(shù)據(jù)模型,1)依賴聯(lián)系和
9、弱實體集 在現(xiàn)實世界中,某些實體集間還存在一種特殊的聯(lián)系依賴聯(lián)系。,例如,在人事管理數(shù)據(jù)庫中存放的職工實體集及其家庭成員實體集,前者以后者的存在為前提,家庭成員實體集依賴于職工實體集。這種依賴另一個實體集的存在而存在的實體集稱為弱實體集,它們與其他實體集間的聯(lián)系稱為依賴聯(lián)系,如右圖所示。,16,2)子類和超類,為了進(jìn)一步描述一個實體集中某些實體的不同特征,從該實體集中取出一部分實體構(gòu)成一個(或多個)新的實體集,稱這個新實體集是原實體集的子類,而原實體集是新實體集的超類。 例如,一個系部的職工實體集,為區(qū)分他們不同的工作特點,可分為教師、教輔人員及管理人員三個子類實體集。其EER數(shù)據(jù)模型實例如下
10、圖所示。,17,3)聚集,在EER數(shù)據(jù)模型中,將聯(lián)系視為參與聯(lián)系的實體集組合而成新實體集,其屬性為參與聯(lián)系的實體的屬性和聯(lián)系的屬性的并。這種新實體集稱為聚集。這樣聯(lián)系也能以聚集的形式參與聯(lián)系。 下圖是應(yīng)用聚集的例子。,18,4)范疇,在描述現(xiàn)實世界時,有時要用到不同類型的實體組成的實體集,引入了范疇這一抽象概念。設(shè)E1、E2、En是n個不同類型的實體集,則范疇T可定義為: 其中:E1、E2、En稱為T的超實體集。 例如,“銀行賬戶”這個實體集的成員可能是單位,也可能是個人。,19,幾個ER事例,部門ER,20,醫(yī)院病房 管理ER,21,系,22,23,2.3 層次數(shù)據(jù)模型,2.3.1 基本概念
11、和結(jié)構(gòu) 2.3.2 數(shù)據(jù)操作 2.3.3 數(shù)據(jù)約束 2.3.4 層次數(shù)據(jù)模型的優(yōu)缺點,24,2.3.1 基本概念和結(jié)構(gòu),層次模型是按照層次結(jié)構(gòu)的形式組織數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)模型,即用樹型結(jié)構(gòu)表示實體集與實體集之間的聯(lián)系。 其中用結(jié)點表示實體集,結(jié)點之間聯(lián)系的基本方式是1:n。 1)記錄和字段 記錄是用來描述某個事物或事物間關(guān)系的命名的數(shù)據(jù)單位,也是存儲的數(shù)據(jù)單位。 它包含若干字段。每個字段也是命名的,字段只能是簡單的數(shù)據(jù)類型,例如整數(shù)、實數(shù)、字符串等。,例如:圖(a)是一個名為系的記錄。 圖(b)是其一個實例。,25,2)雙親子女關(guān)系(簡稱PCR),這是層次數(shù)據(jù)模型中最基本的數(shù)據(jù)關(guān)系。它代表了兩個
12、記錄型之間一對多關(guān)系(1:n)。 例如,一個系有多個班,就構(gòu)成了如圖(a)所示的雙親子女關(guān)系(即PCR型),在“1”方的記錄型稱為雙親記錄,在“n”方的記錄型稱為子女記錄。圖(b)是其一個實例。,26,3)層次數(shù)據(jù)模式,利用PCR可以構(gòu)成層次數(shù)據(jù)模式。 右圖是一個層次數(shù)據(jù)模式的例子。 下圖是層次數(shù)據(jù)模式的一個實例。,層次數(shù)據(jù)模式是一棵樹,其數(shù)據(jù)結(jié)構(gòu)特點為: 在每棵樹僅有根結(jié)點無雙親。 除根結(jié)點外的任何結(jié)點有且有一個雙親結(jié)點,但可以有任意個子女結(jié)點。 樹中無子女的結(jié)點稱為葉結(jié)點。,27,4)層次序列和層次路徑,(1)層次序列 由于存儲器是線性的,層次數(shù)據(jù)模型采用樹的先序遍歷的次序(即從上向下、自
13、左到右)作為存儲次序。這樣所生成的序列稱為層次序列。上例中的層次數(shù)據(jù)模式的實例的層次序列如下圖所示。,(2)層次路徑 層次路徑是用來指明從層次數(shù)據(jù)模式的根結(jié)點到目標(biāo)結(jié)點的一條查詢路徑,通常用從根結(jié)點到目標(biāo)結(jié)點路徑上每個記錄值的排序關(guān)鍵字表示。,28,2.3.2 數(shù)據(jù)操作,1)數(shù)據(jù)查詢 在層次數(shù)據(jù)模型中,若要查找一個記錄,須從根結(jié)點開始,按給定條件沿一個層次路徑查找所需要的記錄。,下面介紹3個查詢操作命令。 (1)GU(Get Unique) 格式:GU查詢條件 該命令執(zhí)行的結(jié)果是查找出滿足條件的第一個條件。 例如,GU 系(系名計算機(jī)系),班(班名計科0202),學(xué)生; (2)GNP(Get
14、Next within Parent) 在當(dāng)前記錄的雙親下,按層次序列查找下一個滿足條件的記錄。 例如,查找計科0202班所有學(xué)生的記錄的查詢操作命令如下: GU 系(系名計算機(jī)系),班(班名計科0202),學(xué)生;/*找到記錄王五*/ While not fail do GNP 學(xué)生;/*找到當(dāng)前記錄王五的雙親計科0202班的所有學(xué)生記錄*/,29,(3)GN(Get Next) 從當(dāng)前記錄位置開始,按照層次序列,不受同一雙親的限制,查找當(dāng)前記錄的下一個滿足條件的記錄。,可以看出,GNP和GN命令通常跟在GU命令后面使用,先由GU命令定位到層次模型中的某個記錄,再用GNP和GN命令查詢所需記錄
15、。,例如,查找計科0202班和計教0201班的所有學(xué)生記錄的查詢操作命令如下: GU 系(系名計算機(jī)系),班(班名計科0202),學(xué)生; While not fail do GNP 學(xué)生;/*找到計科0202班的所有學(xué)生記錄*/ GN 學(xué)生;/*找到計教0201班的第一個學(xué)生記錄,即學(xué)生趙山*/ While not fail do GNP 學(xué)生;/*找到計教0201班的所有學(xué)生記錄*/,30,2)更新操作,(1)數(shù)據(jù)插入(INSERT) 插入操作可先將插入數(shù)據(jù)寫入系統(tǒng)I/O區(qū),然后指定一個由根記錄開始的插入層次路徑,完成數(shù)據(jù)的插入操作。 (2)數(shù)據(jù)刪除(DELETE) 刪除操作是先用查詢命令將
16、待刪除的記錄定位為當(dāng)前記錄,再DELETE命令完成刪除任務(wù)。當(dāng)刪除一個記錄時,則其所從屬的所有子女記錄都被刪除。 (3)數(shù)據(jù)修改(REPLACE) 先用查詢語句將要修改的記錄定位為當(dāng)前記錄,并將該記錄讀到I/O區(qū),在I/O區(qū)對數(shù)據(jù)進(jìn)行修改,然后用REPLACE命令可將修改后的記錄值寫回到數(shù)據(jù)庫中。,31,2.3.3 數(shù)據(jù)約束,層次數(shù)據(jù)模型的數(shù)據(jù)約束主要是由層次結(jié)構(gòu)的約束造成的。 (1)除了根結(jié)點外,任何其他結(jié)點不能離開其雙親結(jié)點而孤立存在。 這條約束表明了在插入一個子女記錄時,必須與一個約束雙親記錄相聯(lián)系,否則不能插入;在刪除一個記錄時,其子女記錄也將自動被刪除。這一約束為數(shù)據(jù)操作造成了不便。
17、 (2)層次數(shù)據(jù)模型所體現(xiàn)的記錄之間的聯(lián)系只限于二元1:n或1:1的聯(lián)系,這一約束了用層次模型描述現(xiàn)實世界的能力。 對于現(xiàn)實世界中存在的二元m:n聯(lián)系和多元m:n:p等復(fù)雜聯(lián)系,就不能用層次模型直接進(jìn)行表達(dá)了。通常采用下列的分解法或虛擬記錄法來解決這一問題。,32,分解法,例如,學(xué)生記錄型和課程記錄型是一個m:n聯(lián)系,將無法用層次模型直接表達(dá)學(xué)生與課程之間的多對多聯(lián)系。 可以采用分解的方法,把一個二元m:n聯(lián)系分解成兩個二元1:n聯(lián)系。,33,虛擬記錄法,由上可以看出,這種分解法會導(dǎo)致大量的存儲數(shù)據(jù)冗余。為了減少分解所帶來的數(shù)據(jù)冗余,可以采用虛擬記錄法(IMS系統(tǒng)所采用的方法)。,虛擬記錄法是
18、在數(shù)據(jù)庫中,如果有一個記錄x要在多處被引用,則只存儲一份這樣的記錄,其他需要引用的地方用其指針代替。這種用指針代替的記錄稱為虛擬記錄,記為V.x。右圖表示學(xué)生和課程間的m:n聯(lián)系。,(3)由于層次結(jié)構(gòu)中的全部記錄都是以有序樹的形式組織起來,當(dāng)對某些層次結(jié)構(gòu)進(jìn)行修改時,不允許改變原數(shù)據(jù)庫中記錄類型之間的雙親子女聯(lián)系,這使得數(shù)據(jù)庫的適應(yīng)能力受到限制。 (4)虛擬記錄的指針必須指向一個實際存在的記錄。有虛擬記錄指向的記錄不得刪除。 (5)虛擬記錄不能為根記錄。,34,2.3.4 層次數(shù)據(jù)模型的優(yōu)缺點,層次數(shù)據(jù)模型的優(yōu)點主要有: 層次模型結(jié)構(gòu)簡單、層次分明,便于在計算機(jī)內(nèi)實現(xiàn)。 在層次結(jié)構(gòu)中,從根結(jié)點
19、到樹中任一結(jié)點均存在一條唯一的層次路徑,這為有效地進(jìn)行數(shù)據(jù)操縱提供了條件。 在層次結(jié)構(gòu)中除根結(jié)點外所有結(jié)點有且只有一個雙親結(jié)點,故實體集之間的聯(lián)系可用雙親結(jié)點唯一地表示,因此層次模型DBMS對層次結(jié)構(gòu)的數(shù)據(jù)有較高的處理效率。 層次數(shù)據(jù)模型提供了良好的完整性支持。,層次數(shù)據(jù)模型的缺點主要有: 層次數(shù)據(jù)模型缺乏直接表達(dá)現(xiàn)實世界中非層次型結(jié)構(gòu)的復(fù)雜聯(lián)系,如多對多聯(lián)系。 對插入或刪除操作有較多的限制。 查詢子女結(jié)點必須通過雙親結(jié)點。,35,2.4 網(wǎng)狀數(shù)據(jù)模型,2.4.1 基本概念和結(jié)構(gòu) 2.4.2 數(shù)據(jù)操作 2.4.3 數(shù)據(jù)約束 2.4.4 網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點,36,2.4.1 基本概念和結(jié)構(gòu),為
20、了克服層次模型結(jié)構(gòu)描述非層次型事物的局限,20世紀(jì)60年代末美國CODASYL委員會提出了網(wǎng)狀數(shù)據(jù)模型。 1)記錄與數(shù)據(jù)項(Data Items) 與層次數(shù)據(jù)模型類似,在網(wǎng)狀數(shù)據(jù)模型中,也是以記錄為數(shù)據(jù)的存儲單位。記錄包含若干數(shù)據(jù)項,數(shù)據(jù)項相當(dāng)于字段。 但與層次數(shù)據(jù)模型中的字段不同,網(wǎng)狀數(shù)據(jù)模型中的數(shù)據(jù)項不一定是簡單的數(shù)據(jù)類型,也可以是多值的和復(fù)合的數(shù)據(jù)。 2)系(Set) 在網(wǎng)狀數(shù)據(jù)模型中,數(shù)據(jù)間的聯(lián)系用系表示。,系代表了兩記錄之間的1:n聯(lián)系,系用一條弧表示,箭頭指向“n”方?!?”方的記錄稱首記錄,“n”方的記錄稱屬記錄。右圖是簡單網(wǎng)狀結(jié)構(gòu)的例子。,37,3)系型,(1)單屬系型 由主記
21、錄型和單一的屬記錄組成。 例如班級記錄型和學(xué)生記錄型組成的班級學(xué)生系是單屬系型。,例如,在學(xué)校中有教師和職工,他們有不同的記錄結(jié)構(gòu)可形成兩個記錄類型。當(dāng)建立一個學(xué)校教職工系型時,可將教師記錄型和職工記錄型作為學(xué)校的兩個屬記錄型。如右圖。,(2)多屬系型 該系型中包含三個以上記錄型,其中一個為首記錄型,其余為屬記錄型。,(3)奇異系型 這是一種只有屬記錄型而無首記錄型的一種特殊系型。 一個單位的所有部門可以組成一個無首記錄型的奇異系型。,部門,38,4)聯(lián)系記錄,但對于二元m:n聯(lián)系、和多元m:n:p聯(lián)系也不能直接用系來表示,而是采用聯(lián)系記錄這個輔助數(shù)據(jù)結(jié)構(gòu),來將實體集間的m:n聯(lián)系轉(zhuǎn)換成兩個1
22、:n聯(lián)系。 例如學(xué)生記錄與課程記錄之間的m:n聯(lián)系可通過引入聯(lián)系記錄學(xué)生選課記錄,將其轉(zhuǎn)換為兩個1:n聯(lián)系。如下圖所示。,39,由于網(wǎng)狀數(shù)據(jù)模型中規(guī)定,一個記錄型不能在一個系中既作為系的首記錄又作為系的屬記錄,即系不能直接用來表示一個記錄型的自身聯(lián)系。我們通??刹捎迷黾勇?lián)系記錄的方法來解決。 例如,職工間的領(lǐng)導(dǎo)關(guān)系可以表示成一個環(huán),如圖(a)所示,增加一個聯(lián)系記錄型領(lǐng)導(dǎo)記錄,該記錄存放領(lǐng)導(dǎo)職務(wù)等信息,從而形成兩個系類型S1、S2,如圖(b)所示。,40,2.4.2 數(shù)據(jù)操作,1)查詢操作 查詢操作主要是通過查詢語句FIND和取數(shù)語句GET配合使用實現(xiàn)的。 FIND語句主要是查找定位數(shù)據(jù)庫中滿足
23、條件的記錄為當(dāng)前記錄。 GET語句主要是將當(dāng)前記錄取出來供應(yīng)用程序使用。,(1)利用關(guān)鍵字查詢 根據(jù)記錄中的一個或多個數(shù)據(jù)項來查詢某個記錄。其格式如下: FIND記錄名RECORDVIA系名SETUSING數(shù)據(jù)項,(2)導(dǎo)航式查詢 根據(jù)系值環(huán)形鏈上的指針,沿著環(huán)形鏈一個記錄值接一個記錄值地進(jìn)行查詢,直至找到欲查詢的記錄。其格式如下: FIND FIRST/LAST/NEXT/PRIOR/N 記錄名 RECORD WITHIN 系名,(3)利用當(dāng)前值查詢 利用當(dāng)前值查詢可以快速地查出剛訪問過的某個記錄。其格式為: FINDCURRENTOF記錄名RECORD 或 FINDCURRENTOF系名S
24、ET,41,2)更新操作,網(wǎng)狀數(shù)據(jù)模型的更新操作分為對記錄的更新和對系的更新兩類。 (1)對記錄的更新 插入操作(STORE):存儲一個記錄到數(shù)據(jù)庫中,并按插入系籍的約束,加入有關(guān)的系值中。 修改操作(MODIFY):修改指定記錄中的數(shù)據(jù)項。 刪除操作(ERASE):從數(shù)據(jù)庫中刪除指定記錄。 (2)對系的更新 CONNECT(加入):把屬記錄加入到相應(yīng)的系值中。 RECONNECT(轉(zhuǎn)接):把屬記錄從原系值轉(zhuǎn)移到另一個指定的系值中。 DISCONNECT(撤離):把屬記錄從其所在的系值中撤離,但該記錄仍保留在數(shù)據(jù)庫中。,42,(3)任一個系值有且僅有一個首記錄值,但可以有任意個屬記錄值。 (4
25、)每個系型有且僅有一個首記錄型,但可以有多個屬記錄型,且屬記錄型必須至少有一個。,2.4.3 數(shù)據(jù)約束,(1)一個記錄值不能出現(xiàn)在同一個系型的多個系值中。,(2)一個記錄型不能同時為同一個系的首記錄和屬記錄。,43,2.4.4 網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點,網(wǎng)狀數(shù)據(jù)模型的優(yōu)點主要有: 能夠更為直接地描述現(xiàn)實世界。 具有存取效率高等良好性能。 網(wǎng)狀數(shù)據(jù)模型的缺點主要有: 數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,不便于終端用戶掌握。 其數(shù)據(jù)定義語言(DDL)、數(shù)據(jù)操作語言(DML)較為復(fù)雜,用戶掌握使用較為困難。 數(shù)據(jù)獨(dú)立性較差。,44,2.5 關(guān)系數(shù)據(jù)模型,2.5.1 基本概念 2.5.2 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 2.5.3
26、 數(shù)據(jù)操作 2.5.4 數(shù)據(jù)約束 2.5.5 關(guān)系數(shù)據(jù)模型的優(yōu)缺點,45,2.5.1 基本概念,1)屬性和域 在現(xiàn)實世界中,要描述一個事物,常常取其若干特征來表示。這些特征稱為屬性。 例如,大學(xué)生可用姓名、學(xué)號、性別、系別等屬性來描述。 每個屬性對應(yīng)一個值的集合,作為其可以取值的范圍,稱為屬性的域。 例如姓名的域是所有合法姓名的集合;性別的域是男,女等。 2)關(guān)系和元組 一個對象可以用一個或多個關(guān)系來表示。關(guān)系就是定義在它的所有屬性域上的多元關(guān)系。設(shè)為R,它有屬性A1、A2、An,其對應(yīng)的域分別為D1、D2、Dn,則關(guān)系R可表示為: R(A1/D1,A2/D2,An/Dn)或R(A1,A2,A
27、n) 元組是關(guān)系中各個屬性的一個取值的集合。 3)鍵 關(guān)系中的某一屬性或?qū)傩越M的值唯一地決定其他所有屬性的值,也就是唯一決定一個元組,而其任何真子集無此性質(zhì),則稱這個屬性或?qū)傩越M為該關(guān)系的候選鍵,簡稱鍵。,46,2.5.2 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu),1)關(guān)系數(shù)據(jù)模型的描述功能 (1)用二維表格表示實體集及其屬性 設(shè)實體集R有屬性A1、A2、An,實體集的型可用一個二維表的框架表示。見表(a)。表中每一元組表示實體集的值,見表(b),47,(2)用二維表描述實體集間的聯(lián)系,關(guān)系模型不僅可用二維表表示實體集,而且可用二維表描述實體集間的聯(lián)系。 例如,在圖書管理中經(jīng)常用“借書人統(tǒng)計表”和“圖書登記表”
28、如下表所示。,由于借書人與圖書之間是m:n聯(lián)系,在前面用層次模型或網(wǎng)狀模型將是一項復(fù)雜的事情。在這里用二維表“借書登記表”來表示借書人和圖書兩個實體集之間的聯(lián)系則十分簡便,如下表所示。,48,2)關(guān)系的性質(zhì),關(guān)系是一個二維表,表中的每一行對應(yīng)一個元組,表中的每一列有一個屬性名且對應(yīng)一個域。 列是同質(zhì)的,即每一列的值來自同一域。 關(guān)系中的每一個屬性是不可再分解,即所有域都應(yīng)是原子數(shù)據(jù)的集合。 關(guān)系中任意兩個元組不能完全相同。 關(guān)系中行的排列順序、列的排列順序是無關(guān)緊要的。 每個關(guān)系都有關(guān)鍵字的屬性集唯一標(biāo)識各個元組。,關(guān)系是一個簡單的二維表,其主要性質(zhì)為:,49,3)關(guān)系模式,關(guān)系模式是關(guān)系中信
29、息內(nèi)容結(jié)構(gòu)的描述。 它包括關(guān)系名、屬性名、每個屬性列的取值集合、數(shù)據(jù)完整性約束條件以及各屬性間固有的數(shù)據(jù)依賴關(guān)系等??梢员硎緸椋?R(U,D,DOM,I,) 其中:R為關(guān)系名;U為組成關(guān)系的全部屬性的集合;D是U中屬性取值的值域;DOM是屬性列到域的映射,即DOM:UD;I是一組完整性約束條件;是屬性集間的一組數(shù)據(jù)依賴。 通常,可用R(U)來簡化地表示關(guān)系模式。 例如,描述大學(xué)生的關(guān)系模式表示為: STUDENT(學(xué)號,姓名,性別,年齡,所在系,籍貫,入學(xué)年份),50,2.5.3 數(shù)據(jù)操作,1)關(guān)系代數(shù) 關(guān)系代數(shù)是由一組以關(guān)系作為運(yùn)算對象的特定的關(guān)系運(yùn)算所組成,用戶通過這組運(yùn)算對一個或多個關(guān)系
30、進(jìn)行“組合”與“分割”,從而得到所需要的新關(guān)系。 關(guān)系代數(shù)又分為傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算。 (1)傳統(tǒng)的集合運(yùn)算 主要包括并運(yùn)算、差運(yùn)算、交運(yùn)算和笛卡兒乘積運(yùn)算等。 (2)專門的關(guān)系運(yùn)算 包括選擇運(yùn)算、投影運(yùn)算、連接運(yùn)算、自然連接運(yùn)算、半連接運(yùn)算、自然半連接運(yùn)算和除運(yùn)算等。 其中:, 五種運(yùn)算為關(guān)系代數(shù)的基本運(yùn)算,組成了一個完備的操作集,任何其他關(guān)系代數(shù)操作都可以用這五種操作來表示。 2)關(guān)系演算 除了用關(guān)系代數(shù)表示關(guān)系操作外,還可以用謂詞演算來表達(dá)關(guān)系的操作,稱為關(guān)系演算。關(guān)系演算又可分為元組關(guān)系演算和域關(guān)系演算。,51,2.5.4 數(shù)據(jù)約束,1)域完整性約束 域完整性約束限定了屬性值
31、的取值范圍,并由語義決定一個屬性值是否允許為空值NULL。,2)實體完整性約束 每個關(guān)系應(yīng)有一個主鍵,每個元組的主鍵的值應(yīng)是唯一的。主鍵的值不能為NULL,否則無法區(qū)分和識別元組。,3)參照完整性約束 參照完整性約束是不同關(guān)系間的約束,當(dāng)存在關(guān)系間的引用時,要求不能引用不存在的元組。,52,2.5.5 關(guān)系數(shù)據(jù)模型的優(yōu)缺點,1)關(guān)系數(shù)據(jù)模型的優(yōu)點 關(guān)系模型有堅實的理論基礎(chǔ)。 在關(guān)系模型中,二維表不僅能表示實體集,而且能方便地表示實體集間的聯(lián)系。 關(guān)系數(shù)據(jù)模型中數(shù)據(jù)的表示方法統(tǒng)一、簡單,便于計算機(jī)實現(xiàn),使用用戶使用。 數(shù)據(jù)獨(dú)立性高。 2)關(guān)系數(shù)據(jù)模型的缺點 : 關(guān)系數(shù)據(jù)模型的主要缺點是查詢效率常
32、常不如非關(guān)系數(shù)據(jù)模型。 關(guān)系數(shù)據(jù)模型等傳統(tǒng)數(shù)據(jù)模型還存在不能以自然的方式表示實體集間的聯(lián)系、語義信息不足、數(shù)據(jù)類型過少等弱點。 因此自20世紀(jì)80年代后期以來,陸續(xù)出現(xiàn)了以面向?qū)ο髷?shù)據(jù)模型為代表的新的數(shù)據(jù)模型。,53,2.6 面向?qū)ο髷?shù)據(jù)模型,面向?qū)ο髷?shù)據(jù)模型(Object-Oriented Data Model,簡稱OO數(shù)據(jù)模型)是面向?qū)ο蟪绦蛟O(shè)計方法與數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物,用以支持非傳統(tǒng)應(yīng)用領(lǐng)域?qū)?shù)據(jù)模型提出的新需求。,2.6.1 對象和對象標(biāo)識符 2.6.2 屬性和方法 2.6.3 封裝和消息傳遞 2.6.4 類和實例 2.6.5 類層次結(jié)構(gòu)和繼承 2.6.6 持久性和版本 2.6.7
33、 多態(tài)、重載、重定義與動態(tài)聯(lián)編 2.6.8 與關(guān)系數(shù)據(jù)模型的比較,54,2.6.1 對象和對象標(biāo)識符,1)對象 在面向?qū)ο髷?shù)據(jù)模型中,所有現(xiàn)實世界中的實體都模擬為對象,小至一個整數(shù)、字符串,大至一個公司、一部電影,都可以看成對象。 2)對象標(biāo)識符 在OO數(shù)據(jù)模型中,每個對象都有一個系統(tǒng)內(nèi)唯一不變的標(biāo)識符,稱為對象標(biāo)識符(OID)。 OID一般是由系統(tǒng)產(chǎn)生,用戶不得修改。OID是區(qū)別對象的唯一標(biāo)志,與對象的屬性值無關(guān)。 如果兩對象的屬性值和方法一樣,但OID不同,則仍認(rèn)為是兩個“相等”而不同的對象。 如果一個對象的屬性值修改了,只要其標(biāo)識符不變,則仍認(rèn)為是同一對象。 因此,OID可看成是對象的替
34、身,以構(gòu)造更復(fù)雜的對象。,55,2.6.2 屬性和方法,1)屬性 每個對象包含若干屬性,用以描述對象的狀態(tài)、組成和特性。,2)方法 除了屬性外,對象還包含若干方法,用以描述對象的行為特性。 方法又稱為操作,它可以改變對象的狀態(tài),對對象進(jìn)行各種數(shù)據(jù)庫操作。方法的定義與表示包含兩個部分: 一是方法的接口,說明方法的名稱、參數(shù)和結(jié)果的類型; 二是方法的實現(xiàn)部分,是用程序編寫的一個過程,以實現(xiàn)方法的功能。 一個對象一般是由一組屬性、一組方法,再冠以一個OID組成。,屬性也是對象,它又可能包含其他對象作為其屬性。這種遞歸引用對象的過程可以繼續(xù)下去,從而組成各種復(fù)雜的對象。右圖是一個事例:,56,2.6.
35、3 封裝和消息傳遞,1)封裝 在OO數(shù)據(jù)模型中,系統(tǒng)把一個對象的屬性和方法封裝成一個整體。 對象的封裝性體現(xiàn)在以下幾個方面: 對象具有清晰的邊界; 對象具有統(tǒng)一的外部接口; 對象的內(nèi)部實現(xiàn)是不公開的。,消息一般由操作者、接收者、操作參數(shù)三個部分組成。對象、消息之間的關(guān)系如右圖所示。,2)消息傳遞 對象是封裝的,對象與外界、對象之間的通信一般只能借助于消息。消息傳送給對象,調(diào)用對象的相應(yīng)方法,進(jìn)行相應(yīng)的操作,再以消息形式返回操作的結(jié)果。這種通信機(jī)制稱為消息傳遞。,57,2.6.4 類和實例,1)類 類是具有共同屬性和方法的對象的集合,這些屬性和方法可以在類中統(tǒng)一說明。 同類對象在數(shù)據(jù)結(jié)構(gòu)和操作性質(zhì)方面具有共性。 例如大學(xué)生、研究生是一些有共同性質(zhì)有對象,可能抽象為一個學(xué)生類。,2)實例 類中每個對象稱為該類的一個實例。 同一個類中對象的屬性名雖然是相同的,但這些屬性的取值會因各個實例而異。,3)元類 在一些OO數(shù)據(jù)模型中,把類也看做對象,因此由類可以組成新的類。這種由類組成的類稱為元類,元類的實例是類。,S1 程宏 19 計算機(jī),58,2.6.5 類層次結(jié)構(gòu)和繼承,1)類層次結(jié)構(gòu) 在類層次結(jié)構(gòu)中,一個類的下層可以是多個子類;一個類的上層也可以有多個超類。下圖是一個類學(xué)校層次結(jié)構(gòu)的例子。,59,2)繼承,在類繼承時,可能發(fā)生屬性名和方法名的同名沖突: (1)各超類之間的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T型連接高強(qiáng)螺栓受拉承載力設(shè)計方法及可靠性研究
- 基于TPACK理論的師范生人工智能素養(yǎng)現(xiàn)狀及培養(yǎng)策略研究
- 編制會議材料培訓(xùn)
- 貓和老鼠手繪課件設(shè)計指南
- 體外診斷試劑性能指標(biāo)
- 領(lǐng)航職業(yè)英語課件
- 顱腦CTA技術(shù)課件
- 預(yù)防踩踏事故班會課件
- 預(yù)防毒品安全知識課件
- 預(yù)防小學(xué)生溺水的課件
- 2025全員安全生產(chǎn)責(zé)任制范本
- 林業(yè)行政執(zhí)法培訓(xùn)
- 電大考試試題及答案商法
- 廣西壯族自治區(qū)柳州市上進(jìn)聯(lián)考2024-2025學(xué)年高一下學(xué)期6月期末聯(lián)合考試數(shù)學(xué)試題(含答案)
- 八年級暑假前家長會課件
- 福建省南平市2024-2025學(xué)年八年級下學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2025年河南省高考地理試卷真題(含答案)
- 2025屆廣東省惠州惠城區(qū)五校聯(lián)考英語八下期末檢測試題含答案
- 工廠績效計件方案(3篇)
- 2025年湖南省中考?xì)v史試卷真題(含答案)
- 高中英語必背3500單詞表完整版
評論
0/150
提交評論