- 電子商務(wù)數(shù)據(jù)庫技術(shù)(第3版)
- 潘郁
- 4563字
- 2019-12-11 15:42:19
2.2.3 邏輯數(shù)據(jù)模型
20世紀(jì)60年代末70年代初相繼出現(xiàn)了層次模型、網(wǎng)狀模型和關(guān)系模型,它們的特點是能有效地存儲數(shù)據(jù)和處理數(shù)據(jù),但其表達能力有限,不能描述和模擬現(xiàn)實世界中的復(fù)雜應(yīng)用,基本上是面向機器的。所以,對于決策支持系統(tǒng)和計算機輔助制造這樣的復(fù)雜應(yīng)用,其描述能力和建模能力顯然不足。隨著面向?qū)ο蠹夹g(shù)和人工智能的發(fā)展,在傳統(tǒng)的數(shù)據(jù)模型基礎(chǔ)上產(chǎn)生了一批面向用戶的語義模型,如前面所述的E-R模型和函數(shù)數(shù)據(jù)模型等。盡管如此,三大傳統(tǒng)數(shù)據(jù)模型特別是關(guān)系模型仍是當(dāng)今使用的主流模型。
在現(xiàn)實世界中,許多事物之間的聯(lián)系可以用一種層次結(jié)構(gòu)表示出來。如一個學(xué)校由若干個學(xué)院組成,一個學(xué)院由若干個系組成,一個系由若干個專業(yè)組成等。層次模型就是根據(jù)現(xiàn)實世界中存在的這些層次結(jié)構(gòu)特點而提出的一種數(shù)據(jù)模型。層次模型是三大傳統(tǒng)數(shù)據(jù)模型中出現(xiàn)最早的一個。基于層次模型的數(shù)據(jù)庫管理系統(tǒng)IMS是IBM公司于1968年推出的世界上第一個數(shù)據(jù)庫管理系統(tǒng)。
層次模型是用樹型結(jié)構(gòu)來表示實體集之間聯(lián)系的模型。層次模型可以看作是一棵以記錄型為節(jié)點的有向樹,它把整個數(shù)據(jù)庫的結(jié)構(gòu)表示成一個有序樹的集合,而這些有序樹的每一個節(jié)點是一個由若干數(shù)據(jù)項組成的邏輯記錄型。
圖2.9給出的是一個層次模型的例子。它表示的是一個學(xué)校教務(wù)管理系統(tǒng)的信息。學(xué)校設(shè)有若干個學(xué)院,每個學(xué)院設(shè)有若干個系,每個系設(shè)有若干個專業(yè)和若干個教師,每個專業(yè)和教師只屬于一個系。另外,每個專業(yè)開設(shè)若干門課程并有若干個學(xué)生,而一個學(xué)生只能屬于某一個專業(yè),一門課程也只能由一個專業(yè)開設(shè)。
由圖2.9可見,該層次模型有六個記錄類型,即學(xué)院、系、專業(yè)、教師、課程和學(xué)生。學(xué)院稱為根記錄類型,它是系記錄類型的父記錄類型,而系則是學(xué)院記錄類型的子記錄類型。在層次模型中只有一個節(jié)點而無父節(jié)點,該節(jié)點稱為根節(jié)點(“學(xué)院”記錄類型)。其他節(jié)點是依據(jù)根節(jié)點而存在的,它們有且僅有一個父節(jié)點。同一個父節(jié)點下的子節(jié)點稱為兄弟節(jié)點,無子節(jié)點的節(jié)點則稱為葉節(jié)點。在層次模型中,父節(jié)點與子節(jié)點的聯(lián)系都是一對多的聯(lián)系,且總是從父節(jié)點指向子節(jié)點。所以,記錄之間的聯(lián)系可以不用命名,只要指出父節(jié)點就可以找到其子節(jié)點。在層次模型中,從根節(jié)點開始,按照父—子聯(lián)系,依次連接的記錄序稱為層次路徑。在層次模型中,數(shù)據(jù)是按層次路徑存取的。

