第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)_第1頁(yè)
第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)_第2頁(yè)
第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)_第3頁(yè)
第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)_第4頁(yè)
第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩107頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)基礎(chǔ)數(shù)據(jù)描述第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)數(shù)據(jù)管理技術(shù)的發(fā)展121.1.1人工管理1.1.2文件系統(tǒng)1.1.3數(shù)據(jù)庫(kù)1.1.4XML技術(shù)1.2.1概念設(shè)計(jì)中的數(shù)據(jù)描述1.2.2邏輯設(shè)計(jì)中的數(shù)據(jù)描述1.2.3物理設(shè)計(jì)中的數(shù)據(jù)描述1.2.4數(shù)據(jù)聯(lián)系的描述3數(shù)據(jù)模型31.3.1數(shù)據(jù)抽象的過(guò)程1.3.2概念模型1.3.3邏輯模型1.3.4外部模型1.3.5內(nèi)部模型1.3.6數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)1.3.7數(shù)據(jù)獨(dú)立性1.4.1數(shù)據(jù)庫(kù)管理系統(tǒng)1.4.2數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)44數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程關(guān)系數(shù)據(jù)庫(kù)的規(guī)范設(shè)計(jì)76關(guān)系模型51.5.1基本術(shù)語(yǔ)1.5.2關(guān)系的定義和性質(zhì)1.5.3關(guān)系模型的3類(lèi)完整性規(guī)則20世紀(jì)50年代中期以前,計(jì)算機(jī)主要用于科學(xué)計(jì)算。那時(shí)的計(jì)算機(jī)硬件方面,外存只有卡片、紙帶及磁帶,沒(méi)有磁盤(pán)等直接存取的存儲(chǔ)設(shè)備;軟件方面,只有匯編語(yǔ)言,沒(méi)有操作系統(tǒng)和高級(jí)語(yǔ)言,更沒(méi)有管理數(shù)據(jù)的軟件;數(shù)據(jù)處理的方式是批處理。這些決定了當(dāng)時(shí)的數(shù)據(jù)管理只能依賴(lài)人工來(lái)進(jìn)行。這個(gè)時(shí)期的數(shù)據(jù)管理的特點(diǎn)如下:(1)數(shù)據(jù)不進(jìn)行保存。計(jì)算機(jī)主要用于科學(xué)計(jì)算,一個(gè)程序?qū)?yīng)一組數(shù)據(jù),在進(jìn)行計(jì)算時(shí),將原始數(shù)據(jù)隨程序一起輸入內(nèi)存,運(yùn)算處理后將結(jié)果數(shù)據(jù)輸出,不需要長(zhǎng)期保存數(shù)據(jù)。(2)沒(méi)有專(zhuān)門(mén)的軟件對(duì)數(shù)據(jù)進(jìn)行管理。數(shù)據(jù)由程序自己管理,每個(gè)應(yīng)用程序都要包括存儲(chǔ)結(jié)構(gòu)、存取方法、輸入/輸出方式等內(nèi)容。(3)只有程序的概念,基本上沒(méi)有文件(File)的概念。(4)數(shù)據(jù)面向程序,即一組數(shù)據(jù)對(duì)應(yīng)一個(gè)程序。1.1.1人工管理返回620世紀(jì)50年代末期至60年代中期,計(jì)算機(jī)技術(shù)有了提高,計(jì)算機(jī)的應(yīng)用范圍不斷擴(kuò)大,不僅用于科學(xué)計(jì)算,還用于信息管理。這時(shí),外部存儲(chǔ)器已有磁盤(pán)、磁鼓等直接存取存儲(chǔ)設(shè)備;軟件則出現(xiàn)了高級(jí)語(yǔ)言和操作系統(tǒng)。操作系統(tǒng)中的文件系統(tǒng)是專(zhuān)門(mén)管理外存的數(shù)據(jù)管理軟件。數(shù)據(jù)處理的方式有批處理,還有聯(lián)機(jī)實(shí)時(shí)處理。這一階段的數(shù)據(jù)管理有的特點(diǎn)如下:(1)數(shù)據(jù)以文件形式可長(zhǎng)期保存在外部存儲(chǔ)器的磁盤(pán)上。用戶(hù)可以反復(fù)對(duì)文件進(jìn)行查詢(xún)、修改和插入等操作。(2)文件系統(tǒng)提供了數(shù)據(jù)與程序之間的存取方法。應(yīng)用程序與數(shù)據(jù)之間有了一定的獨(dú)立性,即程序只需用文件名就可與數(shù)據(jù)打交道,不必關(guān)心數(shù)據(jù)的物理位置。由操作系統(tǒng)的文件系統(tǒng)提供存取方法(讀/寫(xiě))。(3)文件組織已多樣化,有索引文件、鏈接文件和直接存取文件等,但文件之間相互獨(dú)立、缺乏聯(lián)系。數(shù)據(jù)之間的聯(lián)系要通過(guò)程序去構(gòu)造。(4)數(shù)據(jù)面向應(yīng)用。數(shù)據(jù)不再屬于某個(gè)特定的程序,可以重復(fù)使用。1.1.2文件系統(tǒng)數(shù)據(jù)不一致數(shù)據(jù)冗余數(shù)據(jù)聯(lián)系弱7文件系統(tǒng)缺陷返回820世紀(jì)60年代末期以來(lái),計(jì)算機(jī)應(yīng)用更加廣泛,數(shù)據(jù)管理規(guī)模擴(kuò)大,數(shù)據(jù)量急劇增長(zhǎng),磁盤(pán)技術(shù)取得重要進(jìn)展,具有數(shù)百兆字節(jié)容量和快速存取的磁盤(pán)陸續(xù)進(jìn)入市場(chǎng),成本也不高,這就為數(shù)據(jù)庫(kù)技術(shù)的產(chǎn)生提供了良好的物質(zhì)條件。用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)模型不僅描述數(shù)據(jù)本身的特征,還要描述數(shù)據(jù)之間的聯(lián)系。數(shù)據(jù)不再面向特定的某個(gè)或多個(gè)應(yīng)用,而是面向整個(gè)應(yīng)用系統(tǒng)。這樣數(shù)據(jù)冗余明顯減少,實(shí)現(xiàn)了數(shù)據(jù)共享。2.數(shù)據(jù)獨(dú)立性好。數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的差別可以很大。用戶(hù)以簡(jiǎn)單的邏輯結(jié)構(gòu)操作數(shù)據(jù)而無(wú)須考慮數(shù)據(jù)的物理結(jié)構(gòu)。1.1.3數(shù)據(jù)庫(kù)93.數(shù)據(jù)庫(kù)系統(tǒng)為用戶(hù)提供了方便的用戶(hù)接口。用戶(hù)可以使用查詢(xún)語(yǔ)言或終端命令操作數(shù)據(jù)庫(kù),也可以用程序方式(如用COBOL、C一類(lèi)高級(jí)語(yǔ)言和數(shù)據(jù)庫(kù)語(yǔ)言聯(lián)合編制的程序)操作數(shù)據(jù)庫(kù)。4.數(shù)據(jù)庫(kù)系統(tǒng)提供以下4方面的數(shù)據(jù)控制功能:(1)數(shù)據(jù)庫(kù)的恢復(fù):在數(shù)據(jù)庫(kù)被破壞或數(shù)據(jù)不可靠時(shí),系統(tǒng)有能力把數(shù)據(jù)庫(kù)恢復(fù)到最近某個(gè)正確狀態(tài)。(2)數(shù)據(jù)庫(kù)的并發(fā)控制:對(duì)程序的并發(fā)操作加以控制,防止數(shù)據(jù)庫(kù)被破壞,杜絕提供給用戶(hù)不正確的數(shù)據(jù)。(3)數(shù)據(jù)的完整性:保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)始終是正確的。(4)數(shù)據(jù)安全性:保證數(shù)據(jù)的安全,防止數(shù)據(jù)丟失或被竊取、破壞。5.增加了系統(tǒng)的靈活性。對(duì)數(shù)據(jù)的操作不一定以記錄為單位,可以以數(shù)據(jù)項(xiàng)為單位。10定義1.1數(shù)據(jù)庫(kù)(DataBase,DB)。數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶(hù)共享,具有較小冗余度、數(shù)據(jù)間聯(lián)系緊密而又有較高的數(shù)據(jù)獨(dú)立性等特點(diǎn)。11定義1.2數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)。數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶(hù)與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它為用戶(hù)或應(yīng)用程序提供訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的方法,包括數(shù)據(jù)庫(kù)的建立、查詢(xún)、更新及各種數(shù)據(jù)控制。數(shù)據(jù)庫(kù)管理系統(tǒng)是基于某種數(shù)據(jù)模型,可以分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮偷取?2定義1.3數(shù)據(jù)庫(kù)系統(tǒng)(DataBaseSystem,DBS)。數(shù)據(jù)庫(kù)系統(tǒng)是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù)、方便多用戶(hù)訪(fǎng)問(wèn)的計(jì)算機(jī)硬件、軟件、數(shù)據(jù)資源及數(shù)據(jù)庫(kù)管理員和用戶(hù)組成的系統(tǒng),即它是采用數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng)。定義1.4數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)技術(shù)是研究數(shù)據(jù)庫(kù)的結(jié)構(gòu)、存儲(chǔ)、設(shè)計(jì)、管理和使用的一門(mén)軟件學(xué)科。13XML是一種描述型的標(biāo)記語(yǔ)言,與HTML同為SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)的一種應(yīng)用。由于XML在可擴(kuò)展性、可移植性和結(jié)構(gòu)性等方面的突出優(yōu)點(diǎn),它的應(yīng)用范圍突破了HTML所達(dá)到的范圍。XML文件是數(shù)據(jù)的集合,它是自描述的、可交換的,能夠以樹(shù)型或圖形結(jié)構(gòu)描述數(shù)據(jù)。XML提供了許多數(shù)據(jù)庫(kù)所具備的工具:存儲(chǔ)(XML文檔)、模式(DTD,XMLschema,RE1AXNG等)、查詢(xún)語(yǔ)言(XQuery,XPath,XQL,XML-QL,QUILT等)、編程接口(SAX,DOM,JDOM)等。隨著網(wǎng)絡(luò)和Internet的發(fā)展,數(shù)據(jù)交換的能力已成為新的應(yīng)用系統(tǒng)的一個(gè)重要的要求。XML的好處是數(shù)據(jù)的可交換性(portable),同時(shí)在數(shù)據(jù)應(yīng)用方面還具有如下優(yōu)點(diǎn):(1)XML文件為純文本文件,不受操作系統(tǒng)、軟件平臺(tái)的限制;(2)XML具有基于Schema自描述語(yǔ)義的功能,容易描述數(shù)據(jù)的語(yǔ)義,這種描述能為計(jì)算機(jī)理解和自動(dòng)處理;(3)XML不僅可以描述結(jié)構(gòu)化數(shù)據(jù),還可有效描述半結(jié)構(gòu)化,甚至非結(jié)構(gòu)化數(shù)據(jù)。1.1.4XML技術(shù)141.2.1概念設(shè)計(jì)中的數(shù)據(jù)描述實(shí)體(Entity)實(shí)體集(EntitySet)實(shí)體標(biāo)識(shí)符(Identifier)屬性(Attribute)描述實(shí)體(Entity):客觀存在、可以相互區(qū)別的事物稱(chēng)為實(shí)體。實(shí)體可以是具體的對(duì)象,如一名男學(xué)生、一輛汽車(chē)等;也可以是抽象的對(duì)象,如一次借書(shū)、一場(chǎng)足球比賽等。實(shí)體集(EntitySet):性質(zhì)相同的同類(lèi)實(shí)體的集合,稱(chēng)為實(shí)體集。例如所有的男學(xué)生、足球比賽的所有比賽等。1516屬性(Attribute):實(shí)體有很多特性,一個(gè)特性稱(chēng)為一個(gè)屬性。每一個(gè)屬性有一個(gè)值域,其類(lèi)型可以是整數(shù)型、實(shí)數(shù)型、字符串型等。例如,學(xué)生有學(xué)號(hào)、姓名、年齡、性別等屬性。實(shí)體標(biāo)識(shí)符(Identifier):能唯一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约?,稱(chēng)為實(shí)體標(biāo)識(shí)符。有時(shí)也稱(chēng)為關(guān)鍵碼(Key)或簡(jiǎn)稱(chēng)為鍵。例如,學(xué)生的學(xué)號(hào)可以作為學(xué)生實(shí)體的標(biāo)識(shí)符。171.2.2邏輯設(shè)計(jì)中的數(shù)據(jù)描述字段(Field)記錄(Record)關(guān)鍵碼(Key)文件(File)描述18字段(Field):標(biāo)記實(shí)體屬性的命名單位稱(chēng)為字段或數(shù)據(jù)項(xiàng)。它是可以命名的最小信息單位。字段的命名往往和屬性名相同。例如,學(xué)生有學(xué)號(hào)、姓名、年齡、性別等字段。記錄(Record):字段的有序集合稱(chēng)為記錄。一般用一條記錄描述一個(gè)實(shí)體,所以記錄又可以定義為能完整地描述一個(gè)實(shí)體的字段集。例如,一個(gè)學(xué)生記錄由字段集組成:(學(xué)號(hào),姓名,年齡,性別)。文件(File):同一類(lèi)記錄的集合稱(chēng)為文件。文件是用來(lái)描述實(shí)體集的。例如所有的學(xué)生記錄組成了一個(gè)學(xué)生文件。關(guān)鍵碼(Key):能唯一標(biāo)識(shí)文件中每條記錄的字段或字段集,稱(chēng)為記錄的關(guān)鍵碼(簡(jiǎn)稱(chēng)為鍵)。19201.2.3物理設(shè)計(jì)中的數(shù)據(jù)描述字段(Field)記錄(Record)關(guān)鍵碼(Key)文件(File)描述21位(Bit,比特):一個(gè)二進(jìn)制位稱(chēng)為“位”。一位只能取0或1兩個(gè)狀態(tài)。字節(jié)(Byte,簡(jiǎn)記為B):8個(gè)比特組成一個(gè)字節(jié),可以存放一個(gè)字符所對(duì)應(yīng)的ASCII碼。字(Word):若干個(gè)字節(jié)組成一個(gè)字。一個(gè)字所含的二進(jìn)制位的位數(shù)稱(chēng)為字長(zhǎng)。各種計(jì)算機(jī)的字長(zhǎng)是不一樣的,例如有8位、16位、24位、32位等。22塊(Block):又稱(chēng)為物理塊或物理記錄。塊是內(nèi)存和外村交換信息的最小單位,每塊的大小,通常為210~214字節(jié)。內(nèi)、外存信息交換是由操作系統(tǒng)的文件系統(tǒng)管理的。桶(Bucket):外存的邏輯單位,一個(gè)桶可以包含一個(gè)物理塊或多個(gè)在空間上不一定連續(xù)的物理塊。卷(Volume):一個(gè)輸入輸出設(shè)備所能裝載的全部有用信息,稱(chēng)為“卷”。例如:磁帶機(jī)的一盤(pán)磁帶就是一卷,磁盤(pán)的一個(gè)盤(pán)組也是一卷。231.2.4數(shù)據(jù)聯(lián)系的描述定義1.5聯(lián)系(Relationship)是實(shí)體之間的相互聯(lián)系。與一個(gè)聯(lián)系有關(guān)的實(shí)體集個(gè)數(shù),稱(chēng)為聯(lián)系的元數(shù)。24一對(duì)一聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體至多和實(shí)體集E2中的一個(gè)實(shí)體有聯(lián)系,反之亦然,那么實(shí)體集E1和E2的聯(lián)系稱(chēng)為“一對(duì)一聯(lián)系”,記為“1:1”。如飛機(jī)的座位與乘客之間是1:1聯(lián)系。25一對(duì)多聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體可以與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體間有聯(lián)系,而E2中每個(gè)實(shí)體至多和E1中一個(gè)實(shí)體有聯(lián)系,那么稱(chēng)E1對(duì)E2的聯(lián)系是“一對(duì)多聯(lián)系”,記為“1:N”。如工廠里車(chē)間和工人之間是1:N聯(lián)系。26多對(duì)多聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體可以與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體間有聯(lián)系,反之亦然,那么稱(chēng)E1和E2的聯(lián)系是“多對(duì)多聯(lián)系”,記為“M:N”。如學(xué)校里學(xué)生和課程之間是M:N聯(lián)系。1.3.1數(shù)據(jù)抽象的過(guò)程模型(Model)是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫(kù)技術(shù)中,用數(shù)據(jù)模型(DataModel)的概念描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)和語(yǔ)義,對(duì)現(xiàn)實(shí)世界的數(shù)據(jù)進(jìn)行抽象。從現(xiàn)實(shí)世界的信息到數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)以及用戶(hù)使用的數(shù)據(jù)是一個(gè)逐步抽象的過(guò)程。根據(jù)數(shù)據(jù)抽象的級(jí)別定義了4種模型:概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、外部數(shù)據(jù)模型、內(nèi)部數(shù)據(jù)模型。一般在提及時(shí)省略“數(shù)據(jù)”兩字。27定義1.6表達(dá)用戶(hù)需求觀點(diǎn)的數(shù)據(jù)全局邏輯結(jié)構(gòu)的模型稱(chēng)為“概念模型”。表達(dá)計(jì)算機(jī)實(shí)現(xiàn)觀點(diǎn)的DB全局邏輯結(jié)構(gòu)的模型稱(chēng)為“邏輯模型”。表達(dá)用戶(hù)使用觀點(diǎn)的DB局部邏輯結(jié)構(gòu)的模型稱(chēng)為“外部模型”。表達(dá)DB物理結(jié)構(gòu)的模型稱(chēng)為“內(nèi)部模型”。28數(shù)據(jù)抽象的過(guò)程,也就是數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程,具體步驟如下:

