建立數(shù)據(jù)模型_第1頁
建立數(shù)據(jù)模型_第2頁
建立數(shù)據(jù)模型_第3頁
建立數(shù)據(jù)模型_第4頁
建立數(shù)據(jù)模型_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第5章 建立數(shù)據(jù)模型 第第5章章 建立數(shù)據(jù)模型建立數(shù)據(jù)模型 5.1 建立實體聯(lián)系模型建立實體聯(lián)系模型5.2 ER模型的設(shè)計方法模型的設(shè)計方法 5.3 ER模型向關(guān)系模型的轉(zhuǎn)化模型向關(guān)系模型的轉(zhuǎn)化 5.4 歷史上有影響的數(shù)據(jù)模型歷史上有影響的數(shù)據(jù)模型 5.5 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)的發(fā)展數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)的發(fā)展 第5章 建立數(shù)據(jù)模型 5.1 建立實體聯(lián)系模型建立實體聯(lián)系模型 數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。 但現(xiàn)實世界總是先抽象成信息世界,然后才能轉(zhuǎn)化為數(shù)據(jù)世界。 信息世界是對現(xiàn)實世界的抽象。 因此,信息世界不可能等價于現(xiàn)實世界。 但是,信息世界必須: (1) 真實。 忽略的是非本質(zhì)內(nèi)容,與研

2、究無關(guān)的內(nèi)容; 抽象的是本質(zhì)內(nèi)容,確實存在的內(nèi)容。 第5章 建立數(shù)據(jù)模型 (2) 完整、 精確。 信息世界應(yīng)有豐富的語義表達(dá)能力,能模擬現(xiàn)實世界的各種情況。 (3) 易于理解,易于修改,特別是易于用戶理解。 (4) 易于向DBMS所支持的數(shù)據(jù)模型轉(zhuǎn)換。 現(xiàn)實世界抽象成信息世界的目的,是為了實現(xiàn)信息的計算機(jī)處理。 第5章 建立數(shù)據(jù)模型 信息世界中的數(shù)據(jù)模型又稱為概念模型。 作為從現(xiàn)實世界到其他數(shù)據(jù)模型轉(zhuǎn)換的中間模型,概念模型不考慮數(shù)據(jù)的操作,而只是用比較有效、 自然的方式描述現(xiàn)實世界的數(shù)據(jù)及其聯(lián)系。 在設(shè)計概念模型時,最著名、 最實用的是P.P.S.Chen于1976年提出的“實體聯(lián)系模型”(E

3、ntityRelationship Approach,簡稱ER模型)。 第5章 建立數(shù)據(jù)模型 5.1.1 實體聯(lián)系模型的基本構(gòu)成 實體聯(lián)系(ER)數(shù)據(jù)模型所采用的三個主要概念是: 實體集、 聯(lián)系集和屬性。 實體集是具有相同類型及相同性質(zhì)(屬性)的實體集合。 聯(lián)系集是指同類聯(lián)系的集合。 在ER模型中,用矩形框表示實體集,矩形框中寫上實體名,用橢圓表示屬性,橢圓中標(biāo)上屬性名,實體的主碼用下劃線表示。 例如實體集職工可用ER模型表示,如圖 5 1 所示。第5章 建立數(shù)據(jù)模型 圖 5 1 職工的ER模型表示 性別年齡姓名職稱職工號職工第5章 建立數(shù)據(jù)模型 實體集之間的聯(lián)系集用菱形表示,并用無向邊與相關(guān)

4、實體集連接,菱形中寫上聯(lián)系名,無向邊上寫上聯(lián)系集的類型。 部門和職工間的聯(lián)系可用圖5 2所示的ER模型表示。圖 5 2 部門和職工的一對多聯(lián)系 部門工作職工1n第5章 建立數(shù)據(jù)模型 在圖 5 2(a)中,無向邊上的1和n表示了部門和職工的聯(lián)系是一對多聯(lián)系(或者說職工與部門之間是多對一聯(lián)系),即表達(dá)了一位職工只能在一個部門中工作,而一個部門中可有位職工這一語義(注: 有些文獻(xiàn)中使用帶箭頭的有向邊表示聯(lián)系集的類型)。 實體集間除了一對多(多對一)聯(lián)系以外,還有一對一、 多對多聯(lián)系。 第5章 建立數(shù)據(jù)模型 企業(yè)中除了職工、 部門實體集以外,還有工資、 項目等實體集,通過分析可知,企業(yè)中每一個職工有一