圖2.9 教務(wù)管理系統(tǒng)的層次模型
層次模型只能表示一對多聯(lián)系,而現(xiàn)實世界中事物之間的聯(lián)系往往是很復(fù)雜的,既有一對多聯(lián)系,也有多對多聯(lián)系。為了反映多對多聯(lián)系,層次模型引入一種輔助數(shù)據(jù)結(jié)構(gòu)——虛擬記錄類型和邏輯指針,將其轉(zhuǎn)換成一對多聯(lián)系。例如,在學(xué)校教務(wù)管理系統(tǒng)中,如果要反映學(xué)生選修課程的情況,因為學(xué)生和課程之間為多對多聯(lián)系,所以要引進一個虛擬記錄類型“選修”和邏輯指針,將其轉(zhuǎn)換成一對多聯(lián)系(如圖2.10所示)。

圖2.10 多對多層次表示法
層次模型是一種簡單的模型,無法描述復(fù)雜的聯(lián)系,表達能力弱,所以其適用范圍受限。
美國負責(zé)開發(fā)COBOL(Common Business Oriented Language)語言的委員會CODASYL(Conference on Data System Languages)的一個小組DBTG(Data Base Task Group)在其發(fā)表的一個報告中提出了網(wǎng)狀模型。網(wǎng)狀模型中的每一個節(jié)點代表一個記錄類型,聯(lián)系用鏈接指針來實現(xiàn)。網(wǎng)狀模型突破了層次模型的兩點限制,即允許節(jié)點有多于一個的父節(jié)點;可以有一個以上的節(jié)點沒有父節(jié)點。在網(wǎng)狀模型中,子女到雙親的聯(lián)系不是唯一的,即在網(wǎng)狀模型中可以很容易地實現(xiàn)多對多聯(lián)系,可以描述更復(fù)雜的現(xiàn)實世界。在網(wǎng)狀模型中,給每一對父節(jié)點與子節(jié)點之間的聯(lián)系都要指定名字,這種聯(lián)系稱為系。系中的父節(jié)點稱為首記錄型或主記錄型,子節(jié)點稱為屬記錄型。
如圖2.11所示,圖中有四個系,分別為“專業(yè)-學(xué)生”系、“專業(yè)-課程”系、“學(xué)生-成績”系和“課程-成績”系。

圖2.11 學(xué)生選課網(wǎng)狀模型
網(wǎng)狀模型的主要缺點是數(shù)據(jù)結(jié)構(gòu)本身及其相應(yīng)的數(shù)據(jù)操作語言都極為復(fù)雜。一般來說,結(jié)構(gòu)越復(fù)雜,則其功能越強,所要處理的操作也越多,因此,相應(yīng)的數(shù)據(jù)操作語言也就越復(fù)雜。而且由于網(wǎng)狀模型結(jié)構(gòu)復(fù)雜,故給數(shù)據(jù)庫設(shè)計帶來了困難。
基于層次模型和網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)開發(fā)出來以后,在繼續(xù)開發(fā)新型數(shù)據(jù)庫系統(tǒng)的工作中,研究人員發(fā)現(xiàn)層次模型和網(wǎng)狀模型缺乏堅實的理論基礎(chǔ),難以開展深入的理論研究。于是人們開始尋求具有嚴(yán)格的理論基礎(chǔ)的數(shù)據(jù)模型。在這種背景下,埃德加·弗蘭克·科德于1970年提出了關(guān)系模型。關(guān)系模型是目前數(shù)據(jù)庫系統(tǒng)普遍采用的數(shù)據(jù)模型,也是應(yīng)用最廣的數(shù)據(jù)模型。自1980年以來,計算機廠商推出的數(shù)據(jù)庫管理系統(tǒng)的產(chǎn)品幾乎都是支持關(guān)系模型的。關(guān)系模型流行的主要原因在于:關(guān)系模型對數(shù)據(jù)及數(shù)據(jù)聯(lián)系的表示非常簡單,無論是數(shù)據(jù)還是數(shù)據(jù)間的聯(lián)系都用關(guān)系來表示;關(guān)系模型支持高度非過程化的說明型語言表示數(shù)據(jù)的操作;同時,關(guān)系模型具有嚴(yán)格的理論基礎(chǔ)——關(guān)系代數(shù)。
關(guān)系模型通過表格數(shù)據(jù),而不是通過指針連接來表示和實現(xiàn)兩個實體集間的聯(lián)系?;蛘呖梢酝ㄋ椎卣f,關(guān)系就是二維表格,表格中的每一行稱作一個元組,它相當(dāng)于一個記錄值;每一列是一個屬性值,列可以命名,稱為屬性名,此處的屬性與前面所講的實體屬性相同,屬性值相當(dāng)于記錄中的數(shù)據(jù)項或字段值。關(guān)系是元組的集合,如果表格有n列,則稱該關(guān)系為n元關(guān)系。關(guān)系具有以下屬性:①表格中的每一列都是不可再分的基本屬性;②各列的名字不同,列的順序不重要;③行的次序無關(guān)緊要;④關(guān)系中不允許有完全相同的兩行存在。
表2.1就是一個關(guān)系模型的例子。
表2.1 員工信息表