第1步:根據(jù)用戶(hù)需求,設(shè)計(jì)數(shù)據(jù)庫(kù)的概念模型,這是一個(gè)“綜合”的過(guò)程。第2步:根據(jù)轉(zhuǎn)換規(guī)則,把概念模型轉(zhuǎn)換成數(shù)據(jù)庫(kù)的邏輯模型,這是一個(gè)“轉(zhuǎn)換”的過(guò)程。第3步:根據(jù)用戶(hù)的業(yè)務(wù)特點(diǎn),設(shè)計(jì)不同的外部模型,給程序員使用。也就是應(yīng)用程序使用的是數(shù)據(jù)庫(kù)的外部模型。外部模型與邏輯模型之間的對(duì)應(yīng)性稱(chēng)為映像。第4步:數(shù)據(jù)庫(kù)實(shí)現(xiàn)時(shí),要根據(jù)邏輯模型設(shè)計(jì)其內(nèi)部模型。內(nèi)部模型與邏輯模型之間的對(duì)應(yīng)性稱(chēng)為映像。29301.3.2概念模型在這4中模型中,概念模型的抽象級(jí)別最高。其特點(diǎn)如下所述:(1)概念模型表達(dá)了數(shù)據(jù)的整體邏輯結(jié)構(gòu),它是系統(tǒng)用戶(hù)對(duì)整個(gè)應(yīng)用項(xiàng)目涉及的數(shù)據(jù)的全面描述。(2)概念模型是從用戶(hù)需求的觀點(diǎn)出發(fā),對(duì)數(shù)據(jù)建模。(3)概念模型獨(dú)立于硬件和軟件。硬件獨(dú)立意味著概念模型不依賴(lài)于硬件設(shè)備,軟件獨(dú)立意味著該模型不依賴(lài)于實(shí)現(xiàn)時(shí)的DBMS軟件,因此硬件或軟件的變化都不會(huì)影響DB的概念模型設(shè)計(jì)。(4)概念模型是數(shù)據(jù)庫(kù)設(shè)計(jì)人員與用戶(hù)之間進(jìn)行交流的工具。31實(shí)體聯(lián)系模型(EntityRelationshipModel,ER)是一種主要的概念模型。ER模型直接從現(xiàn)實(shí)世界中抽象出實(shí)體類(lèi)型及實(shí)體間聯(lián)系,然后,用實(shí)體聯(lián)系圖(ER圖)表示數(shù)據(jù)模型。ER圖是直接表示概念模型的有力工具。32ER圖有3個(gè)基本成分:(1)矩形框:用于表示實(shí)體類(lèi)型(問(wèn)題的對(duì)象)。(2)菱形框:用于表示聯(lián)系類(lèi)型(實(shí)體間聯(lián)系)。(3)橢圓形框:用于表示實(shí)體類(lèi)型和聯(lián)系類(lèi)型的屬性。33相應(yīng)的命名均記入各種框中。對(duì)于實(shí)體標(biāo)識(shí)符的屬性,在屬性名下面畫(huà)一條橫線(xiàn)。實(shí)體與屬性之間,聯(lián)系與屬性之間用直線(xiàn)連接;聯(lián)系類(lèi)型與其涉及的實(shí)體類(lèi)型之間也以直線(xiàn)相連,用來(lái)表示它們之間的聯(lián)系,并在直線(xiàn)端部標(biāo)注聯(lián)系的類(lèi)型(1:1、1:N或M:N)。34下面通過(guò)例子說(shuō)明設(shè)計(jì)ER圖的過(guò)程。例1.2:設(shè)大學(xué)教務(wù)方面主要研究的對(duì)象有課程、教師、任課、學(xué)生和選修等。在ER圖中,把研究的對(duì)象分成實(shí)體和聯(lián)系兩大類(lèi)。大學(xué)教務(wù)數(shù)據(jù)庫(kù)的ER圖如圖1.2所示。圖中有以下一些成分:3536(1)3個(gè)實(shí)體類(lèi)型:學(xué)生STUDENT、課程COURSE和教師TEACHER。(2)2個(gè)聯(lián)系類(lèi)型:STUDENT和COURSE之間存在著一個(gè)M:N聯(lián)系,TEACHER和COURSE之間存在著一個(gè)1:N聯(lián)系,分別命名為SC和TC。(3)實(shí)體類(lèi)型STUDENT的屬性有學(xué)號(hào)S#、姓名SNAME、年齡AGE和性別SEX;實(shí)體類(lèi)型COURSE的屬性有課程號(hào)C#和課程名CNAME;實(shí)體類(lèi)型TEACHER的屬性有教師工號(hào)T#、姓名TNAME和職稱(chēng)TITLE。聯(lián)系類(lèi)型SC的屬性是某學(xué)生選修某課程的成績(jī)SCORE。聯(lián)系類(lèi)型TC沒(méi)有屬性。聯(lián)系類(lèi)型中的屬性是實(shí)體發(fā)生聯(lián)系時(shí)產(chǎn)生的屬性,而不應(yīng)該包括實(shí)體的屬性或標(biāo)識(shí)符。(4)確定實(shí)體類(lèi)型的鍵,在ER圖中屬于標(biāo)識(shí)符的屬性名下面畫(huà)一條橫線(xiàn)。37ER模型有兩個(gè)明顯的優(yōu)點(diǎn):一是簡(jiǎn)單,容易理解,真實(shí)地反映用戶(hù)的需求;二是與計(jì)算機(jī)無(wú)關(guān),用戶(hù)容易接受。因此ER模型已成為軟件工程的一個(gè)重要設(shè)計(jì)方法。ER模型只能說(shuō)明實(shí)體間語(yǔ)義的聯(lián)系,不能說(shuō)明詳細(xì)的數(shù)據(jù)結(jié)構(gòu)。在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),遇到實(shí)際問(wèn)題總是先設(shè)計(jì)一個(gè)ER模型,然后再把ER模型轉(zhuǎn)換成計(jì)算機(jī)能實(shí)現(xiàn)的數(shù)據(jù)模型,如關(guān)系模型。381.3.3邏輯模型在選定DBMS軟件后,就要將概念模型按照選定的DBMS的特點(diǎn)轉(zhuǎn)換成邏輯模型。邏輯模型具有下列特點(diǎn):(1)邏輯模型表達(dá)了DB的整體邏輯結(jié)構(gòu),它是設(shè)計(jì)人員對(duì)整個(gè)應(yīng)用項(xiàng)目數(shù)據(jù)庫(kù)的全面描述。(2)邏輯模型是從數(shù)據(jù)庫(kù)實(shí)現(xiàn)的觀點(diǎn)出發(fā)對(duì)數(shù)據(jù)建模。(3)邏輯模型獨(dú)立于硬件,依賴(lài)于軟件(DBMS)。(4)邏輯模型是數(shù)據(jù)庫(kù)設(shè)計(jì)人員與應(yīng)用程序員之間進(jìn)行交流的工具。39邏輯模型主要有層次、網(wǎng)狀、關(guān)系和對(duì)象模型共4種。下面分別介紹。層次模型用樹(shù)型(層次)結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱(chēng)為層次模型(HierarchicalModel)。樹(shù)中每一個(gè)結(jié)點(diǎn)代表一個(gè)記錄類(lèi)型,樹(shù)狀結(jié)構(gòu)表示實(shí)體型之間的聯(lián)系。有且僅有一個(gè)結(jié)點(diǎn),無(wú)父結(jié)點(diǎn),此結(jié)點(diǎn)為樹(shù)的根;其它結(jié)點(diǎn)有且僅有一個(gè)父結(jié)點(diǎn)。上一層記錄類(lèi)型和下一層記錄類(lèi)型之間的聯(lián)系是1:N聯(lián)系。40例1.3:將圖1.2所示的ER圖轉(zhuǎn)換成的層次模型,如圖1.3所示。這是一棵樹(shù),樹(shù)中的結(jié)點(diǎn)是記錄類(lèi)型,上一層記錄類(lèi)型和下一層記錄類(lèi)型之間的聯(lián)系是1:N聯(lián)系。這個(gè)模型表示,每門(mén)課程(COURSE)有若干(但這里應(yīng)限定為1)個(gè)教師(TEACHER)任課,有若干個(gè)學(xué)生(STUDENT)選修。模型中,從COURSE值查詢(xún)TEACHER或STUDENT值比較容易,但要從TEACHER或STUDENT值查詢(xún)COURSE值就比較麻煩。414243層次模型的特點(diǎn)是記錄之間的聯(lián)系通過(guò)指針來(lái)實(shí)現(xiàn),查詢(xún)效率較高。但層次模型有兩個(gè)缺點(diǎn):一是只能表示1:N的聯(lián)系,盡管有許多輔助手段實(shí)現(xiàn)M:N的聯(lián)系,但比較復(fù)雜,不易掌握;二是由于層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢(xún)和更新操作很復(fù)雜,因此應(yīng)用程序的編寫(xiě)也比較復(fù)雜。1968年,美國(guó)IBM公司推出的IMS系統(tǒng)是典型的層次模型系統(tǒng),20世紀(jì)70年代在商業(yè)上得到了廣泛應(yīng)用。44網(wǎng)狀模型用有向圖結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)結(jié)構(gòu)模型稱(chēng)為網(wǎng)狀模型(NetworkModel)。1969年,CODASYL組織提出DBTG報(bào)告中的數(shù)據(jù)模型是網(wǎng)狀模型的主要代表。有向圖中的結(jié)點(diǎn)是記錄類(lèi)型,箭頭表示從箭尾的記錄類(lèi)型到箭頭的記錄類(lèi)型間聯(lián)系是1:N聯(lián)系。例1.4:將圖1.2所示的ER圖轉(zhuǎn)換成的網(wǎng)狀模型,如見(jiàn)圖1.5所示。45這是一個(gè)有向圖。這張圖中由四個(gè)結(jié)點(diǎn)和三條有向邊組成。ER圖中的實(shí)體類(lèi)型轉(zhuǎn)換成記錄類(lèi)型。M:N聯(lián)系用兩個(gè)1:N聯(lián)系實(shí)現(xiàn)。例如STUDENT和COURSE間的M:N聯(lián)系用兩個(gè)1:N聯(lián)系S_SC和C_SC實(shí)現(xiàn),即STUDENT和SC間的1:N聯(lián)系,COURSE和SC間的1:N聯(lián)系。而TEACHER和COURSE間的1:N聯(lián)系就用1:N聯(lián)系T_C實(shí)現(xiàn)。這個(gè)模型的具體值(局部)如圖1.6所示。圖上只畫(huà)出COURSE、STUDENT和SC的記錄及其聯(lián)系。假設(shè)COURSE有四門(mén):C1、C2、C3和C4,STUDENT有4個(gè):S1、S2、S3和S4。圖中用C1、C2、C3、C4、S1、S2、S3、S4等符號(hào)直接表示COURSE和STUDENT的記錄,用“S1,C1,80”等符號(hào)表示SC的記錄。記錄之間的聯(lián)系用指針表示。464748網(wǎng)狀模型的特點(diǎn)是記錄之間的聯(lián)系通過(guò)指針實(shí)現(xiàn),M:N聯(lián)系也容易實(shí)現(xiàn)(一個(gè)M:N聯(lián)系可拆成兩個(gè)1:N聯(lián)系),查詢(xún)效率也較高。層次模型和網(wǎng)狀模型致命的缺點(diǎn)是數(shù)據(jù)結(jié)構(gòu)復(fù)雜和編程復(fù)雜。因此從20世紀(jì)80年代中期起其市場(chǎng)已被關(guān)系系統(tǒng)的產(chǎn)品所取代。49關(guān)系模型關(guān)系模型(RelationalModel)是1970年由E.F.Codd提出的,主要特征是用二維表格表達(dá)實(shí)體集。與前兩種模型相比,數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,容易為初學(xué)者理解。關(guān)系模型是由若干個(gè)關(guān)系模式(RelationalSchema)組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類(lèi)型,它的實(shí)例稱(chēng)為關(guān)系(Relation),每個(gè)關(guān)系實(shí)際上是個(gè)二維表格(Table)。50例1.5:將圖1.2所示的ER圖轉(zhuǎn)換成的關(guān)系模型,如圖1.7所示。轉(zhuǎn)換的方法是把ER圖中的實(shí)體類(lèi)型和M:N的聯(lián)系類(lèi)型分別轉(zhuǎn)換成關(guān)系模式即可。聯(lián)系類(lèi)型相應(yīng)的關(guān)系模式屬性由聯(lián)系類(lèi)型和與之聯(lián)系的實(shí)體類(lèi)型的鍵一起組合而成的。而1:N的聯(lián)系類(lèi)型不必轉(zhuǎn)換成關(guān)系模式,只需在N端對(duì)應(yīng)實(shí)體類(lèi)型的關(guān)系模式里加入1端實(shí)體類(lèi)型的鍵即可。表1.2是具體實(shí)例。關(guān)系模型和層次、網(wǎng)狀模型的最大差別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),其表格簡(jiǎn)單,用戶(hù)易懂,用戶(hù)只需用簡(jiǎn)單的查詢(xún)語(yǔ)句就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,并不涉及存儲(chǔ)結(jié)構(gòu)、訪(fǎng)問(wèn)技術(shù)等細(xì)節(jié)。5152531.3.4外部模型在應(yīng)用系統(tǒng)中,常常是根據(jù)業(yè)務(wù)的特點(diǎn)劃分為若干個(gè)業(yè)務(wù)單位,每一個(gè)業(yè)務(wù)單位都有特定的約束和需求。在實(shí)際使用時(shí),可以為不同的業(yè)務(wù)單位設(shè)計(jì)不同的外部模型。54例1.6:如圖1.7所示的關(guān)系模型由TEACHER、COURSE、STUDENT、SC等四個(gè)關(guān)系模式組成。在這個(gè)基礎(chǔ)上,可以為學(xué)生應(yīng)用子系統(tǒng)設(shè)計(jì)一個(gè)外部模型。外部模型中的模式稱(chēng)為“視圖”(View)。這個(gè)視圖如下:學(xué)生視圖STUDENT_VIEW(S#,SNAME,C#,CNAME,SCORE,T#,TNAME)也可以為教師應(yīng)用子系統(tǒng)設(shè)計(jì)一個(gè)外部視圖,其視圖如下:教師視圖TEACHER_VIEW(T#,TNAME,C#,CNAME,S#,SNAME,SCORE)顯然,視圖只是一個(gè)定義,視圖中的數(shù)據(jù)可以從邏輯模型的數(shù)據(jù)庫(kù)得到。55外部模型具有如下的特點(diǎn):(1)外部模型是邏輯模型的一個(gè)邏輯子集;(2)外部模型獨(dú)立于硬件,依賴(lài)于軟件;(3)外部模型反映了用戶(hù)使用數(shù)據(jù)庫(kù)的觀點(diǎn)。56外部模型具有以下優(yōu)點(diǎn):(1)簡(jiǎn)化用戶(hù)觀點(diǎn)。外部模型是針對(duì)具體用戶(hù)應(yīng)用需要的數(shù)據(jù)而設(shè)計(jì)的,與用戶(hù)無(wú)關(guān)的數(shù)據(jù)無(wú)需放入,這樣用戶(hù)可以簡(jiǎn)便的使用數(shù)據(jù)庫(kù)。(2)有助于數(shù)據(jù)庫(kù)的安全性保護(hù)。用戶(hù)不能看的數(shù)據(jù),不放入外部模型,這樣提高了系統(tǒng)的安全性。(3)外部模型是對(duì)概念模型的支持。如果用戶(hù)使用外部模型得心應(yīng)手,那么說(shuō)明當(dāng)初根據(jù)用戶(hù)需求綜合成的概念模型是正確的、完善的。571.3.5內(nèi)部模型內(nèi)部模型是數(shù)據(jù)庫(kù)最底層的抽象,通常又稱(chēng)為物理模型,它描述數(shù)據(jù)在磁盤(pán)或磁帶上的存儲(chǔ)方式(文件結(jié)構(gòu))、存取設(shè)備(外存的空間分配)和存取方法(主索引和輔助索引)。內(nèi)部模型與硬件和軟件緊密相連,隨著計(jì)算機(jī)軟硬件性能的大幅度提高,并且目前占絕對(duì)優(yōu)勢(shì)的關(guān)系模型以邏輯級(jí)為目標(biāo),因此可以不必考慮內(nèi)部級(jí)的具體實(shí)現(xiàn),由系統(tǒng)自動(dòng)實(shí)現(xiàn)。58