5、份工資單,而每一份工資單也只屬于一個職工,所以職工和工資實體集之間的關(guān)系為一對一關(guān)系,簡記為1 1。 另外,一個職工可參加多個項目,一個項目也由多個職工來參加,所以職工和項目實體集之間的聯(lián)系是多對多的,簡記為: m n。 它們的ER模型表示分別如圖 5 3、 圖5 4所示。 第5章 建立數(shù)據(jù)模型 圖 5 3 職工和工資的一對一聯(lián)系 職工擁有工資11第5章 建立數(shù)據(jù)模型 圖 5 4 職工和項目的多對多聯(lián)系 職工參加項目mn第5章 建立數(shù)據(jù)模型 5.1.2 多元聯(lián)系 在ER模型中,可以表示兩個以上實體集之間的聯(lián)系,稱為多元聯(lián)系。 如圖 5 5 中的聯(lián)系簽約就是一個三元聯(lián)系。 圖 5 5 包含了如下

6、的語義: 對于特定的影星和電影來說,該影星為演該電影只能和一個制片公司簽約; 但一個制片公司可以為一部電影和幾個影星簽約,一個影星可以和一個制片公司簽約主演多部電影。 第5章 建立數(shù)據(jù)模型 圖 5 5 演員、 電影和制片公司之間的三元聯(lián)系 演員簽約電影m1制片公司n第5章 建立數(shù)據(jù)模型 一個多元聯(lián)系集總可以用多個不同的二元聯(lián)系集來替代。 考慮一個抽象的三元聯(lián)系集R,它聯(lián)系了實體集A、 B、 C。 可引進(jìn)一實體集E替代聯(lián)系R,然后,為實體集E和A、 B、 C建立三個新的二元聯(lián)系集,分別命名為RA、 RB、 RC。 可以將這一過程直接推廣到n元聯(lián)系集的情況。 所以,理論上可以限制ER模型中只包含二

7、元聯(lián)系集。 然而,在大部分情況下,使用多元聯(lián)系集比二元聯(lián)系集更方便。 第5章 建立數(shù)據(jù)模型 因為: (1) 多元聯(lián)系集可以清晰地表示出幾個實體集參與到一個聯(lián)系集的情況,而轉(zhuǎn)換為多個二元聯(lián)系后,難以體現(xiàn)這種參與性。 (2) 對于為替代多元聯(lián)系集而引進(jìn)的實體集,有時不得不為其創(chuàng)建一個標(biāo)識碼。 因為每個實體必須可以相互區(qū)分。 創(chuàng)建的標(biāo)識碼和新建的多個二元聯(lián)系一樣,增加了設(shè)計的復(fù)雜度和對存儲空間的需求。 第5章 建立數(shù)據(jù)模型 5.1.3 聯(lián)系的屬性 聯(lián)系也可以具有單獨(dú)的屬性。 如在圖 5 5 中,如果希望建立某演員和制片公司為一部電影簽約的有關(guān)酬金,此時,不能把酬金作為演員的屬性,因為一個演員可能簽約

8、了多部電影,得到了不同的酬金; 也不能把酬金作為制片公司的屬性,因為制片公司可能對不同影星支付了不同的酬金; 酬金也不能作為電影的屬性,因為一部電影中不同的影星可能得到不同的酬金。 所以應(yīng)該把酬金作為聯(lián)系的屬性,如圖 5 6 所示。 第5章 建立數(shù)據(jù)模型 圖 5 6 聯(lián)系可具有屬性 演員簽約電影m1制片公司n酬金第5章 建立數(shù)據(jù)模型 5.1.4 自身聯(lián)系 在一個聯(lián)系中,一個實體集可以出現(xiàn)兩次或多次,扮演多個不同角色,此種情況稱為實體集的自身聯(lián)系。 一個實體集在聯(lián)系中出現(xiàn)多少次我們就從聯(lián)系到這個實體集畫多少條線,到實體集的每條線代表該實體集所扮演的不同角色。 圖 5 7 是一個自身聯(lián)系的例子。

9、第5章 建立數(shù)據(jù)模型 圖 5 7 一個自身聯(lián)系的例子 職工領(lǐng)導(dǎo)n1第5章 建立數(shù)據(jù)模型 圖中給出了實體集職工的一個自身聯(lián)系“領(lǐng)導(dǎo)”,同一部門中,職工與職工之間可有領(lǐng)導(dǎo)和被領(lǐng)導(dǎo)的關(guān)系,其中一位是另一位的領(lǐng)導(dǎo)。 圖中的聯(lián)系集是1 n,說明了一位職工(領(lǐng)導(dǎo))可領(lǐng)導(dǎo)其他多名職工,而一位職工只被另一位職工(領(lǐng)導(dǎo))領(lǐng)導(dǎo)。 第5章 建立數(shù)據(jù)模型 5.1.5 子類和isa層次聯(lián)系 在信息世界中,常常需要描述這樣的實體集A,A屬于另一實體集B。 A中的實體都有特殊的屬性需要描述,并且這些特殊屬性對B中其他的實體無意義。 在ER模型中,稱A是B的子類,或B是A的父類。 兩類實體之間存在一種層次聯(lián)系Isa(屬于)。