通常,我們將關(guān)系名及其屬性名集合稱為關(guān)系模式,具體的關(guān)系是實例。表2.1中員工信息表的關(guān)系模式:員工信息表(員工編碼,姓名,部門,性別,職務(wù))。其中“員工信息表”為關(guān)系名,這個關(guān)系描述了某單位員工的數(shù)據(jù)結(jié)構(gòu)。
在支持關(guān)系模型的數(shù)據(jù)庫中,數(shù)據(jù)被看作是一個個的關(guān)系,描述數(shù)據(jù)庫全部關(guān)系的一組關(guān)系模式稱為關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫模式。任何時刻數(shù)據(jù)庫的所有具體的關(guān)系組成關(guān)系型數(shù)據(jù)庫的一個實例。
關(guān)系模型具有以下特點。
(1)描述的一致性。
無論是信息世界中的實體還是聯(lián)系都是用一個關(guān)系來描述,從而保證了數(shù)據(jù)操作語言相應(yīng)的一致性,對于每一種基本操作功能,都只需要一種操作運算。
(2)利用公共屬性連接。
關(guān)系模型中的各個關(guān)系之間都是通過公共屬性發(fā)生聯(lián)系的。
(3)結(jié)構(gòu)簡單直觀。
采用表結(jié)構(gòu),用戶容易理解,有利于和用戶進行交互,并且在計算機中實現(xiàn)也極為方便。
(4)有嚴(yán)格的理論基礎(chǔ)。
二維表的數(shù)學(xué)基礎(chǔ)是關(guān)系數(shù)據(jù)理論,對二維表進行的數(shù)據(jù)操作相當(dāng)于在關(guān)系理論中對關(guān)系進行運算。這樣,在關(guān)系模型中整個模型定義與操作均建立在嚴(yán)格的數(shù)學(xué)理論基礎(chǔ)上。
(5)語言表達簡練。
在進行數(shù)據(jù)庫查詢時,用嚴(yán)密的關(guān)系運算表達式來描述查詢,從而使查詢語句的表達非常簡單直觀。
關(guān)系模型的缺點是:在執(zhí)行查詢操作時需要執(zhí)行一系列的查表、拆表、并表操作,故執(zhí)行時間較長。但是,采用優(yōu)化技術(shù)的當(dāng)代關(guān)系數(shù)據(jù)庫管理系統(tǒng)的查詢操作的效率完全不輸于建立在其他數(shù)據(jù)模型上的數(shù)據(jù)庫系統(tǒng)。
正因為以上特點,關(guān)系模型和關(guān)系數(shù)據(jù)庫管理系統(tǒng)已成為當(dāng)代數(shù)據(jù)庫技術(shù)的主流。
前面討論的層次模型、網(wǎng)狀模型和關(guān)系模型由于結(jié)構(gòu)上的不同,它們都有各自的特點。為了進行比較,首先要給出比較的標(biāo)準(zhǔn),由此才能看出一個模型的好壞。對于數(shù)據(jù)模型,一般人們主要關(guān)心以下兩個方面。
(1)使用容易程度。
數(shù)據(jù)庫系統(tǒng)的用戶是各種各樣的。因此,為用戶提供一個良好接口的數(shù)據(jù)庫系統(tǒng)將是十分受歡迎并具有生命力的。所以,在選擇數(shù)據(jù)模型時需要選擇一個用戶使用方便的(即能使程序設(shè)計和表達詢問很容易的)模型。
(2)實現(xiàn)效率。
這方面要考慮數(shù)據(jù)庫系統(tǒng)的實現(xiàn)難易和效率如何。這就要求一個數(shù)據(jù)模型允許DBMS方便地把概念模式和概念到物理的映像轉(zhuǎn)換成一種既能節(jié)省空間又能快速響應(yīng)詢問的實現(xiàn)。
就使用方便來說,關(guān)系模型是最佳的。關(guān)系模型對用戶的要求很低,有功能豐富的、容許表達對關(guān)系數(shù)據(jù)庫進行各種詢問的高級語言,這些語言對于那些不熟悉程序設(shè)計的人來說是十分合適的。相對而言,層次模型和網(wǎng)狀模型這樣的格式化模型要求用戶既要了解記錄類型存取路徑,又要了解它們之間的相互關(guān)系,這些都增加了用戶的負擔(dān)。
從實現(xiàn)效率來看,層次模型和網(wǎng)狀模型要優(yōu)于關(guān)系模型。格式化模型的存取路徑事先都是規(guī)定好的,鏈技術(shù)可以大顯身手,這樣存取的效率就比較高,而且實現(xiàn)起來相對也容易些。
從存儲空間上來說,格式化模型較關(guān)系模型更能合理利用空間。在關(guān)系模型中是靠冗余來實現(xiàn)連接的。
以前,商品化的數(shù)據(jù)庫系統(tǒng)幾乎全都是基于層次模型和網(wǎng)狀模型。因為這樣的數(shù)據(jù)庫系統(tǒng)著眼于大型數(shù)據(jù)庫的維護,而這些數(shù)據(jù)模型又很容易支持它們對高效率實現(xiàn)的要求。但是,現(xiàn)在關(guān)系模型已經(jīng)受到人們的重視。一方面,因為用于設(shè)計大型數(shù)據(jù)庫的概念也適用于中小型數(shù)據(jù)庫,而小型數(shù)據(jù)庫比大型數(shù)據(jù)庫要多得多。隨著小型數(shù)據(jù)庫的應(yīng)用,關(guān)系模型固有的容易使用的特點越來越突出。另一方面,關(guān)系模型那些表面上的低效性有許多是能夠消除的。例如,可以通過優(yōu)化技術(shù)來提高效率。此外,用層次模型和網(wǎng)狀模型設(shè)計的數(shù)據(jù)庫系統(tǒng)是通過指針鏈來查找數(shù)據(jù),而用關(guān)系模型設(shè)計的數(shù)據(jù)庫系統(tǒng)則是通過查表來查找數(shù)據(jù)。改進指針鏈的查找收效甚微,而加快查表速度則大有潛力可挖。所有這些都促使人們采用關(guān)系模型。
人們將層次模型、網(wǎng)狀模型和關(guān)系模型統(tǒng)稱為傳統(tǒng)數(shù)據(jù)模型。由于歷史條件和技術(shù)條件的限制,傳統(tǒng)數(shù)據(jù)模型也有弱點。
(1)以記錄為基礎(chǔ),不能很好地面向用戶和應(yīng)用。
傳統(tǒng)數(shù)據(jù)模型的基本結(jié)構(gòu)是記錄,而人們對現(xiàn)實世界的認識往往通過實體,實體不一定與記錄相對應(yīng)。一個記錄中可能包含多個實體,同樣一個實體也可能分在多個記錄中加以描述。有些實體也可能僅僅作為某個記錄中的屬性出現(xiàn),無記錄與其相對應(yīng)。記錄的劃分往往從實現(xiàn)考慮,而不一定反映人們對現(xiàn)實世界的認識。另外,記錄中的屬性以及每個屬性的域都是事先定義好了的,無法靈活地描述紛繁的現(xiàn)實世界。
(2)不能以自然的方式表示實體間的聯(lián)系。
實體的描述是數(shù)據(jù)模型的一個方面,實體間聯(lián)系也是數(shù)據(jù)模型的一個重要方面。層次模型和網(wǎng)狀模型雖然提供了描述聯(lián)系的手段,但這些描述聯(lián)系的方式不是實體間聯(lián)系的自然表現(xiàn),而是聯(lián)系在數(shù)據(jù)庫中的物理實現(xiàn)。把本來應(yīng)該對用戶隱蔽的物理實現(xiàn)的細節(jié)當(dāng)作數(shù)據(jù)模型的組成部分呈現(xiàn)在用戶面前,這不但不便于用戶的理解和使用,而且也有損于數(shù)據(jù)的物理獨立性。盡管關(guān)系模型避免了這個缺點,實體間的聯(lián)系或通過一個表示聯(lián)系的關(guān)系來表示,或通過公共屬性來體現(xiàn),但是關(guān)系模型表示聯(lián)系的方式不是顯式的,故用戶很難從數(shù)據(jù)模式看出實體間的全面聯(lián)系,現(xiàn)實世界中的實體聯(lián)系被湮沒在關(guān)系和屬性之中。所以,三種傳統(tǒng)數(shù)據(jù)模型都不能自然地表示實體間的聯(lián)系。
(3)數(shù)據(jù)類型太少,難以滿足應(yīng)用需要。
傳統(tǒng)數(shù)據(jù)模型原來都是面向事物處理的。它們一般只提供最常用的一些簡單的數(shù)據(jù)類型,如整數(shù)、實數(shù)、字符串等。隨著計算機應(yīng)用的發(fā)展,不但要求數(shù)據(jù)庫系統(tǒng)提供更豐富的數(shù)據(jù)類型和允許用戶定義新的數(shù)據(jù)類型,還希望屬性值不直接給出,而由規(guī)則或過程導(dǎo)出。隨著時態(tài)和空間數(shù)據(jù)庫的發(fā)展,要求數(shù)據(jù)附有時間屬性和空間屬性,這些都是傳統(tǒng)的數(shù)據(jù)模型不能直接支持的。
由于傳統(tǒng)數(shù)據(jù)模型存在上述的不足,從20世紀(jì)70年代后期開始陸續(xù)出現(xiàn)了各種非傳統(tǒng)數(shù)據(jù)模型,這些數(shù)據(jù)模型出現(xiàn)在關(guān)系模型之后,因此又稱為后關(guān)系數(shù)據(jù)模型。如前面介紹的E-R模型以及面向?qū)ο竽P汀?/p>
- 新媒體運營從入門到精通
- 網(wǎng)上支付:網(wǎng)商成功之道
- 增長五力:品牌內(nèi)容驅(qū)動增長方法論
- 你好,短視頻!從零開始做Vlog
- 網(wǎng)絡(luò)營銷實務(wù)
- 全球互聯(lián)網(wǎng)金融商業(yè)模式:格局與發(fā)展
- 網(wǎng)店裝修實務(wù)
- 視覺營銷與運營實戰(zhàn)從入門到精通
- 商業(yè)銀行操作風(fēng)險管理實務(wù)
- 直播帶貨:口才訓(xùn)練+成交技巧+高效溝通
- 抖音運營實戰(zhàn)一本通
- 電子商務(wù)產(chǎn)品質(zhì)量網(wǎng)絡(luò)輿情分析與管控理論
- 跨境電商多平臺運營:實戰(zhàn)基礎(chǔ)(第4版)
- 淘寶客服超級口才訓(xùn)練與實用技巧:網(wǎng)店銷售中的144個經(jīng)典溝通實例
- 可穿戴設(shè)備:移動互聯(lián)網(wǎng)新浪潮