1.3.6數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)

由數(shù)據(jù)抽象的過(guò)程就可看出數(shù)據(jù)庫(kù)系統(tǒng)的三層模式和兩級(jí)映像的體系結(jié)構(gòu)。三層模式前面提到在用戶(hù)到數(shù)據(jù)庫(kù)之間,數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)有三個(gè)層次:外部模型、邏輯模型和內(nèi)部模型。這三個(gè)層次要用到DB的數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,簡(jiǎn)記為DDL)定義,定義以后的內(nèi)容稱(chēng)為“模式”(Schema),即外模式、邏輯模式、內(nèi)模式。這三種模式的定義如下。59定義1.7從用戶(hù)到數(shù)據(jù)庫(kù)之間,DB的數(shù)據(jù)結(jié)構(gòu)描述有以下三個(gè)層次:(1)外模式是用戶(hù)與數(shù)據(jù)庫(kù)系統(tǒng)的接口,用戶(hù)用到的那部分?jǐn)?shù)據(jù)的描述。外模式由若干個(gè)外部記錄類(lèi)型組成。(2)邏輯模式是數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述。它由若干個(gè)邏輯記錄類(lèi)型組成,還包含記錄間聯(lián)系、數(shù)據(jù)的完整性等要求。(3)內(nèi)模式是數(shù)據(jù)庫(kù)在物理存儲(chǔ)方面的描述,定義所有內(nèi)部記錄類(lèi)型、索引和文件的組織方式,以及數(shù)據(jù)控制方面的細(xì)節(jié)。60三層模式具有以下特點(diǎn):(1)用戶(hù)使用DB的數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,簡(jiǎn)記為DML)語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,實(shí)際上是對(duì)外模式的外部記錄進(jìn)行操作。有了外模式后,程序員不必關(guān)心邏輯模式,只與外模式發(fā)生聯(lián)系,按照外模式的結(jié)構(gòu)存儲(chǔ)和操縱數(shù)據(jù)。實(shí)際上,外模式是邏輯模式的一個(gè)子集。(2)邏輯模式不必涉及到存儲(chǔ)結(jié)構(gòu)、訪(fǎng)問(wèn)技術(shù)等細(xì)節(jié)。數(shù)據(jù)按外模式的描述提供給用戶(hù),按內(nèi)模式的描繪存儲(chǔ)在磁盤(pán)中,而邏輯模式提供了連接這兩種模式的相對(duì)穩(wěn)定的中間觀點(diǎn),并使得兩級(jí)中的任何一級(jí)的改變都不受另一級(jí)的牽制。(3)內(nèi)模式并不涉及到物理設(shè)備的約束。比內(nèi)模式更接近物理存儲(chǔ)和訪(fǎng)問(wèn)的那些軟件機(jī)制是操作系統(tǒng)的一部分(即文件系統(tǒng)),例如從磁盤(pán)讀數(shù)據(jù)或?qū)憯?shù)據(jù)到磁盤(pán)上的操作等。61兩級(jí)映像由于三層模式的數(shù)據(jù)結(jié)構(gòu)可能不一致,即記錄類(lèi)型、字段類(lèi)型的命名和組成可能不一樣,因此需要三層模式之間的映像來(lái)說(shuō)明外部記錄、邏輯記錄、內(nèi)部記錄之間的對(duì)應(yīng)性。定義1.8三層模式之間存在著兩級(jí)映像:(1)外模式/邏輯模式映像存在于外模式和邏輯模式之間,用于定義外模式和邏輯模式之間的對(duì)應(yīng)性。這個(gè)映像一般是放在外模式中描述的。(2)邏輯模式/內(nèi)模式映像存在于邏輯模式和內(nèi)模式之間,用于定義邏輯模式和內(nèi)模式之間的對(duì)應(yīng)型。這個(gè)映像一般是放在內(nèi)模式中描述的。621.3.7數(shù)據(jù)獨(dú)立性數(shù)據(jù)獨(dú)立性(DataIndependence)是指應(yīng)用程序與數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)之間是相互獨(dú)立的。在修改數(shù)據(jù)結(jié)構(gòu)時(shí),盡可能不修改應(yīng)用程序,則稱(chēng)系統(tǒng)達(dá)到了數(shù)據(jù)獨(dú)立性目標(biāo)。63數(shù)據(jù)獨(dú)立性分成物理數(shù)據(jù)獨(dú)立性和邏輯數(shù)據(jù)獨(dú)立性?xún)蓚€(gè)級(jí)別。1.物理數(shù)據(jù)獨(dú)立性物理獨(dú)立性是指用戶(hù)的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中數(shù)據(jù)是相互獨(dú)立的。即,數(shù)據(jù)在磁盤(pán)上怎樣存儲(chǔ)由DBMS管理,用戶(hù)程序不需要了解,應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu),這樣當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變了,應(yīng)用程序不用改變。642.邏輯數(shù)據(jù)獨(dú)立性邏輯獨(dú)立性是指用戶(hù)的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的,即,當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時(shí),用戶(hù)程序也可以不變。如果數(shù)據(jù)庫(kù)的邏輯模式要修改,譬如增加記錄類(lèi)型或增加數(shù)據(jù)項(xiàng),那么只要對(duì)外模式/邏輯模式映像作相應(yīng)的修改,可以使外模式和應(yīng)用程序盡可能保持不變。651.4.1數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS的工作模式數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是專(zhuān)門(mén)用于建立和管理數(shù)據(jù)庫(kù)的一套軟件,介于應(yīng)用程序和操作系統(tǒng)之間。DBMS不僅具有最基本的數(shù)據(jù)管理功能,包括定義、查詢(xún)、更新及各種操作,還能保證數(shù)據(jù)的完整性、安全性、提供多用戶(hù)的并發(fā)控制,當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí)對(duì)系統(tǒng)進(jìn)行恢復(fù)。DBMS的工作示意圖如圖1.8所示。6667DBMS的工作模式如下:(1)接受應(yīng)用程序的數(shù)據(jù)請(qǐng)求和處理請(qǐng)求;(2)將用戶(hù)的數(shù)據(jù)請(qǐng)求(高級(jí)指令)轉(zhuǎn)換成復(fù)雜的機(jī)器代碼(底層指令);(3)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作;(4)從對(duì)數(shù)據(jù)庫(kù)的操作中接受查詢(xún)結(jié)果;(5)對(duì)查詢(xún)結(jié)果進(jìn)行處理(格式轉(zhuǎn)換);(6)將處理結(jié)果返回給用戶(hù)。68DBMS的主要功能(1)數(shù)據(jù)庫(kù)的定義功能(2)數(shù)據(jù)庫(kù)的操縱功能(3)數(shù)據(jù)庫(kù)的保護(hù)功能(4)數(shù)據(jù)庫(kù)的維護(hù)功能(5)數(shù)據(jù)字典69(1)數(shù)據(jù)庫(kù)的定義功能DBMS提供DDL定義數(shù)據(jù)庫(kù)的三層結(jié)構(gòu)、兩級(jí)映像,定義數(shù)據(jù)的完整性約束、保密限制等約束。因此,在DBMS中應(yīng)包括DDL的編譯程序。(2)數(shù)據(jù)庫(kù)的操縱功能DBMS提供DML實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作?;镜臄?shù)據(jù)操作有兩類(lèi):檢索(查詢(xún))和更新(包括插入、刪除、更新)。因此,在DBMS中應(yīng)包括DML的編譯程序或解釋程序。依照語(yǔ)言的級(jí)別,DML又可分為過(guò)程性DML和非過(guò)程性DML兩種。通常查詢(xún)語(yǔ)言是指DML中的檢索語(yǔ)句部分。70(3)數(shù)據(jù)庫(kù)的保護(hù)功能數(shù)據(jù)庫(kù)中的數(shù)據(jù)是信息社會(huì)的戰(zhàn)略資源,對(duì)數(shù)據(jù)的保護(hù)是至關(guān)重要的事情。DBMS對(duì)數(shù)據(jù)的保護(hù)通過(guò)4個(gè)方面的功能實(shí)現(xiàn),因而在DBMS中應(yīng)包括這4個(gè)子系統(tǒng)。數(shù)據(jù)庫(kù)的恢復(fù)。在數(shù)據(jù)庫(kù)被破壞或數(shù)據(jù)不正確時(shí),系統(tǒng)有能力把數(shù)據(jù)庫(kù)恢復(fù)到正確的狀態(tài)。數(shù)據(jù)庫(kù)的并發(fā)控制。在多個(gè)用戶(hù)同時(shí)對(duì)同一個(gè)數(shù)據(jù)進(jìn)行操作時(shí),系統(tǒng)應(yīng)有能力加以控制,防止破壞DB中的數(shù)據(jù)。數(shù)據(jù)完整性控制。保證數(shù)據(jù)庫(kù)中數(shù)據(jù)及語(yǔ)義的正確性和有效性,防止任何對(duì)數(shù)據(jù)造成錯(cuò)誤的操作。數(shù)據(jù)安全性操作。防止的用戶(hù)存取數(shù)據(jù)庫(kù)中的數(shù)據(jù),以免數(shù)據(jù)的泄露、更改或破壞。DBMS的其他保護(hù)功能還有系統(tǒng)緩沖區(qū)的管理以及數(shù)據(jù)存儲(chǔ)的某些自適應(yīng)調(diào)節(jié)機(jī)制等。71(4)數(shù)據(jù)庫(kù)的維護(hù)功能這一部分包括數(shù)據(jù)庫(kù)的數(shù)據(jù)載入、轉(zhuǎn)換、轉(zhuǎn)儲(chǔ),數(shù)據(jù)庫(kù)的改組以及性能監(jiān)控等功能。這些功能分別由各個(gè)應(yīng)用程序(Utilities)完成。(5)數(shù)據(jù)字典數(shù)據(jù)庫(kù)系統(tǒng)中存放三層結(jié)構(gòu)定義的數(shù)據(jù)庫(kù)稱(chēng)為數(shù)據(jù)字典(DataDictionary,DD)。對(duì)數(shù)據(jù)庫(kù)的操作都要通過(guò)DD才能實(shí)現(xiàn)。DD中還存放數(shù)據(jù)庫(kù)運(yùn)行時(shí)的統(tǒng)計(jì)信息,例如記錄個(gè)數(shù)、訪(fǎng)問(wèn)次數(shù)等。管理DD的子系統(tǒng)稱(chēng)為“DD系統(tǒng)”。721.4.2數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)(DBS)的組成數(shù)據(jù)庫(kù)系統(tǒng)DBS通常由硬件、軟件、數(shù)據(jù)庫(kù)和數(shù)據(jù)管理員組成。73(1)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(DB)是指長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的,有組織,可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)學(xué)模型組織、描述和存儲(chǔ),具有較小的冗余,較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶(hù)共享。(2)硬件構(gòu)成計(jì)算機(jī)系統(tǒng)的各種物理設(shè)備,包括中央處理器、內(nèi)存、外存、輸入/輸出設(shè)備等硬件設(shè)備。(3)軟件這一部分包括操作系統(tǒng)、各種宿主語(yǔ)言、數(shù)據(jù)庫(kù)管理系統(tǒng)及應(yīng)用程序。數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是數(shù)據(jù)庫(kù)系統(tǒng)的核心軟件。74(4)數(shù)據(jù)庫(kù)管理員要想成功地運(yùn)轉(zhuǎn)數(shù)據(jù)庫(kù),就要在數(shù)據(jù)處理部門(mén)配備管理人員-數(shù)據(jù)庫(kù)管理員(DataBaseAdministrator,DBA)。DBA必須具有以下素質(zhì):熟悉企業(yè)全部數(shù)據(jù)的性質(zhì)和用途;對(duì)所有用戶(hù)的需求有充分的了解;對(duì)系統(tǒng)的性能非常熟悉;兼有系統(tǒng)分析員和運(yùn)籌學(xué)專(zhuān)家的品質(zhì)和知識(shí)。DBA的定義如下。75定義1.9DBA是控制數(shù)據(jù)整體結(jié)構(gòu)的一組人員,負(fù)責(zé)DBS的正常運(yùn)行,承擔(dān)創(chuàng)建、監(jiān)控和維護(hù)數(shù)據(jù)庫(kù)結(jié)構(gòu)的責(zé)任。DBA的主要職責(zé)有以下6點(diǎn):(1)定義模式。(2)定義內(nèi)模式。(3)與用戶(hù)的聯(lián)絡(luò)。包括定義外模式、應(yīng)用程序的設(shè)計(jì)、提供技術(shù)培訓(xùn)等專(zhuān)業(yè)服務(wù)。(4)定義安全性規(guī)則,對(duì)用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的授權(quán)。(5)定義完整性規(guī)則,監(jiān)督數(shù)據(jù)庫(kù)的運(yùn)行。(6)數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)與恢復(fù)工作。76