10、 圖 5 8(a)是它們的ER模型的表示方法。 第5章 建立數(shù)據(jù)模型 如果A和B存在Isa聯(lián)系,則A中的每個實體a只和B中的一個實體b相聯(lián)系,而B中的每一個實體最多和A中的一個實體相聯(lián)系。 從這個意義上說,A和B存在一對一的聯(lián)系。 但事實上,a和b是同一事物。 A可以繼承B中的所有屬性,又可以有自己特殊的屬性說明。 用來區(qū)分A的主碼也就是B的主碼。 例如,企業(yè)中的職工實體集和經(jīng)理實體集,存在著 Is-a聯(lián)系,即經(jīng)理是(is a)職工。 經(jīng)理可以繼承職工的所有屬性,但又有“任職時間”這一其他職工沒有的屬性。 其ER模型如圖 5 8(b)所示。 第5章 建立數(shù)據(jù)模型 圖 5 8 具有Is-a聯(lián)系的

11、ER模型A性別姓名年齡職工號職工Is-a經(jīng)理任職時間Is-aB(a)(b)第5章 建立數(shù)據(jù)模型 5.2 ER模型的設(shè)計方法模型的設(shè)計方法 在設(shè)計ER模型時,首先必須根據(jù)需求分析,確認(rèn)實體集、 聯(lián)系集和屬性。 一個企業(yè)(單位)有許多部門,就會有各種業(yè)務(wù)應(yīng)用的要求,需求說明來自對它們的調(diào)查和分析。 有關(guān)需求分析的方法將在第 7 章中介紹,這里只介紹ER模型的設(shè)計方法。 在介紹設(shè)計ER模型的方法之前,首先強(qiáng)調(diào)三條設(shè)計原則: 第5章 建立數(shù)據(jù)模型 (1) 相對原則: 關(guān)系、 實體、 屬性、 聯(lián)系等,是對同一對象抽象過程的不同解釋和理解。 即建模過程實際上是一個對對象的抽象過程,不同的人或同一人在不同的

12、情況下,抽象的結(jié)果可能不同。 (2) 一致原則: 同一對象在不同的業(yè)務(wù)系統(tǒng)中的抽象結(jié)果要求保持一致。 業(yè)務(wù)系統(tǒng)是指建立系統(tǒng)的各子系統(tǒng)。 (3) 簡單原則: 為簡化ER模型,現(xiàn)實世界的事物能作為屬性對待的,盡量歸為屬性處理。 第5章 建立數(shù)據(jù)模型 屬性和實體間并無一定的界限。 如果一個事物滿足以下兩個條件之一的,一般可作為屬性對待: (1) 屬性不再具有需要描述的性質(zhì)。 屬性在含義上是不可分的數(shù)據(jù)項。 (2) 屬性不能再與其他實體集具有聯(lián)系,即ER模型指定聯(lián)系只能是實體集間的聯(lián)系。 例如,職工是一個實體集,可以有職工號、 姓名、 性別等屬性,工資如果沒有需要進(jìn)一步描述的特性,可以作為職工的一個屬

13、性。 但如果涉及到工資的詳細(xì)情況,如: 基本工資、 各種補(bǔ)貼、 各種扣除時,它就成為一個實體集,如圖 5 9 所示。 第5章 建立數(shù)據(jù)模型 圖 5 9 工資由屬性變?yōu)閷嶓w集 職工姓名性別年齡職稱職工號姓名性別年齡職稱職工號工資工資工資號基本工資補(bǔ)貼失業(yè)險職工擁有11第5章 建立數(shù)據(jù)模型 再如,倉庫和貨物的關(guān)系。 如果一種貨物只存放在一個倉庫中,那么倉庫可作為貨物的屬性加以說明。 但如果倉庫與職工發(fā)生聯(lián)系(每個倉庫有若干個保管員),那么倉庫就應(yīng)該作為一個實體集加以說明,如圖 5 10 所示。 設(shè)計一個較大型的企業(yè)或單位的ER模型,一般按照先局部,后整體,最后優(yōu)化的方法進(jìn)行。 下面以企業(yè)職工管理系

14、統(tǒng)為例,說明ER模型的一般設(shè)計過程。 第5章 建立數(shù)據(jù)模型 圖 5 10 倉庫由屬性變?yōu)閷嶓w集 貨號貨物貨號名稱貨物名稱倉庫號存量存放職工職工號姓名年齡管理倉庫號面積存量倉庫mn1n第5章 建立數(shù)據(jù)模型 例 5.1 企業(yè)職工管理中,需要涉及的功能有: 人事處對職工的檔案和部門進(jìn)行管理,包 括職工基本情況,部門的基本情況以及各種職稱、 職務(wù)的管理; 財務(wù)處管理職工的工資情況; 科研處管理項目、 職工參加項目的情況。 第5章 建立數(shù)據(jù)模型 1. 確定局部應(yīng)用范圍,設(shè)計局部ER模型 局部ER模型的設(shè)計步驟如圖 5 11 所示。 1) 確定局部應(yīng)用范圍 本例中初步?jīng)Q定按部門劃分不同的應(yīng)用范圍,即分為三