1.5.1基本術(shù)語(yǔ)

定義1.10用二維表格表示實(shí)體集,用關(guān)鍵碼表示實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱(chēng)為關(guān)系模型(RelationalModel)。例如,如圖1.9是一個(gè)二維表格。對(duì)表格數(shù)學(xué)化,用字母表示表格的內(nèi)容。在關(guān)系模型中,字段稱(chēng)為屬性,字段值稱(chēng)為屬性值,記錄類(lèi)型稱(chēng)為關(guān)系模式,記錄稱(chēng)為元組(Tuple),元組的集合稱(chēng)為關(guān)系(Relation)或?qū)嵗↖nstance)。一般用大寫(xiě)字母A,B,C…表示單個(gè)屬性,用大寫(xiě)字母…X,Y,Z表示屬性集,用小寫(xiě)字母表示屬性值,元組為行(Row),屬性為列(Column)。7778關(guān)鍵碼(Key,鍵)由一個(gè)或多個(gè)屬性組成。有下列幾種鍵:(1)超鍵(SuperKey):在關(guān)系中能唯一標(biāo)識(shí)元組的屬性或?qū)傩约Q(chēng)為關(guān)系模式的超鍵。(2)候選鍵(CandidateKey):不含有多余屬性的超鍵稱(chēng)為候選鍵。(3)主鍵(PrimaryKey):用戶(hù)選作元組標(biāo)識(shí)的候選鍵稱(chēng)為主鍵。一般如不加說(shuō)明,鍵是指主鍵。如在學(xué)生表中,(學(xué)號(hào),姓名)是模式的一個(gè)超鍵,但不是候選鍵,而(學(xué)號(hào))是候選鍵,在實(shí)際應(yīng)用中,如果選擇(學(xué)號(hào))作為刪除或查找元組的標(biāo)志,那么稱(chēng)(學(xué)號(hào))是主鍵。79(4)外鍵(ForeignKey):如果模式R中屬性K是其他模式的主鍵,那么K在模式R中稱(chēng)為外鍵。關(guān)系中每一個(gè)屬性都有一個(gè)取值范圍,稱(chēng)為屬性的值域。屬性A的取值范圍用DOM(A)表示。每一個(gè)屬性對(duì)應(yīng)一個(gè)值域,不同的屬性可對(duì)應(yīng)于同一值域。801.5.2關(guān)系的定義和性質(zhì)定義1.11關(guān)系是一個(gè)屬性數(shù)目相同的元組的集合。集合中的元素是元組,每個(gè)元組的屬性數(shù)目應(yīng)該相同。如果一個(gè)關(guān)系的元組數(shù)目是無(wú)限的,則稱(chēng)為無(wú)限關(guān)系,否則稱(chēng)為有限關(guān)系。由于計(jì)算機(jī)存儲(chǔ)系統(tǒng)的限制,只限于研究有限關(guān)系。81盡管關(guān)系與二位表格、傳統(tǒng)的數(shù)據(jù)文件有類(lèi)似之處,但它們又有區(qū)別。嚴(yán)格的講,關(guān)系是一種規(guī)范了的二維表格。在關(guān)系模型中,對(duì)關(guān)系作了下列規(guī)范性限制:(1)關(guān)系中每一個(gè)屬性值都是不可分解的;(2)關(guān)系中不允許出現(xiàn)重復(fù)元組(即不允許出現(xiàn)相同的元組);(3)由于關(guān)系是一個(gè)集合,因此不考慮元組間的順序,沒(méi)有行序;(4)元組中的屬性在理論上也是無(wú)序的,但使用時(shí)按習(xí)慣考慮列的順序。821.5.3關(guān)系模型的3類(lèi)完整性規(guī)則為了維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)的一致性,關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)與更新操作必須遵循下列3類(lèi)完整性規(guī)則。1.實(shí)體完整性規(guī)則(EntityIntegrityRule)這條規(guī)則要求關(guān)系中元組在組成主鍵的屬性上不能有空值。如果出現(xiàn)空值,那么主鍵值就起不了唯一標(biāo)識(shí)元組的作用。2.參照完整性規(guī)則(ReferenceIntegrityRule)這條規(guī)則要求:如果屬性集K是關(guān)系模式R1的主鍵,K也是關(guān)系模式R2的外鍵,那么在R2的關(guān)系中,K的取值只有兩種可能,或者為空值,或者等于R1關(guān)系中的某個(gè)主鍵值。83這條規(guī)則的實(shí)質(zhì)是“不允許引用不存在的實(shí)體”。這條規(guī)則在具體使用時(shí),有3點(diǎn)可變通:(1)外鍵和相應(yīng)的主鍵可以不同名,只要定義在相同的值域上即可;(2)R1和R2也可以是同一個(gè)關(guān)系模式,此時(shí)表示了同一個(gè)關(guān)系中不同元組之間的聯(lián)系;(3)外鍵值是否允許空,視具體情況而定。84例1.7:例1.5所示關(guān)系模型中有4個(gè)關(guān)系模式:TEACHER(T#,TNAME,TITLE)COURSE(C#,CNAME,T#)STUDENT(S#,SNAME,AGE,SEX)SC(S#,C#,SCORE)如教師工號(hào)T#在TEACHER中是主鍵,在COURSE中是外鍵,一般在外鍵的屬性下面畫(huà)一條波浪線(xiàn)。853.用戶(hù)定義的完整性規(guī)則在建立關(guān)系模式中,對(duì)屬性定義了數(shù)據(jù)類(lèi)型,即使這樣可能還滿(mǎn)足不了用戶(hù)的需求。此時(shí),用戶(hù)可以針對(duì)具體的數(shù)據(jù)約束,設(shè)置完整性規(guī)則,由系統(tǒng)檢驗(yàn)實(shí)施,使用統(tǒng)一的方法處理它們,不再由應(yīng)用程序承擔(dān)這項(xiàng)工作。例如,學(xué)生的年齡定義為兩位整數(shù),范圍仍然太大,可以寫(xiě)如下規(guī)則把年齡限制在15~40歲之間:CHECK(AGEBETWEEN15AND40)861.6關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化設(shè)計(jì)關(guān)系模式的好與壞用什么標(biāo)準(zhǔn)衡量?這個(gè)標(biāo)準(zhǔn)就是模式的范式(NormalForms,NF)。范式的種類(lèi)與數(shù)據(jù)依賴(lài)有著直接的聯(lián)系,基于數(shù)據(jù)依賴(lài)的范式有1NF、2NF、3NF、BCNF等。1NF是關(guān)系模式的基礎(chǔ),2NF已成為歷史,一般不再提及;在數(shù)據(jù)庫(kù)設(shè)計(jì)中最常用的3NF和BCNF。從1NF、2NF、3NF、BCNF按順序來(lái)介紹。871.第一范式定義1.12如果關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值,那么稱(chēng)R是第一范式的模式。滿(mǎn)足1NF的關(guān)系稱(chēng)為規(guī)范化的關(guān)系,否則稱(chēng)為非規(guī)范化的關(guān)系。關(guān)系數(shù)據(jù)庫(kù)研究的關(guān)系都是規(guī)范化的關(guān)系。例如關(guān)系模式R(NAME,ADDRESS,PHONE),如果一個(gè)人有兩個(gè)電話(huà)號(hào)碼(PHONE),那么關(guān)系中至少要出現(xiàn)兩個(gè)元組,以便存儲(chǔ)這兩個(gè)號(hào)碼。882.第二范式即使關(guān)系模式是1NF,但很可能具有不受歡迎的冗余和異常現(xiàn)象,因此需把關(guān)系模式作進(jìn)一步的規(guī)范化。如果關(guān)系模式中存在局部依賴(lài),就不是一個(gè)好的模式,需要把關(guān)系模式分解,以排除局部依賴(lài),使模式達(dá)到2NF的標(biāo)準(zhǔn)。在介紹第二范式之前,需要定義函數(shù)依賴(lài)FD(FunctionalDependency)。89定義1.13設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,函數(shù)依賴(lài)FD是形為X→Y的一個(gè)命題,只要r是R的當(dāng)前關(guān)系,對(duì)r中任意兩個(gè)元組t和s,都有t[X]=s[X]蘊(yùn)涵t[Y]=s[Y],那么稱(chēng)FDX→Y在關(guān)系模式R(U)中成立。這里t[X]表示元組t在屬性集X上對(duì)應(yīng)的值。X→Y讀作“X函數(shù)決定Y”,或“Y函數(shù)依賴(lài)X”。FD是對(duì)關(guān)系模式R的一切可能的關(guān)系r定義的。對(duì)于當(dāng)前關(guān)系r的任意兩個(gè)元組,如果X上對(duì)應(yīng)值相同,則要求Y上對(duì)應(yīng)值也相同。90例1.8:設(shè)關(guān)系模式R(S#,C#,SCORE,T#,TITLE)的屬性分別表示學(xué)生學(xué)號(hào)、選修課程的編號(hào)、成績(jī)、任課教師工號(hào)和教師職稱(chēng)的意義。(S#,C#)是R的候選鍵。R上有兩個(gè)FD:(S#,C#)→(T#,TITLE)和C#→(T#,TITLE),因?yàn)榈诙€(gè)FD的存在使第一個(gè)FD是局部依賴(lài),R不是2NF模式。此時(shí)R的關(guān)系就會(huì)出現(xiàn)冗余和異?,F(xiàn)象。譬如某一門(mén)課程有100個(gè)學(xué)生選修,那么在關(guān)系中就會(huì)存在100個(gè)元組,因而教師的工號(hào)和職稱(chēng)就會(huì)重復(fù)100次。如果把R分解成R1(C#,T#,TITLE)和R2(S#,C#,SCORE)后,R1和R2則都是2NF模式。91定義1.14對(duì)于FDW→A,如果存在XW有X→A成立,那么稱(chēng)W→A是局部依賴(lài)(A局部依賴(lài)于W);否則稱(chēng)W→A是完全依賴(lài)。定義1.15如果A是關(guān)系模式R的候選鍵的屬性,那么稱(chēng)A是R的主屬性;否則稱(chēng)A是R的非主屬性。定義1.16如果關(guān)系模式R是1NF,且每個(gè)非主屬性完全函數(shù)依賴(lài)于候選鍵,那么稱(chēng)R是第二范式(2NF)的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是2NF,則稱(chēng)數(shù)據(jù)庫(kù)模式為2NF的數(shù)據(jù)庫(kù)模式。不滿(mǎn)足2NF的關(guān)系模式中必定存在于非主屬性對(duì)候選鍵的局部依賴(lài)。923.第三范式定義1.17如果X→Y是R的一個(gè)FD,且Y不是X的子集,則稱(chēng)X→Y是R的非平凡的FD。定義1.18設(shè)F是關(guān)系模式R的FD集,如果F中的每一個(gè)非平凡的FDX→Y,都有X是R的超鍵,或則Y的每個(gè)屬性都是主屬性,則稱(chēng)R是屬于3NF。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是3NF,則稱(chēng)數(shù)據(jù)庫(kù)模式為3NF的數(shù)據(jù)庫(kù)模式。93例1.9:在例1.8中,R2是2NF模式,而且也已是3NF模式。但R1(C#,T#,TITLE)是2NF模式,卻不一定是3NF模式。如果R1中存在函數(shù)依賴(lài)C#→T#和T#→TITLE,那么R的候選鍵是C#,由于T#→TITLE的存在使R1不是3NF模式。如果把R1分解成R11(T#,TITLE)和R12(C#,T#)后,C#→TITLE就不會(huì)出現(xiàn)在R11和R12中。這樣R11和R12都是3NF模式。94算法1.1分解成3NF模式集的算法設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FDX→Z,并且Z是非主屬性,ZX,X不是候選鍵,這樣W→Z就是一個(gè)傳遞依賴(lài)。此時(shí)應(yīng)把R分解成兩個(gè)模式:R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(參照R1)。利用外鍵和主鍵相匹配機(jī)制,R1和R2通過(guò)連接可以重新得到R。如果R1和R2還不會(huì)是3NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是3NF為止。BCNF第三范式的修正形式是Boyee―Codd范式(簡(jiǎn)稱(chēng)BCNF),是由Boyee與Codd提出的。95定義1.19設(shè)F是關(guān)系模式R的FD集,如果F中的每一個(gè)非平凡的FDX→Y,都有X是R的超鍵,則稱(chēng)R是BCNF。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是BCNF,則稱(chēng)數(shù)據(jù)庫(kù)模式為BCNF的數(shù)據(jù)庫(kù)模式。96例1.10:設(shè)關(guān)系模式R(B#,BNAME,AUTHOR)的屬性分別表示書(shū)號(hào)、書(shū)名和作者名。如果規(guī)定,每個(gè)書(shū)號(hào)只有一個(gè)書(shū)名,但不同書(shū)號(hào)可以有相同書(shū)名;每本書(shū)可以有多個(gè)作者合寫(xiě),但每個(gè)作者參與編著的書(shū)名應(yīng)該互不相同。這樣的規(guī)定可以用下列兩個(gè)FD表示:97B#→BNAME和(AUTHOR,BNAME)→B#R的候選鍵為(BNAME,AUTHOR)或(B#,AUTHOR),因而模式R的屬性都是主屬性,R是3NF模式。但從上述兩個(gè)FD,但由于第一個(gè)FD的原因使R不是BCNF模式。如一本書(shū)由多個(gè)作者編寫(xiě)時(shí),其書(shū)名與書(shū)號(hào)間的聯(lián)系在關(guān)系中將多次出現(xiàn),帶來(lái)冗余和操作異?,F(xiàn)象。如果把R分解成R1(B#,BNAME)和R2(B#,AUTHOR),能解決上述問(wèn)題,且R1和R2都是BCNF。但這個(gè)分解把(AUTHOR,BNAME)→B#丟失了,數(shù)據(jù)語(yǔ)義將會(huì)引起新的矛盾。這就需要其它方法來(lái)約束了。98算法1.2分解成BCNF模式集的算法對(duì)于關(guān)系模式R的分解ρ(初始時(shí)ρ={R}),如果ρ中有一個(gè)關(guān)系模式Ri不是BCNF,Ri中存在一個(gè)非平凡FDX→Y,X不是超鍵。此時(shí)把Ri分解成XY和Ri–Y兩個(gè)模式。重復(fù)上述過(guò)程,一直到ρ中每一個(gè)模式都是BCNF。這個(gè)算法可能會(huì)丟失掉某些FD。991.7數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程數(shù)據(jù)庫(kù)設(shè)計(jì)一般可劃分為下面七個(gè)階段:規(guī)劃、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行維護(hù)。1.規(guī)劃階段對(duì)于數(shù)據(jù)庫(kù)系統(tǒng),特別是大型數(shù)據(jù)庫(kù)系統(tǒng)或大型信息系統(tǒng)中的數(shù)據(jù)庫(kù)群,規(guī)劃階段是十分必要的。規(guī)劃的好壞直接影響到整個(gè)系統(tǒng)的成功與否,對(duì)應(yīng)用單位的信息化進(jìn)程將產(chǎn)生深遠(yuǎn)的影響。100規(guī)劃階段具體可分為三個(gè)步驟:(1)系統(tǒng)調(diào)查:對(duì)應(yīng)用單位做全面的調(diào)查。發(fā)現(xiàn)其需要解決的主要問(wèn)題。(2)可行性分析:從技術(shù)、經(jīng)濟(jì)、效益、法律等諸方面對(duì)建立數(shù)據(jù)庫(kù)的可行性進(jìn)行分析;然后寫(xiě)出可行性報(bào)告;組織專(zhuān)家進(jìn)行討論其可行性。(3)確定數(shù)據(jù)庫(kù)系統(tǒng)的總目標(biāo),并對(duì)應(yīng)用單位的工作流程進(jìn)行優(yōu)化和制定項(xiàng)目開(kāi)發(fā)計(jì)劃。在得到?jīng)Q策部門(mén)批準(zhǔn)后,就正式進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)工作。1012.需求分析階段這一階段是計(jì)算機(jī)人員(系統(tǒng)分析員)和用戶(hù)雙方共同收集數(shù)據(jù)庫(kù)所需要的信息內(nèi)容和用戶(hù)處理的需求。并以需求說(shuō)明書(shū)的形式確定下來(lái),作為以后系統(tǒng)開(kāi)發(fā)的指南和系統(tǒng)驗(yàn)證的依據(jù)。102需求分析的工作

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論