15、個子模塊: 人事管理、 工資管理和項目管理。 下面以人事管理為例,說明設(shè)計局部ER模型的一般過程。 2) 確認(rèn)實體集 在人事管理中,需要對職工、 部門、 職稱職務(wù)進(jìn)行管理,所以實體集有: 職工、 部門、 職稱職務(wù)。 第5章 建立數(shù)據(jù)模型 圖 5 11 局部ER模型的設(shè)計步驟 需求分析確定局部應(yīng)用范圍定義實體、聯(lián)系、屬性設(shè)計局部E-R圖修改否?進(jìn)入“全局E-R模型的設(shè)計”NY第5章 建立數(shù)據(jù)模型 3) 確認(rèn)實體集間的聯(lián)系集 需要判斷所有二二實體集之間是否存在聯(lián)系。 職工與部門: n 1; 職工與職稱職務(wù): m n,因為多個職工可有同一種職稱或職務(wù),而一個職工既可有職稱又可有職務(wù)。 如某職工具有高

16、級職稱(高工),同時又是處級干部。部門與職稱職務(wù)之間沒有聯(lián)系。 4) 確認(rèn)實體集的屬性 職工: 職工號,姓名,性別,年齡。 部門: 部門號,名稱,電話。 職稱職務(wù): 代號,名稱,津貼,住房面積。 第5章 建立數(shù)據(jù)模型 5) 確認(rèn)聯(lián)系集的屬性 職工與部門的聯(lián)系沒有單獨(dú)的屬性,職工與職稱職務(wù)的聯(lián)系有單獨(dú)的屬性: 職稱或職務(wù)的任職日期。 6) 畫出局部ER模型 圖 5 12、 圖5 13、 5 14分別是人事管理、 工資管理和項目管理局部ER模型。 第5章 建立數(shù)據(jù)模型 圖 5 12 人事管理局部ER模型 職稱職務(wù)任職職工性別年齡工資職工號分工部門部門號名稱電話負(fù)責(zé)人任職日期代號名稱津貼面積姓名nm

17、1n第5章 建立數(shù)據(jù)模型 圖 5 13 工資管理局部ER模型 姓名性別年齡職工號工資工資號基本工資保險實發(fā)工資補(bǔ)貼職工擁有11第5章 建立數(shù)據(jù)模型 圖 5 14 項目管理局部ER模型 職工性別年齡職務(wù)職工號參加項目項目號名稱起始鑒定日期起始日期姓名nm第5章 建立數(shù)據(jù)模型 2. 集成局部ER模型,形成全局初步ER模型 將所有局部ER模型集成為全局ER模型。 設(shè)計過程如圖 5 15 所示。 由于各個局部應(yīng)用所面對的問題不同,且通常由不同的設(shè)計人員進(jìn)行局部ER模型的設(shè)計,因此各個局部ER模型之間必定會存在許多不一致的地方,稱為沖突。 所以在合并各局部ER模型時,首先要合理地消除各局部ER模型之間的

18、沖突。 第5章 建立數(shù)據(jù)模型 圖 5 15 全局ER模型的設(shè)計步驟 局部 E-R 模型檢查并消除沖突合并局部 E-R 圖修改否?進(jìn)入“全局模型優(yōu)化”NY確定公共實體型第5章 建立數(shù)據(jù)模型 沖突主要有以下三類: (1) 命名沖突: 包括實體集名、 聯(lián)系集名、 屬性名之間的同名異義和同義異名等命名沖突。 同名異義,即不同意義的對象在不同的局部ER模型中具有相同的名稱。 同義異名,即同一意義的對象在不同的局部應(yīng)用中具有不同的名稱。 例如,對于實體集職工,人事部門稱之為職工,科研部門可能稱之為科研人員。 命名沖突必須通過各部門一起討論,協(xié)商解決。 第5章 建立數(shù)據(jù)模型 (2) 屬性沖突: 包括屬性值類

19、型、 取值范圍、 取值單位的沖突。 例如,職工號,在一個局部ER模型中定義為整數(shù),在另一個ER模型中定義為字符串。 有些屬性采用不同的度量單位,也屬于屬性沖突。 (3) 結(jié)構(gòu)沖突: 包括兩種情況,一是同一對象在不同應(yīng)用中具有的抽象不同,二是同一實體在各局部應(yīng)用中包含的屬性個數(shù)和屬性排列次序不完全相同。 例如,在人事部門中,工資可能作為職工的一個屬性處理,而在財務(wù)部門中作為一個實體集。 第5章 建立數(shù)據(jù)模型 有時實體集間的聯(lián)系在不同的局部應(yīng)用中,可能會有不同的聯(lián)系集。 根據(jù)需求分析,在兼顧的情況下,對發(fā)生沖突的屬性、 實體集、 聯(lián)系進(jìn)行合理的調(diào)整和綜合,形成一個全系統(tǒng)用戶共同理解和接受的統(tǒng)一的E

20、R模型,是合并各局部ER模型的主要工作和關(guān)鍵所在。 在本例5.1中,就存在結(jié)構(gòu)沖突。 在人事管理ER模型中,工資作為職工的屬性,而在工資管理ER模型中,工資是實體集; 在項目管理ER模型中,職務(wù)是職工的屬性,而在人事管理中,職務(wù)是一個實體集。 在本例中,可將工資和職務(wù)均調(diào)整為實體集。 第5章 建立數(shù)據(jù)模型 在集成全局ER模型時,一般采用兩兩集成的方法,即先將具有相同實體集的兩個ER模型,以該相同實體集為基準(zhǔn)進(jìn)行集成,如果還有相同實體集的ER模型,再次集成,直到所有具有相同實體集的局部ER模型都被集成,得到初步的全局ER模型。 本例5.1中,以職工為公共實體集進(jìn)行集成,其初步ER模型如圖 5 1

21、6 所示。 第5章 建立數(shù)據(jù)模型 圖 5 16 合并后的全局初步ER模型 擁有工資補(bǔ)貼基本工資保險實發(fā)工資職工性別年齡職工號分工部門部門號名稱電話負(fù)責(zé)人任職任職日期代號名稱津貼面積參加項目項目號名稱起始鑒定日期起始日期姓名工資號職稱職務(wù)m1nn1mn1第5章 建立數(shù)據(jù)模型 3. 消除冗余,優(yōu)化全局ER模型 一個“好”的全局ER模型,除能反映用戶功能需求外,還應(yīng)該滿足以下幾個條件: (1) 實體聯(lián)系盡可能少; (2) 實體集所含屬性盡可能少; (3) 實體集間聯(lián)系無冗余。 為了使實體集盡可能少,有時需要合并相關(guān)的實體集,如1 1聯(lián)系的兩個實體集、 具有相同碼的實體集,可以合并。 第5章 建立數(shù)據(jù)

22、模型 有些實體集的屬性可能是冗余的數(shù)據(jù),所謂冗余數(shù)據(jù)是指重復(fù)存在或可由基本數(shù)據(jù)導(dǎo)出的數(shù)據(jù)。 如圖 5 16 所示的工資中的實發(fā)工資即可由其他幾個屬性中計算得到,屬于冗余數(shù)據(jù)。 冗余數(shù)據(jù)一方面浪費(fèi)存儲空間,另一方面又會破壞數(shù)據(jù)的完整性。 如某職工因為某種原因,增加了基本工資,用戶除了修改基本工資一項外,還必須同時修改實發(fā)工資,否則數(shù)據(jù)就會前后不一致。 第5章 建立數(shù)據(jù)模型 但并不是所有的冗余數(shù)據(jù)都必須消除。 有時為了提高效率,不得不以冗余數(shù)據(jù)為代價。 如財務(wù)處頻頻地對每個職工的實發(fā)工資進(jìn)行計算和統(tǒng)計,影響工作效率,可以讓此冗余數(shù)據(jù)存在,但必須有數(shù)據(jù)的關(guān)聯(lián)說明,并作為數(shù)據(jù)模型的完整性約束條件。 第

23、5章 建立數(shù)據(jù)模型 5.3 ER模型向關(guān)系模型的轉(zhuǎn)化模型向關(guān)系模型的轉(zhuǎn)化 ER模型是概念模型的表示。 要使計算機(jī)能處理模型中的信息,首先必須將它轉(zhuǎn)化為具體的DBMS能處理的數(shù)據(jù)類型。 ER模型可以向現(xiàn)有的各種數(shù)據(jù)模型轉(zhuǎn)換,而目前市場上的DBMS大部分是基于關(guān)系數(shù)據(jù)模型的,所以本節(jié)介紹ER模型向關(guān)系數(shù)據(jù)模型的轉(zhuǎn)換方法。 第5章 建立數(shù)據(jù)模型 關(guān)系模型的邏輯結(jié)構(gòu)是一系列關(guān)系模式(表)的集合。 將ER模型轉(zhuǎn)化為關(guān)系模式主要需解決的問題是: 如何用關(guān)系表達(dá)實體集以及實體集間的聯(lián)系。 下面從一個具體例子出發(fā),說明ER模型向關(guān)系模型轉(zhuǎn)換的一般規(guī)則和步驟。 例 5.2 將圖 5 12 所示人事管理局部ER模

24、型向關(guān)系模型轉(zhuǎn)換。 第5章 建立數(shù)據(jù)模型 (1) 將每一個實體集轉(zhuǎn)換為一個關(guān)系模式,實體集的屬性轉(zhuǎn)換成關(guān)系的屬性,實體集的碼即對應(yīng)關(guān)系的碼。 本例中將生成如下三個關(guān)系模式: 職工(職工號,姓名,性別,年齡,工資) 部門(部門號,名稱,電話,負(fù)責(zé)人) 職稱職務(wù)(代號,名稱,津貼,住房面積)第5章 建立數(shù)據(jù)模型 (2) 將每個聯(lián)系集轉(zhuǎn)換成關(guān)系模式。 對于給定的聯(lián)系R,由它所轉(zhuǎn)換的關(guān)系具有以下屬性: 聯(lián)系R單獨(dú)的屬性都轉(zhuǎn)換為該關(guān)系的屬性; 聯(lián)系R涉及到的每個實體集的碼屬性(集)轉(zhuǎn)換為該關(guān)系的屬性。 轉(zhuǎn)換后關(guān)系的碼有以下幾種情況: 若聯(lián)系R為1 1聯(lián)系,則每個相關(guān)實體的碼均可作為關(guān)系的候選碼; 若聯(lián)系

25、R為1 n聯(lián)系,則關(guān)系的碼為n端實體的碼; 若聯(lián)系R為m n聯(lián)系,則關(guān)系的碼為相關(guān)實體碼的集合。 第5章 建立數(shù)據(jù)模型 根據(jù)此規(guī)則,由聯(lián)系轉(zhuǎn)換來的關(guān)系模式為: 分工(職工號,部門號) 任職(職工號,代號,任職日期) (3) 根據(jù)具體情況,把具有相同碼的多個關(guān)系模式合并成一個關(guān)系模式。 具有相同碼的不同關(guān)系模式,從本質(zhì)上描述的是同一實體集,因此可以合并。 合并后的關(guān)系包括兩關(guān)系的所有屬性,這樣可以節(jié)省存儲空間。 如本例中的職工關(guān)系和分工關(guān)系,可以合并為下面同一個關(guān)系模式: 第5章 建立數(shù)據(jù)模型 職工(職工號,姓名,性別,年齡,工資,部門號) 事實上,當(dāng)將聯(lián)系集R轉(zhuǎn)換為關(guān)系模式時,只有當(dāng)R為m n

26、聯(lián)系時,需要重新建立新的關(guān)系模式; 當(dāng)R為1 1、 1 n及Isa的聯(lián)系時,可以不引進(jìn)新的關(guān)系模式,只對與聯(lián)系有關(guān)的實體集的關(guān)系模式作適當(dāng)?shù)男薷摹?請讀者自行歸納其規(guī)律。 第5章 建立數(shù)據(jù)模型 5.4* 歷史上有影響的數(shù)據(jù)模型歷史上有影響的數(shù)據(jù)模型 在關(guān)系數(shù)據(jù)模型產(chǎn)生之前,數(shù)據(jù)庫管理系統(tǒng)普遍使用的數(shù)據(jù)模型是層次和網(wǎng)狀數(shù)據(jù)模型,它們又被稱為非關(guān)系數(shù)據(jù)模型。 它們的數(shù)據(jù)結(jié)構(gòu)和圖的結(jié)構(gòu)是相互對應(yīng)的。 第5章 建立數(shù)據(jù)模型 在非關(guān)系數(shù)據(jù)模型中,概念模型中的實體型反映為記錄型。 因此,圖的結(jié)點(diǎn)表示為記錄型(實體),結(jié)點(diǎn)之間的連線?。ɑ蛴邢蜻叄┍硎緸橛涗浶椭g的聯(lián)系。 每個記錄型可包含若干個字段,對應(yīng)于描

27、述實體的屬性。 由于實際系統(tǒng)一般不允許直接表示多對多聯(lián)系(多對多聯(lián)系應(yīng)轉(zhuǎn)換為多個一對多聯(lián)系),所以下面的討論僅限于一對多(包括一對一)的情況。 通常,把表示“一”的記錄型放在上方,稱為父結(jié)點(diǎn),或父記錄; 表示“多”的記錄型放在下方,稱為子結(jié)點(diǎn),或子記錄。 如圖 5 17 表示部門記錄型和職工記錄型之間的聯(lián)系,是一個基本層次聯(lián)系。 第5章 建立數(shù)據(jù)模型 圖 5 17 一個基本層次聯(lián)系 部門號部門名部門電話負(fù)責(zé)人職工號姓名性別年齡職稱第5章 建立數(shù)據(jù)模型 5.4.1 層次模型 在現(xiàn)實世界中,有許多事物是按層次組織起來的,例如,一個學(xué)校有若干個系,一個系有若干個班級和教研室,一個班級有若干個學(xué)生,一

28、個教研室有若干教師。 其數(shù)據(jù)庫模型如圖 5 18 所示,可見層次模型是一棵倒掛的樹。 圖中系和班級、 班級和學(xué)生、 教研室和教師等都構(gòu)成了雙親與子女關(guān)系,這是層次模型中最基本的數(shù)據(jù)關(guān)系。 層次模型有以下兩個特點(diǎn): 有且僅有一個結(jié)點(diǎn)無父結(jié)點(diǎn),這樣的結(jié)點(diǎn)稱為根結(jié)點(diǎn); 非根結(jié)點(diǎn)都有且僅有一個父結(jié)點(diǎn)。 第5章 建立數(shù)據(jù)模型 在層次模型中,一個結(jié)點(diǎn)可以有幾個子結(jié)點(diǎn),也可以沒有子結(jié)點(diǎn)。 前一種情況下,這幾個子結(jié)點(diǎn)稱為兄弟結(jié)點(diǎn),如圖 5 18 中的班級和教研室; 后一種情況下,該結(jié)點(diǎn)稱為葉結(jié)點(diǎn),如圖 5 18 中的學(xué)生和教師。 圖 5 19 是圖 5 18 數(shù)據(jù)模型的一個實例(一個值)。 該值是計算機(jī)系記錄

29、值及其所有的后代記錄值組成的一棵樹。 第5章 建立數(shù)據(jù)模型 圖 5 18 學(xué)校層次數(shù)據(jù)庫模型 班級教研室學(xué)生教師系第5章 建立數(shù)據(jù)模型 圖 5 19 學(xué)校層次數(shù)據(jù)庫模型的一個實例 計算機(jī)系9801 班軟件教研室硬件教研室張海青李紅李四四王守江盧保成李守田羅成方清芳0101 班9901 班0001 班第5章 建立數(shù)據(jù)模型 5.4.2 網(wǎng)狀模型 把層次模型的限制放開: 一個結(jié)點(diǎn)可以有一個以上的父結(jié)點(diǎn),就得到網(wǎng)狀模型。 網(wǎng)狀模型還可以有的兩個特點(diǎn)是: 可能有一個以上的結(jié)點(diǎn)無父結(jié)點(diǎn); 結(jié)點(diǎn)與其父結(jié)點(diǎn)之間的聯(lián)系可以不止一個。 第5章 建立數(shù)據(jù)模型 由定義可知,層次模型中子女結(jié)點(diǎn)與雙親結(jié)點(diǎn)的聯(lián)系是唯一的,

30、而在網(wǎng)狀模型中這種聯(lián)系可以不唯一。 因此,在網(wǎng)狀模型中,每一個聯(lián)系都必須命名,每一個聯(lián)系都有與之相關(guān)的雙親記錄和子女記錄。 圖 5 20(a)、 (b)、 (c)給出了幾個網(wǎng)狀模型的例子。 第5章 建立數(shù)據(jù)模型 圖 5 20 幾個網(wǎng)狀模型的例子專業(yè) P社團(tuán) M學(xué)生 SP-SM-S工人機(jī)器使用維護(hù)專業(yè)學(xué)生系教師擁有分配教學(xué)學(xué)習(xí)(a)(b)(c)第5章 建立數(shù)據(jù)模型 網(wǎng)狀數(shù)據(jù)模型中記錄的概念類似于關(guān)系數(shù)據(jù)模型中關(guān)系的概念,如: 記錄型 關(guān)系模式 記錄 關(guān)系的元組 記錄的字段 關(guān)系的屬性 在網(wǎng)狀模型中,用系(Set)表示一對多的聯(lián)系,網(wǎng)狀模型的有向圖即是系的集合。 系由一個雙親記錄型和一個或多個子女

31、記錄型構(gòu)成。 系中的雙親記錄型稱為首記錄,子女記錄型稱為屬記錄。 系必需命名。 對應(yīng) 對應(yīng) 對應(yīng) 第5章 建立數(shù)據(jù)模型 在非關(guān)系模型中,子女結(jié)點(diǎn)是不能脫離其父結(jié)點(diǎn)而獨(dú)立存在的,任何一個記錄只有按其路徑查看時才有實際意義。 用戶必須提供父結(jié)點(diǎn)才能查詢子結(jié)點(diǎn)。 因此數(shù)據(jù)庫開發(fā)人員必須熟悉所用模型的結(jié)構(gòu),在應(yīng)用程序中才能明確指出查詢的路徑,才能實現(xiàn)查詢。 這種要求,自然加重了用戶的負(fù)擔(dān)。 第5章 建立數(shù)據(jù)模型 層次模型曾在20世紀(jì)60年代末至70年代初流行過。 其中最有代表性的當(dāng)推IBM公司的IMS。 但層次DBMS提供用戶的數(shù)據(jù)模型和數(shù)據(jù)庫語言比較低級,數(shù)據(jù)獨(dú)立性也較差,所以在關(guān)系數(shù)據(jù)庫之前,網(wǎng)狀

32、DBMS要比層次DBMS用得普遍。 美國CODASYL(Conference on Data Systems Languages)委員會中的DBTG(Data Base Task Group)組在1971年提出了著名的DBTG報告, 對網(wǎng)狀數(shù)據(jù)模型和語言進(jìn)行了定義,在1978年和1981年又作了修改和補(bǔ)充。 第5章 建立數(shù)據(jù)模型 因此,網(wǎng)狀數(shù)據(jù)模型又稱為CODASYL模型或DBTG模型。 在20世紀(jì)70年代,曾經(jīng)出現(xiàn)過大量的網(wǎng)狀DBMS產(chǎn)品。比較著名的有Cullinet軟件公司的IDMS,Honeywell公司的IDS,HP公司的IMAGE等。 有些網(wǎng)狀DBMS目前還在運(yùn)行。 所以說,在數(shù)據(jù)庫

33、的發(fā)展史上,層次模型和網(wǎng)狀模型曾起過重要的作用。 第5章 建立數(shù)據(jù)模型 5.5 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)的發(fā)展數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)的發(fā)展 1. 第一代數(shù)據(jù)庫系統(tǒng) 層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng)稱為第一代數(shù)據(jù)庫系統(tǒng)。 層次模型是分層結(jié)構(gòu),網(wǎng)狀模型是網(wǎng)狀結(jié)構(gòu),它們的數(shù)據(jù)結(jié)構(gòu)都可以用圖來表示。 層次模型對應(yīng)于一棵有根的定向樹,網(wǎng)狀模型對應(yīng)于平面有向圖。 它們統(tǒng)稱為格式化數(shù)據(jù)模型。 實際上層次模型是網(wǎng)狀模型的特例。 第5章 建立數(shù)據(jù)模型 層次模型和網(wǎng)狀模型有許多共同的特征,如IMS和DBTG系統(tǒng)都支持三級模式結(jié)構(gòu); 都用存取路徑來表示數(shù)據(jù)之間的聯(lián)系; 用戶對數(shù)據(jù)的存取,必須按照定義了的存取路徑進(jìn)行; 必須

34、清楚地了解數(shù)據(jù)在數(shù)據(jù)庫中的位置; 對數(shù)據(jù)的操作是一次一個記錄導(dǎo)航式地進(jìn)行; 程序和數(shù)據(jù)都具有較高的物理獨(dú)立性,但邏輯獨(dú)立性較低。 第5章 建立數(shù)據(jù)模型 導(dǎo)航式的數(shù)據(jù)操縱語言的優(yōu)點(diǎn)是存取效率高。 但程序員在編寫應(yīng)用程序時,不僅要知道“干什么”,而且要指出“怎么干”。 即程序員必須掌握數(shù)據(jù)庫的邏輯和物理結(jié)構(gòu),在編寫程序時,必須一步一步地“引導(dǎo)”程序,按照數(shù)據(jù)庫中某一已定義的存取路徑來訪問數(shù)據(jù)。 所以網(wǎng)狀和層次數(shù)據(jù)庫又被稱為“專家數(shù)據(jù)庫”,不能被一般的用戶所接受。 同時,這種導(dǎo)航式數(shù)據(jù)操縱語言,使得數(shù)據(jù)庫應(yīng)用程序的可移植性很差,數(shù)據(jù)的邏輯獨(dú)立性也較差。 第5章 建立數(shù)據(jù)模型 2. 第二代數(shù)據(jù)庫系統(tǒng)

35、支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng)是第二代數(shù)據(jù)庫系統(tǒng)。 層次、 網(wǎng)狀和關(guān)系數(shù)據(jù)模型是數(shù)據(jù)庫誕生以來廣泛應(yīng)用的數(shù)據(jù)模型,一般稱之為傳統(tǒng)數(shù)據(jù)模型。 關(guān)系模型概念清晰、 簡單,易于用戶使用和理解; 有嚴(yán)格的理論基礎(chǔ)關(guān)系代數(shù)。 關(guān)系模型中,只有單一的數(shù)據(jù)結(jié)構(gòu)關(guān)系,實體和實體間的聯(lián)系均用關(guān)系表示。 數(shù)據(jù)結(jié)構(gòu)的單一性,帶來了數(shù)據(jù)操作的簡單化。 克服了非關(guān)系系統(tǒng)中由于信息表示方式的多樣性帶來的操作復(fù)雜性。 第5章 建立數(shù)據(jù)模型 支持非過程化語言(如SQL)操作數(shù)據(jù)。 關(guān)系數(shù)據(jù)庫語言的高度非過程化,將用戶從對數(shù)據(jù)庫的導(dǎo)航式編程中解脫出來,降低了編程難度。 用戶只要提出“做什么”,而無須指明“怎么做”,因此無需了解數(shù)據(jù)庫的存取路徑(存取路徑的選擇由系統(tǒng)自動完成)。 這不但減輕了用戶負(fù)擔(dān),而且有利于提高數(shù)據(jù)獨(dú)立性。 第5章 建立數(shù)據(jù)模型 層次和網(wǎng)狀數(shù)據(jù)模型中采用面向記錄的操作方式

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論