《現(xiàn)代大學(xué)計(jì)算機(jī)基礎(chǔ)》課件第7章_第1頁
《現(xiàn)代大學(xué)計(jì)算機(jī)基礎(chǔ)》課件第7章_第2頁
《現(xiàn)代大學(xué)計(jì)算機(jī)基礎(chǔ)》課件第7章_第3頁
《現(xiàn)代大學(xué)計(jì)算機(jī)基礎(chǔ)》課件第7章_第4頁
《現(xiàn)代大學(xué)計(jì)算機(jī)基礎(chǔ)》課件第7章_第5頁
已閱讀5頁,還剩193頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章數(shù)據(jù)信息管理7.1實(shí)現(xiàn)“數(shù)字化生活”的關(guān)鍵技術(shù)—數(shù)據(jù)庫系統(tǒng)

7.2在計(jì)算機(jī)中模擬現(xiàn)實(shí)—數(shù)據(jù)模型

7.3二維表的王國—關(guān)系數(shù)據(jù)庫基礎(chǔ)

7.4遏制非法用戶侵入—數(shù)據(jù)庫安全

7.5數(shù)據(jù)庫技術(shù)之冰山一角—Access數(shù)據(jù)庫

7.1實(shí)現(xiàn)“數(shù)字化生活”的關(guān)鍵技術(shù)—數(shù)據(jù)庫系統(tǒng)

7.1.1數(shù)據(jù)為什么要管理

收集數(shù)據(jù)的目的是為了高效的利用數(shù)據(jù),通過對收集的海量數(shù)據(jù)進(jìn)行分析統(tǒng)計(jì)得到有價值的信息。如果收集了大量的數(shù)據(jù)卻無法方便地使用這些數(shù)據(jù),那么收集數(shù)據(jù)也就變得毫無意義了。數(shù)據(jù)管理就是利用計(jì)算機(jī)技術(shù)對數(shù)據(jù)進(jìn)行有效的收集、存儲、處理和應(yīng)用的過程,目的是充分有效的發(fā)揮數(shù)據(jù)的作用。數(shù)據(jù)管理經(jīng)歷了人工管理、文件系統(tǒng)管理和數(shù)據(jù)庫管理三個發(fā)展階段。

1.人工管理

20世紀(jì)50年代中期之前,計(jì)算機(jī)主要用于科學(xué)計(jì)算。當(dāng)時的計(jì)算機(jī)軟、硬件都不完善,沒有操作系統(tǒng),沒有數(shù)據(jù)管理的軟件,程序員在設(shè)計(jì)程序時不僅要規(guī)定數(shù)據(jù)的邏輯結(jié)構(gòu),還要設(shè)計(jì)其物理結(jié)構(gòu);沒有大容量的存儲設(shè)備,當(dāng)時的外存只有卡片、紙帶、磁帶。這一階段數(shù)據(jù)管理的主要特點(diǎn)是:

(1)數(shù)據(jù)不保存。當(dāng)時計(jì)算機(jī)的主要用途是科學(xué)計(jì)算,只是在計(jì)算某一課題時才將數(shù)據(jù)輸入,計(jì)算完就撤走。一般不需要將數(shù)據(jù)長期保存。

(2)應(yīng)用程序管理數(shù)據(jù),數(shù)據(jù)不共享、冗余大。沒有相應(yīng)的軟件負(fù)責(zé)數(shù)據(jù)的管理工作,數(shù)據(jù)需要由應(yīng)用程序自己設(shè)計(jì)、說明和管理。數(shù)據(jù)的組織是面向應(yīng)用程序的,一組數(shù)據(jù)只能對應(yīng)一個應(yīng)用程序。不同的應(yīng)用程序之間不能共享數(shù)據(jù),程序與程序之間存在大量的數(shù)據(jù)冗余。應(yīng)用程序和數(shù)據(jù)的關(guān)系見圖7.1。圖7.1應(yīng)用程序和數(shù)據(jù)的關(guān)系(1)

(3)數(shù)據(jù)不具有獨(dú)立性。數(shù)據(jù)的邏輯結(jié)構(gòu)(如修改、增加新數(shù)據(jù)類型、改變數(shù)據(jù)聯(lián)系等)或者物理結(jié)構(gòu)(比如說存儲設(shè)備的更換、物理存儲方式)發(fā)生變化后,必須對應(yīng)用程序做相應(yīng)的修改,大大增加了程序員的負(fù)擔(dān)。

2.文件系統(tǒng)階段

20世紀(jì)50年代后期至60年代中期,計(jì)算機(jī)不僅用于科學(xué)計(jì)算,還用于數(shù)據(jù)管理。計(jì)算機(jī)硬件方面有了磁盤、磁鼓等直接存取設(shè)備;軟件方面出現(xiàn)了操作系統(tǒng),操作系統(tǒng)中有專門負(fù)責(zé)數(shù)據(jù)管理的文件系統(tǒng),把數(shù)據(jù)按照內(nèi)容、結(jié)構(gòu)和用途組織成若干個相互獨(dú)立的文件,按文件名進(jìn)行存取。這一階段數(shù)據(jù)管理的特點(diǎn)是:

(1)數(shù)據(jù)可以長期保存。由于出現(xiàn)了磁盤這樣的外部存儲設(shè)備,可將數(shù)據(jù)長期保存,可反復(fù)用于查詢、修改、插入和刪除操作。

(2)文件系統(tǒng)管理數(shù)據(jù),有一定的數(shù)據(jù)共享性。數(shù)據(jù)以文件為單位存儲在外存中,由文件系統(tǒng)進(jìn)行統(tǒng)一管理,操作系統(tǒng)為用戶提供了良好的操作界面。用戶的程序與數(shù)據(jù)可分別存儲在外存中,應(yīng)用程序之間可以共享一組數(shù)據(jù),實(shí)現(xiàn)了以文件為單位的數(shù)據(jù)共享。

應(yīng)用程序和數(shù)據(jù)的關(guān)系見圖7.2。圖7.2應(yīng)用程序和數(shù)據(jù)的關(guān)系(2)

(3)具有一定的數(shù)據(jù)獨(dú)立性。文件的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)分開,程序和數(shù)據(jù)分離,使數(shù)據(jù)和程序有了一定的獨(dú)立性。

(4)實(shí)時處理。由于有了直接存取設(shè)備,也有了索引文件、鏈接存取文件、直接存取文件等機(jī)制,所以既可以采用順序批處理方式,也可以采用實(shí)時處理方式。

在文件系統(tǒng)階段,一個文件基本上對應(yīng)于一個應(yīng)用程序,即文件仍然是面向應(yīng)用的。由于文件之間是相互獨(dú)立的,因而不能反映現(xiàn)實(shí)世界中事物之間的聯(lián)系,當(dāng)不同的應(yīng)用程序具有部分相同但又不完全相同的數(shù)據(jù)時,也必須建立各自的數(shù)據(jù)文件,而不能共享相同部分的數(shù)據(jù),因此數(shù)據(jù)冗余度大。同時由于相同的數(shù)據(jù)重復(fù)存儲,各自管理,容易造成數(shù)據(jù)的不一致性,給數(shù)據(jù)的維護(hù)和修改帶來了困難。

3.?dāng)?shù)據(jù)庫系統(tǒng)階段

20世紀(jì)60年代后期,計(jì)算機(jī)應(yīng)用于社會各個領(lǐng)域,應(yīng)用于管理的規(guī)模更加龐大,數(shù)據(jù)量急速劇增。計(jì)算機(jī)軟硬件方面也有了進(jìn)一步的發(fā)展,軟件方面出現(xiàn)了專門管理數(shù)據(jù)的軟件—數(shù)據(jù)庫管理系統(tǒng)(DBMS,DatabaseManagementSystem);硬件方面出現(xiàn)了大容量高速存取的磁盤。這一階段數(shù)據(jù)管理的特點(diǎn)是:

(1)數(shù)據(jù)結(jié)構(gòu)化。數(shù)據(jù)庫系統(tǒng)采用數(shù)據(jù)模型表示數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)模型能夠表示現(xiàn)實(shí)世界中各種數(shù)據(jù)組織和數(shù)據(jù)間的聯(lián)系,是實(shí)現(xiàn)數(shù)據(jù)的集成化控制和減少數(shù)據(jù)冗余的前提和保證,實(shí)現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化。文件系統(tǒng)中每個文件內(nèi)部也是有結(jié)構(gòu)的,文件由若干條記錄構(gòu)成,每條記錄又由若干個屬性構(gòu)成。如“學(xué)生”文件由很多條記錄構(gòu)成,每條記錄就是一個學(xué)生信息,見圖7.3。

“課程”文件中保存著課程信息,每條記錄就是一條課程信息,“選課”文件中保存著學(xué)生選課信息,每條記錄就是一條選課信息,見圖7.4和圖7.5。圖7.4“課程”信息圖7.5“選課”信息圖7.3“學(xué)生”信息文件系統(tǒng)階段盡管記錄內(nèi)部已經(jīng)有了結(jié)構(gòu),但是記錄之間沒有聯(lián)系。有可能在“選課”文件中出現(xiàn)這樣的記錄:某個學(xué)生選了某一門課程,有一個對應(yīng)的考試成績,但是這個學(xué)生的學(xué)號或者所選課程的課號并不存在。也就是說該學(xué)生的學(xué)號信息并沒有保存在“學(xué)生”文件中,或者該生所選課程的課號沒有保存在“課程”文件中,所以不能保證數(shù)據(jù)的正確性。如果要實(shí)現(xiàn)這樣的約束,必須由程序員在應(yīng)用程序中編寫相應(yīng)代碼來實(shí)現(xiàn)。而數(shù)據(jù)庫系統(tǒng)可以通過定義約束條件來實(shí)現(xiàn)這種約束,如關(guān)系數(shù)據(jù)庫就可以通過定義關(guān)系的參照完整性規(guī)則來保證數(shù)據(jù)之間的這種聯(lián)系。數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)的結(jié)構(gòu)見圖7.6。圖7.6數(shù)據(jù)的結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)化是數(shù)據(jù)庫系統(tǒng)的主要特征之一,也是數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別。

(2)具有較高的數(shù)據(jù)獨(dú)立性。數(shù)據(jù)庫中的數(shù)據(jù)在磁盤上如何存儲,是由DBMS進(jìn)行管理的,應(yīng)用程序不需要關(guān)心,應(yīng)用程序要處理的是程序的邏輯結(jié)構(gòu),所以當(dāng)數(shù)據(jù)的物理存儲設(shè)備發(fā)生改變時,應(yīng)用程序不用修改。另外,數(shù)據(jù)與程序獨(dú)立,把數(shù)據(jù)的定義從程序中剝離,加上存取數(shù)據(jù)的方法又由DBMS負(fù)責(zé)提供,簡化了應(yīng)用程序的編寫,減少了應(yīng)用程序的維護(hù)和修改,當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,應(yīng)用程序也可以不用修改。

數(shù)據(jù)庫階段應(yīng)用程序和數(shù)據(jù)的關(guān)系見圖7.7。圖7.7應(yīng)用程序和數(shù)據(jù)的關(guān)系

(3)數(shù)據(jù)共享性高,冗余小。數(shù)據(jù)庫系統(tǒng)從整體角度看待和描述數(shù)據(jù),數(shù)據(jù)面向整個系統(tǒng),而不是面向某個應(yīng)用程序,因此數(shù)據(jù)可以被多個應(yīng)用程序和多個用戶共享,減少了數(shù)據(jù)冗余。

(4)數(shù)據(jù)由DBMS統(tǒng)一控制管理。DBMS在數(shù)據(jù)庫建立、運(yùn)行和維護(hù)時對數(shù)據(jù)庫進(jìn)行統(tǒng)一控制和管理,以保證數(shù)據(jù)的完整性、安全性、共享性,并在多用戶同時使用數(shù)據(jù)庫時進(jìn)行并發(fā)控制,并在數(shù)據(jù)庫發(fā)生故障時進(jìn)行恢復(fù)。

充分有效的管理和利用各類信息資源,是進(jìn)行科學(xué)研究和管理決策的前提條件。數(shù)據(jù)庫系統(tǒng)是為適應(yīng)數(shù)據(jù)管理的需求而發(fā)展起來的一種較為理想的數(shù)據(jù)處理系統(tǒng),它既便于數(shù)據(jù)的集中管理,又有利于應(yīng)用程序的開發(fā)和維護(hù),提高了數(shù)據(jù)的利用率,為科學(xué)研究和企業(yè)決策提供了技術(shù)保證。7.1.2什么是數(shù)據(jù)庫

1.?dāng)?shù)據(jù)庫

什么是數(shù)據(jù)庫?當(dāng)人們從不同的角度來描述這一概念時就會有不同的定義。

數(shù)據(jù)庫,就是存放數(shù)據(jù)的倉庫。就像糧庫是存放糧食的,軍火庫是存放軍火的,水庫是存水的等。這種說法雖然形象,但并不嚴(yán)謹(jǐn)。

也有人把數(shù)據(jù)庫定義為“以一定的方式存儲在一起的、能為多個用戶、多個應(yīng)用程序所共享的、具有較小冗余度的數(shù)據(jù)的集合”。這種定義側(cè)重于數(shù)據(jù)的組織。所有的信息(數(shù)據(jù)事實(shí)等)的編纂物,不論其是以印刷形式,計(jì)算機(jī)存儲單元形式,還是其它形式存在,都應(yīng)視為“數(shù)據(jù)庫”(伯爾尼公約議定書專家委員會的觀點(diǎn))。

數(shù)據(jù)庫是依照某種數(shù)據(jù)模型組織起來并存放在外部存儲器中的數(shù)據(jù)集合。這種數(shù)據(jù)集合具有如下特點(diǎn):盡可能不重復(fù),以最優(yōu)方式為某個特定組織的多種應(yīng)用服務(wù),其數(shù)據(jù)結(jié)構(gòu)獨(dú)立于使用它的應(yīng)用程序,對數(shù)據(jù)的增加、刪除、修改和檢索由統(tǒng)一軟件進(jìn)行管理和控制。從發(fā)展的歷史看,數(shù)據(jù)庫是數(shù)據(jù)管理的高級階段,它是由文件管理系統(tǒng)發(fā)展起來的。通常意義下,“數(shù)據(jù)庫”這個術(shù)語是指由數(shù)據(jù)庫管理系統(tǒng)(DBMS)管理的數(shù)據(jù)聚集,數(shù)據(jù)庫的基本特征是“長期儲存、有組織、可共享”。人們收集并抽取出一個應(yīng)用所需要的大量數(shù)據(jù)以后,將其保存起來,便于進(jìn)一步加工處理,從中獲取有用的信息。

2.?dāng)?shù)據(jù)

數(shù)據(jù)(Data)是指數(shù)據(jù)庫中存儲的基本對象,是對客觀事物的邏輯歸納,用于表示客觀事物的未經(jīng)加工的原始素材。數(shù)據(jù)是信息的表現(xiàn)形式和載體,并不僅僅指數(shù)字,它可以是數(shù)值、字符、圖像、語音、視頻等。數(shù)據(jù)經(jīng)過加工后就成為信息。記錄是關(guān)系數(shù)據(jù)庫中用來表示和存儲數(shù)據(jù)的一種格式。如圖7.8所示的學(xué)生記錄就是描述該學(xué)生的數(shù)據(jù)。圖7.8學(xué)生記錄在信息量不是很大的情況下,可以將數(shù)據(jù)保存在文件中,比如上面提到的學(xué)生記錄,可以保存在一個電子表格文件中。但是對于數(shù)據(jù)量很大,且要頻繁查詢、增加、修改、刪除數(shù)據(jù)的時候,用文件來存儲和管理數(shù)據(jù)就比較困難了,所以在信息量劇增的今天,人們需要借助計(jì)算機(jī)和數(shù)據(jù)庫技術(shù)來保存和管理大量復(fù)雜的數(shù)據(jù),以便能方便且充分的利用這些寶貴的信息資源。

3.?dāng)?shù)據(jù)庫管理系統(tǒng)

了解了什么是數(shù)據(jù)庫和數(shù)據(jù)之后,讀者可能就會思考數(shù)據(jù)庫中的數(shù)據(jù)是如何科學(xué)的組織和存儲的,又如何才能高效的從數(shù)據(jù)庫中獲取所需的信息呢?如何對數(shù)據(jù)庫中的大量數(shù)據(jù)進(jìn)行管理和維護(hù)?這些都是由數(shù)據(jù)庫管理系統(tǒng)來實(shí)現(xiàn)的。

數(shù)據(jù)庫管理系統(tǒng)(DBMS)是位于用戶和操作系統(tǒng)之間的一種大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的操縱和管理,以保證數(shù)據(jù)庫的安全性、完整性、一致性,是數(shù)據(jù)庫系統(tǒng)的核心。它主要具有以下幾方面功能:

(1)數(shù)據(jù)模式定義。數(shù)據(jù)庫管理系統(tǒng)負(fù)責(zé)為數(shù)據(jù)庫構(gòu)建模式,也就是為數(shù)據(jù)庫構(gòu)建其數(shù)據(jù)框架。

(2)數(shù)據(jù)存取的物理構(gòu)建。數(shù)據(jù)庫管理系統(tǒng)負(fù)責(zé)為數(shù)據(jù)模式的物理存取及構(gòu)建提供有效的存取方法及手段。

(3)數(shù)據(jù)操縱。數(shù)據(jù)庫管理系統(tǒng)為用戶使用數(shù)據(jù)庫中的數(shù)據(jù)提供方法,它一般提供查詢、插入、修改及刪除數(shù)據(jù)的功能。此外,它自身還具有簡單算術(shù)運(yùn)算及統(tǒng)計(jì)的能力,而且還可以與某些過程性語言結(jié)合,使其具有強(qiáng)大的過程性操作能力。

(4)數(shù)據(jù)的完整性、安全性定義與檢查。數(shù)據(jù)的完整性是保證數(shù)據(jù)庫中數(shù)據(jù)正確的必要條件,因此必須經(jīng)常檢查以維護(hù)數(shù)據(jù)的正確性;數(shù)據(jù)庫中的數(shù)據(jù)具有共享性,而數(shù)據(jù)共享可能會引發(fā)數(shù)據(jù)的非法使用,必須要對數(shù)據(jù)正確使用做出必要的規(guī)定,并在使用時作檢查,以保證數(shù)據(jù)的安全性。

(5)數(shù)據(jù)庫的并發(fā)控制與故障恢復(fù)。數(shù)據(jù)庫中的數(shù)據(jù)能為多個應(yīng)用程序服務(wù),所以就存在著多個應(yīng)用程序?qū)?shù)據(jù)庫的并發(fā)操作(即處理多個用戶/應(yīng)用程序的同時使用某些數(shù)據(jù)時可能產(chǎn)生的問題),在并發(fā)操作中如果不加控制和管理,多個應(yīng)用程序之間就會相互干擾,從而對數(shù)據(jù)庫中的數(shù)據(jù)造成破壞,數(shù)據(jù)庫管理系統(tǒng)必須對多個應(yīng)用程序的并發(fā)操作做出必要的控制以保證數(shù)據(jù)不被破壞,如果數(shù)據(jù)庫中的數(shù)據(jù)一旦遭到破壞,數(shù)據(jù)庫管理系統(tǒng)能夠及時進(jìn)行恢復(fù)。

(6)數(shù)據(jù)的服務(wù)。數(shù)據(jù)庫管理系統(tǒng)提供對數(shù)據(jù)庫中數(shù)據(jù)的多種服務(wù)功能,如數(shù)據(jù)拷貝、轉(zhuǎn)存、重組、性能監(jiān)測、分析等。為了實(shí)現(xiàn)上述功能,數(shù)據(jù)庫管理系統(tǒng)一般提供相應(yīng)的數(shù)據(jù)語言。數(shù)據(jù)定義語言(DDL,DataDefineLanguage)和數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)供用戶定義數(shù)據(jù)庫模式結(jié)構(gòu)與權(quán)限約束,實(shí)現(xiàn)對數(shù)據(jù)的查詢、修改等操作,通過數(shù)據(jù)控制語言(DCL,DateControlLanguage)對數(shù)據(jù)庫運(yùn)行進(jìn)行控制,包括并發(fā)控制、安全性檢查、完整性約束條件的檢查和執(zhí)行,數(shù)據(jù)庫的內(nèi)部維護(hù)(例如索引的自動維護(hù))等。

常用的數(shù)據(jù)庫管理系統(tǒng)有SQLServer、Oracle、DB2、Sybase、Access、MySQL等。7.1.3數(shù)據(jù)庫系統(tǒng)的構(gòu)成

數(shù)據(jù)庫系統(tǒng)是指有數(shù)據(jù)庫技術(shù)支持的計(jì)算機(jī)系統(tǒng),它可以實(shí)現(xiàn)有組織、動態(tài)地存儲大量相關(guān)數(shù)據(jù),提供數(shù)據(jù)處理和信息資源共享服務(wù)的功能。數(shù)據(jù)庫系統(tǒng)主要由四部分構(gòu)成:數(shù)據(jù)庫、軟件系統(tǒng)、硬件系統(tǒng)和用戶,見圖7.9。圖7.9數(shù)據(jù)庫系統(tǒng)

1.?dāng)?shù)據(jù)庫

在一個數(shù)據(jù)庫系統(tǒng)中,可以根據(jù)需要創(chuàng)建多個數(shù)據(jù)庫,并且數(shù)據(jù)庫中的數(shù)據(jù)通??梢员欢鄠€用戶共享。

2.軟件系統(tǒng)

軟件系統(tǒng)包括操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)及其應(yīng)用開發(fā)工具、數(shù)據(jù)庫應(yīng)用系統(tǒng)。其中數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。

3.硬件系統(tǒng)

硬件系統(tǒng)指運(yùn)行數(shù)據(jù)庫系統(tǒng)所需要的硬件設(shè)備。一個數(shù)據(jù)庫系統(tǒng)需要有足夠快的CPU來處理數(shù)據(jù),以便快速響應(yīng)用戶的數(shù)據(jù)處理和數(shù)據(jù)檢索請求,同時還需要有足夠大的內(nèi)存和外存來運(yùn)行和存儲大量的數(shù)據(jù)。對于分布式數(shù)據(jù)庫系統(tǒng)還需要有網(wǎng)絡(luò)通信設(shè)備的支持。

4.用戶

用戶指的是管理和使用數(shù)據(jù)庫的人。用戶有三類:數(shù)據(jù)庫管理員、應(yīng)用程序員和終端用戶。

(1)數(shù)據(jù)庫管理員(DBA,DatabaseAdministrator):對數(shù)據(jù)庫進(jìn)行設(shè)計(jì)、維護(hù)和管理的專門人員。DBA必須要有較高的技術(shù)水平,還應(yīng)具有了解和闡明管理要求的能力,他不僅要熟悉數(shù)據(jù)庫管理系統(tǒng)軟件,還應(yīng)熟悉本單位的業(yè)務(wù)工作流程。DBA應(yīng)參與數(shù)據(jù)庫設(shè)計(jì)的全過程,決定數(shù)據(jù)庫的結(jié)構(gòu)和內(nèi)容;負(fù)責(zé)定義數(shù)據(jù)的安全性和完整性,分配終端用戶對數(shù)據(jù)庫的使用權(quán)限和密碼的管理;控制數(shù)據(jù)庫的運(yùn)行和使用,改進(jìn)和重新構(gòu)造數(shù)據(jù)庫系統(tǒng),當(dāng)數(shù)據(jù)庫遭到破壞時,負(fù)責(zé)恢復(fù)數(shù)據(jù)庫等。數(shù)據(jù)庫管理員一般由業(yè)務(wù)水平高,資歷深的人擔(dān)任。

(2)應(yīng)用程序員:負(fù)責(zé)為終端用戶設(shè)計(jì)和編寫應(yīng)用程序,方便終端用戶對數(shù)據(jù)庫進(jìn)行操作。

(3)終端用戶:最終使用數(shù)據(jù)庫的人員。如使用超市管理系統(tǒng)工作的超市收銀員,使用圖書管理系統(tǒng)借書的學(xué)生,使用火車售票系統(tǒng)賣票的鐵路售票員等。終端用戶一般為非計(jì)算機(jī)專業(yè)人員,他們通過窗口、菜單、對話框等方式使用數(shù)據(jù)庫,不需要懂編程和數(shù)據(jù)庫技術(shù)。7.1.4數(shù)據(jù)庫新技術(shù)

隨著計(jì)算機(jī)系統(tǒng)硬件、Internet和Web技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)不斷應(yīng)用到新的領(lǐng)域。數(shù)據(jù)庫出現(xiàn)了許多新的分支:有面向決策支持的數(shù)據(jù)倉庫、面向科學(xué)計(jì)算的科學(xué)數(shù)據(jù)庫、面向工程設(shè)計(jì)的工程數(shù)據(jù)庫、面向地理信息系統(tǒng)的空間數(shù)據(jù)庫、面向移動計(jì)算環(huán)境的移動數(shù)據(jù)庫,以及Web數(shù)據(jù)庫、實(shí)時數(shù)據(jù)庫、統(tǒng)計(jì)數(shù)據(jù)庫等。隨著數(shù)據(jù)庫系統(tǒng)所管理的數(shù)據(jù)格式、數(shù)據(jù)處理方法以及應(yīng)用環(huán)境不斷變化,同時隨著人工智能、多媒體和其它學(xué)科技術(shù)的發(fā)展,數(shù)據(jù)庫與相關(guān)技術(shù)結(jié)合出現(xiàn)了面向?qū)ο髷?shù)據(jù)庫、分布式數(shù)據(jù)庫、并行數(shù)據(jù)庫、多媒體數(shù)據(jù)庫、傳感器網(wǎng)絡(luò)管理數(shù)據(jù)庫、主動數(shù)據(jù)庫、知識數(shù)據(jù)庫、模糊數(shù)據(jù)庫等。

數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)領(lǐng)域中發(fā)展最快的技術(shù)之一,數(shù)據(jù)庫技術(shù)的發(fā)展是沿著數(shù)據(jù)模型這條主線展開的。 7.2在計(jì)算機(jī)中模擬現(xiàn)實(shí)—數(shù)據(jù)模型

7.2.1數(shù)據(jù)模型概述—幾個世界

通俗地講,數(shù)據(jù)模型就是對現(xiàn)實(shí)世界的模擬。在數(shù)據(jù)庫中使用數(shù)據(jù)模型來抽象表示和處理現(xiàn)實(shí)世界,使之可以存放于數(shù)據(jù)庫中。數(shù)據(jù)模型應(yīng)滿足三方面要求:

(1)能比較真實(shí)地模擬現(xiàn)實(shí)世界。

(2)容易為人所理解。

(3)便于在計(jì)算機(jī)上實(shí)現(xiàn)。

圖7.10幾個“世界”間的關(guān)系一種數(shù)據(jù)模型要很好地滿足這三個方面的要求,目前尚很困難。在數(shù)據(jù)庫系統(tǒng)中應(yīng)針對不同的使用對象和應(yīng)用目的,采用不同的數(shù)據(jù)模型。圖7.10幾個“世界”間的關(guān)系現(xiàn)實(shí)世界中的河流山川、花草樹木、人和動物,都是計(jì)算機(jī)不可能直接處理的,所以必須先對現(xiàn)實(shí)世界中的具體事物進(jìn)行分析、歸納、抽象形成信息,再對這些信息進(jìn)行記錄、整理、歸類后就構(gòu)成了信息世界。將信息世界中的信息用二維表或其它形式表示出來就形成了數(shù)據(jù)世界,最后再將這些數(shù)據(jù)轉(zhuǎn)換成計(jì)算機(jī)能夠處理的二進(jìn)制形式,就是數(shù)字世界。

幾個“世界”間的關(guān)系如圖7.10所示。

數(shù)據(jù)模型按不同的應(yīng)用層次分成三種類型:概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。7.2.2概念模型—信息世界

概念數(shù)據(jù)模型簡稱概念模型,又稱為信息模型。概念模型是對現(xiàn)實(shí)世界的第一次抽象,是按照用戶的觀點(diǎn)對現(xiàn)實(shí)世界進(jìn)行建模,描述用戶的需求,是數(shù)據(jù)庫設(shè)計(jì)人員和用戶之間交流的語言。概念模型既要具有較強(qiáng)的語義表達(dá)能力,能夠方便、直觀地表達(dá)應(yīng)用中的各種語義知識,還應(yīng)該簡單、清晰,易于用戶理解。

概念模型主要用于數(shù)據(jù)庫設(shè)計(jì),它與具體的計(jì)算機(jī)系統(tǒng)和DBMS無關(guān),重點(diǎn)在于分析數(shù)據(jù)及數(shù)據(jù)間的聯(lián)系等。概念模型的表示方法有很多種,最著名也最常用的是實(shí)體聯(lián)系模型。實(shí)體聯(lián)系(EntityRelationship)模型也稱為E-R模型,它是由Peter-Chen(美籍華裔計(jì)算機(jī)科學(xué)家陳品山)于1976年在題為“實(shí)體聯(lián)系模型:將來的數(shù)據(jù)視圖”論文中提出的。E-R模型中有以下幾個基本概念:

(1)實(shí)體:是指客觀存在并可相互區(qū)別的事物。實(shí)體可以是具體的對象,如一所學(xué)校、一名學(xué)生、一門課程等;也可以是抽象的概念,如一次選課、一個操作流程等。

(2)屬性:實(shí)體和聯(lián)系所具有的特征?,F(xiàn)實(shí)世界中的實(shí)體可由若干屬性來描述,如學(xué)生有學(xué)號、姓名、性別、年齡等屬性,選課有選課編號、成績等屬性。

(3)實(shí)體集:所有屬性完全相同的實(shí)體的集合。例如,全體學(xué)生、全體教師等。每個實(shí)體集都有一個名稱,即實(shí)體名,在不引起混淆的情況下,實(shí)體集往往簡稱為實(shí)體。

(4)實(shí)體型:用實(shí)體名和屬性集表示。例如,學(xué)生(學(xué)號、姓名、性別、年齡、院/系、家庭住址、入學(xué)年份)就是一個實(shí)體型。

(5)聯(lián)系:表示相關(guān)聯(lián)的實(shí)體集之間的關(guān)系。如學(xué)生和課程之間的關(guān)系為選課,教師和課程之間的關(guān)系為講授,校長和學(xué)校的關(guān)系為任職等。E-R模型中,實(shí)體集之間的聯(lián)系可歸為三種:①一對一(1∶1)聯(lián)系。如果實(shí)體集A中的每一個實(shí)體,在實(shí)體集B中至多只有一個實(shí)體與之聯(lián)系;反之,對于實(shí)體集B,在實(shí)體集A中也至多只有一個實(shí)體與之聯(lián)系,那么稱實(shí)體集A與實(shí)體集B是1∶1聯(lián)系。如學(xué)校和校長、班級和班長之間的聯(lián)系。

②一對多(1∶M)聯(lián)系。如果實(shí)體集A中的每一個實(shí)體,在實(shí)體集B中有M個實(shí)體(M≥0)與之聯(lián)系;反之,對于實(shí)體集B中的每一個實(shí)體,在實(shí)體集A中至多有一個實(shí)體與之聯(lián)系,那么稱實(shí)體集A與實(shí)體集B是1∶M聯(lián)系。如學(xué)校和教師、班級和學(xué)生、部門和員工之間的聯(lián)系。③多對多(M∶N)聯(lián)系。如果實(shí)體集A中的每一個實(shí)體,在實(shí)體集B中有M個實(shí)體(M≥0)與之聯(lián)系;反之,對于實(shí)體集B中的每一個實(shí)體,在實(shí)體集A中也有N個實(shí)體(N≥0)與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B是M∶N聯(lián)系。如學(xué)生和課程、老師和學(xué)生之間的聯(lián)系。

實(shí)體聯(lián)系模型用E-R圖來描述,實(shí)體集用矩形表示,聯(lián)系用菱形表示,屬性用橢圓表示。例如有一個簡單的教務(wù)系統(tǒng),能實(shí)現(xiàn)對學(xué)生、教師、學(xué)生選課和老師授課進(jìn)行管理,那么在該教務(wù)系統(tǒng)涉及的實(shí)體有:學(xué)生(學(xué)號,姓名,性別,年齡,院/系,家庭住址,入學(xué)年份)

課程(課號,課程名稱,課程性質(zhì),學(xué)分,課時)

選課(學(xué)號,課號,成績)

授課(授課ID,課號,教師編號)

教師(教師編號,姓名,性別,出生日期,職稱,院/系)

用E-R圖可描述為圖7.11。

實(shí)體聯(lián)系模型是抽象和描述現(xiàn)實(shí)世界的有效工具,它獨(dú)立于計(jì)算機(jī)系統(tǒng),獨(dú)立于數(shù)據(jù)庫管理系統(tǒng),是各種數(shù)據(jù)模型的基礎(chǔ)。圖7.11簡單教務(wù)系統(tǒng)的E-R圖7.2.3邏輯模型—數(shù)據(jù)世界

邏輯模型又稱為數(shù)據(jù)結(jié)構(gòu)模型,簡稱數(shù)據(jù)模型。它負(fù)責(zé)將概念模型具體化,要實(shí)現(xiàn)概念模型所描述的信息。

目前,數(shù)據(jù)庫領(lǐng)域中常用的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和關(guān)系模型,其中層次模型和網(wǎng)狀模型又稱為非關(guān)系模型。關(guān)系模型是目前使用最廣泛的數(shù)據(jù)模型。由于面向?qū)ο蟮姆椒ê图夹g(shù)在計(jì)算機(jī)各個領(lǐng)域都產(chǎn)生了深遠(yuǎn)的影響,也促進(jìn)了數(shù)據(jù)庫技術(shù)中面向?qū)ο髷?shù)據(jù)模型的研究和發(fā)展,許多關(guān)系數(shù)據(jù)庫廠商為了支持面向?qū)ο蠹夹g(shù),對關(guān)系模型作擴(kuò)展,從而產(chǎn)生了對象關(guān)系模型。本節(jié)簡要介紹一下常用的三種數(shù)據(jù)模型。

1.層次模型

層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。層次模型用樹型結(jié)構(gòu)來表示實(shí)體與實(shí)體間的聯(lián)系,它只能直接表示出一對多(包括一對一)的聯(lián)系,對于多對多的聯(lián)系必須先分解成一對多聯(lián)系。所以層次模型比較適合于表示自然的層次關(guān)系,如家族關(guān)系、行政機(jī)構(gòu)等,描述直觀、自然,容易理解,這是層次數(shù)據(jù)庫的突出優(yōu)點(diǎn)。層次模型的典型代表是IBM公司于1968年推出的第一個大型商用的數(shù)據(jù)庫管理系統(tǒng)IMS(InformationManagementSystem)。

2.網(wǎng)狀模型

現(xiàn)實(shí)世界中很多實(shí)體之間的聯(lián)系是非層次結(jié)構(gòu)的,用樹型結(jié)構(gòu)描述就很不直接,網(wǎng)狀模型可以克服這一弊端。網(wǎng)狀模型用網(wǎng)狀結(jié)構(gòu)表示實(shí)體之間的聯(lián)系,最具有代表性的網(wǎng)狀數(shù)據(jù)庫管理系統(tǒng)是1971年4月數(shù)據(jù)系統(tǒng)語言協(xié)會(CODASYL,ConferenceOnDataSystemLanguage)下屬的數(shù)據(jù)庫任務(wù)組(DBTG,DatabaseTaskGroup)提出的一個系統(tǒng)方案,習(xí)慣稱為CODASYL系統(tǒng)或DBTG系統(tǒng)。雖然DBTG不是實(shí)際的系統(tǒng)軟件,但是它對網(wǎng)狀數(shù)據(jù)庫系統(tǒng)的研制和發(fā)展起了重大影響。網(wǎng)狀模型能夠直觀地表示現(xiàn)實(shí)世界,但是結(jié)構(gòu)復(fù)雜,用戶不容易掌握和使用。

3.關(guān)系模型

1970年,美國IBM公司的研究員E.?F.?Codd首次提出了數(shù)據(jù)系統(tǒng)的關(guān)系數(shù)據(jù)模型。與層次模型和網(wǎng)狀模型相比,關(guān)系模型的概念簡單、清晰,并且具有嚴(yán)格的數(shù)學(xué)基礎(chǔ),形成了關(guān)系數(shù)據(jù)理論基礎(chǔ),操作也直觀、容易。無論是數(shù)據(jù)庫的設(shè)計(jì)和建立,還是數(shù)據(jù)庫的使用和維護(hù),都比非關(guān)系模型簡便很多。由于E.?F.?Codd在數(shù)據(jù)庫領(lǐng)域的杰出貢獻(xiàn),他獲得了1981年ACM圖靈獎。

關(guān)系模型中,實(shí)體和聯(lián)系都表示為關(guān)系,一個關(guān)系可表示為一張二維表的形式。

數(shù)據(jù)模型的目標(biāo)是盡可能詳細(xì)地描述數(shù)據(jù),但并不考慮數(shù)據(jù)在物理上如何實(shí)現(xiàn)。7.2.4物理模型—數(shù)字世界

物理模型是面向計(jì)算機(jī)物理表示的模型,它描述了數(shù)據(jù)如何在計(jì)算機(jī)中存儲,如何表達(dá)記錄結(jié)構(gòu)、記錄順序和訪問路徑等信息。物理模型不但與具體的DBMS有關(guān),還與計(jì)算機(jī)系統(tǒng)有關(guān)。物理模型是在邏輯模型的基礎(chǔ)上,考慮各種具體的技術(shù)實(shí)現(xiàn)因素,進(jìn)行數(shù)據(jù)庫體系結(jié)構(gòu)設(shè)計(jì),真正實(shí)現(xiàn)數(shù)據(jù)在數(shù)據(jù)庫中的存放。

DBMS為了保證其獨(dú)立性與可移植性,大部分物理模型的實(shí)現(xiàn)工作由系統(tǒng)自動完成。 7.3二維表的王國—關(guān)系數(shù)據(jù)庫基礎(chǔ)

關(guān)系模型是目前最重要的一種數(shù)據(jù)模型,是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來的,關(guān)系模型中無論是實(shí)體還是聯(lián)系都由單一的結(jié)構(gòu)類型—關(guān)系來表示。在實(shí)際的關(guān)系數(shù)據(jù)庫中,關(guān)系也稱表,一個關(guān)系數(shù)據(jù)庫就是由若干個表組成的。

7.3.1關(guān)系數(shù)據(jù)庫的基本概念

關(guān)系數(shù)據(jù)庫中的實(shí)體和聯(lián)系都表示為關(guān)系,一個關(guān)系在邏輯結(jié)構(gòu)上就是一張二維表,由行和列構(gòu)成。下面以學(xué)生表(表7-1)為例,介紹關(guān)系數(shù)據(jù)庫中常用的術(shù)語。表7-1學(xué)生表

關(guān)系:一個關(guān)系對應(yīng)于一張二維表。如學(xué)生表就是一個關(guān)系。

關(guān)系名:每個關(guān)系都有個名字,稱為關(guān)系名。

元組:表中的每一行都稱為一個元組,也叫一條記錄。關(guān)系中元組的順序可任意交換,可根據(jù)需要對元組進(jìn)行排序。例如,在學(xué)生表中,可根據(jù)學(xué)號對元組進(jìn)行排序,也可根據(jù)入學(xué)日期進(jìn)行排序等。

屬性:表中的每一列都是一個屬性,也叫一個字段,屬性必須是不可再分的。如“工資”可以分為基本工資、崗位工資、職位補(bǔ)貼,那么工資就不能作為一個屬性。每個屬性都有一個屬性名,體現(xiàn)在表的標(biāo)題行。

域:每個屬性的取值范圍。例如性別屬性只能取“男”或“女”兩個值。

分量:元組的一個屬性稱為一個分量。如“張峰”就是第一個元組的一個分量。

關(guān)系模式:對關(guān)系的描述,用關(guān)系名和屬性的集合來表示。如學(xué)生表(學(xué)號,姓名,性別,年齡,院/系,家庭住址,入學(xué)日期)就是一個關(guān)系模式。

主鍵:又稱為主碼,主關(guān)鍵字。表中的某個屬性或?qū)傩越M合,能夠唯一地確定一條記錄。所以主鍵的值不能為空,不能重復(fù)。如“學(xué)號”為學(xué)生表的主鍵。

外鍵:表中的某個屬性或?qū)傩缘募喜皇潜颈淼闹麈I,但卻是另外一張表的主鍵,稱該屬性或?qū)傩越M為此表的外鍵。例如:教師編號為“教師表”的主鍵,但卻不是“課程表”的主鍵,則稱教師編號為“課程表”的外鍵。

表的內(nèi)容:元組的集合。

基數(shù):關(guān)系中元組的個數(shù)。如學(xué)生表的基數(shù)為10,表示表中共有10條記錄。

元數(shù):關(guān)系中屬性的個數(shù)。如學(xué)生表的元數(shù)為7,表示表中共有7個不同的屬性。

關(guān)系數(shù)據(jù)庫:數(shù)據(jù)庫中所有關(guān)系的集合。比如前面提到的簡單教務(wù)系統(tǒng)數(shù)據(jù)庫就由五張表組成:“學(xué)生”表、“教師”表、“課程”表、“選課”表和“授課”表。關(guān)系數(shù)據(jù)庫是基于關(guān)系模型的。關(guān)系模型描述了一個關(guān)系的結(jié)構(gòu),一個關(guān)系就是一張二維表。關(guān)系是元組的集合,是某一時刻關(guān)系模式的狀態(tài)或內(nèi)容。因此,關(guān)系模式是穩(wěn)定的、靜態(tài)的,而關(guān)系則是隨時間變化的、動態(tài)的。關(guān)系是關(guān)系模型中最基本的數(shù)據(jù)結(jié)構(gòu),關(guān)系既用來表示實(shí)體,也用來表示實(shí)體間的關(guān)系。7.3.2關(guān)系數(shù)據(jù)庫的基本操作

關(guān)系數(shù)據(jù)庫是建立在數(shù)學(xué)理論之上的,集合代數(shù)理論是關(guān)系理論的基礎(chǔ),關(guān)系數(shù)據(jù)庫是用數(shù)學(xué)的方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。本節(jié)將對關(guān)系數(shù)據(jù)庫的理論—關(guān)系代數(shù)作個簡單介紹。

關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,實(shí)體和聯(lián)系都表示為單一的關(guān)系。在用戶看來一個關(guān)系就是一張二維表,表的每一行對應(yīng)一個元組,表中的每一列對應(yīng)一個域(一組具有相同數(shù)據(jù)類型的值的集合)。

關(guān)系可以有三種類型:基本關(guān)系、查詢表和視圖表。

基本關(guān)系:又稱為基本表,數(shù)據(jù)庫中的數(shù)據(jù)都存在基本表中,只有基本表可以存儲數(shù)據(jù)。查詢表:是查詢結(jié)果對應(yīng)的表,在執(zhí)行查詢時動態(tài)獲取數(shù)據(jù)顯示查詢結(jié)果。

視圖表:是由基本表或其它視圖導(dǎo)出的表。

三種關(guān)系中只有基本表中存儲數(shù)據(jù),查詢表和視圖表中并不存儲數(shù)據(jù)。

1.關(guān)系代數(shù)的基本操作

關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)都以關(guān)系的形式存在,對數(shù)據(jù)的操作就是對關(guān)系的操作,而關(guān)系是元組的集合,因此,可以將關(guān)系操作看成是集合的運(yùn)算。關(guān)系數(shù)據(jù)庫中常用的操作有查詢、插入、刪除、修改,關(guān)系的查詢表達(dá)能力很強(qiáng),是關(guān)系操作中最主要的部分。關(guān)系操作可分為傳統(tǒng)的集合運(yùn)算(交、并、差、廣義笛卡爾積)和專門的關(guān)系運(yùn)算(選擇、投影連接、除)。

1)傳統(tǒng)的集合運(yùn)算

設(shè)有關(guān)系R和S:

(1)交運(yùn)算:R和S的交集是由既屬于R又屬于S的元組組成的集合。交運(yùn)算用符號“∩”表示,結(jié)果用T表示,那么T?=?R∩S。

(2)并運(yùn)算:兩個關(guān)系R和S的并集是由屬于R或?qū)儆赟的元組組成的集合。并運(yùn)算用符號“∪”表示,結(jié)果用T表示,那么T?=?R∪S。

(3)差運(yùn)算:R和S的差是由屬于R但不屬于S的元組組成的集合。差運(yùn)算用符號“-”表示。差運(yùn)算不滿足交換律,所以R-S與S-R的結(jié)果不同。

(4)廣義笛卡爾積(乘法運(yùn)算):把兩個關(guān)系的元組以所有可能的方式組成對。笛卡爾積運(yùn)算用符號“×”表示。設(shè)有關(guān)系R和S,R的基數(shù)為m,S的基數(shù)為n,那么經(jīng)過笛卡爾積運(yùn)算后,新關(guān)系T的基數(shù)為m?×?n,即T?=?R×S。集合運(yùn)算把關(guān)系當(dāng)做元組的集合,從水平方向(行)上進(jìn)行運(yùn)算。在關(guān)系中增加元組時,使用并運(yùn)算;刪除元組時,使用差運(yùn)算;修改元組時,可使用差運(yùn)算及并運(yùn)算(在關(guān)系R中作修改操作,可將需要修改的元組組成關(guān)系R',修改后的元組記為關(guān)系R",可通過(R-R')∪R"?實(shí)現(xiàn)修改操作)。

2)專門的關(guān)系運(yùn)算

(1)選擇運(yùn)算:從關(guān)系中找出滿足給定條件的那些元組。在行上做選擇,選擇運(yùn)算用符號“σ”表示。設(shè)有關(guān)系R、S,在關(guān)系R中要找出符合條件B?=?2的元組,結(jié)果用T表示,T?=?σF(R)。

(2)投影運(yùn)算:從關(guān)系中找出若干屬性組成新的關(guān)系,是從列的角度進(jìn)行的運(yùn)算,相當(dāng)于對關(guān)系進(jìn)行垂直分解,投影運(yùn)算用符號“∏”表示。設(shè)有關(guān)系R,在關(guān)系R中做投影操作,只保留屬性B,C,運(yùn)算結(jié)果用T表示為T?=?∏B,C(R)。

(3)連接運(yùn)算:是從兩個關(guān)系的笛卡爾積中選擇屬性間滿足一定條件的元組。常用的連接操作有等值連接和自然連接。

①等值連接:從行的角度進(jìn)行運(yùn)算,要求將兩個關(guān)系中指定屬性值相同的元組連接起來。指定的屬性可以不是共同的屬性,也可以是共同的屬性,等值連接用運(yùn)算符“

”表示。設(shè)有關(guān)系R、S,在關(guān)系R和S中進(jìn)行等值連接,連接條件為B?=?E,運(yùn)算結(jié)果用T表示,T?=? 。②自然連接:要求兩個關(guān)系必須有相同的屬性(公共屬性),通過相同的屬性值將兩個關(guān)系連接起來,最后去掉重復(fù)的列,所以是同時從行和列上進(jìn)行運(yùn)算。等值連接用運(yùn)算符號“”表示。在關(guān)系R和S中進(jìn)行自然連接,結(jié)果用T表示,T?=?RS。

(4)除法運(yùn)算:設(shè)被除關(guān)系R為m元關(guān)系,除關(guān)系S為n元關(guān)系,那么它們的商為m-n元關(guān)系,記為R÷S。商的構(gòu)成原則是:將被除關(guān)系R中的m-n列,按其值分成若干組,檢查每一組的n列值的集合是否包含除關(guān)系S,若包含則取m-n列的值作為商的一個元組,否則不取。除運(yùn)算可理解為笛卡爾積的逆運(yùn)算。除法運(yùn)算用運(yùn)算符號“÷”表示。關(guān)系R除關(guān)系S,結(jié)果用T表示,那么T?=?R?÷?S。

2.關(guān)系代數(shù)在簡單教務(wù)系統(tǒng)中的應(yīng)用

例7-1

新一屆學(xué)生入學(xué),現(xiàn)要將140101班學(xué)生表(表7-2)和140201班學(xué)生表(表7-3)的內(nèi)容插入到學(xué)生表。

插入操作可使用并運(yùn)算,插入新生記錄后的學(xué)生表如表7-4所示。表7-2表7-3表7-4

例7-2

假設(shè)有三好生(表7-5)和學(xué)生干部(表7-6)兩張表,現(xiàn)要找出既是三好生又是學(xué)生干部的學(xué)生信息。

可使用交運(yùn)算實(shí)現(xiàn),結(jié)果如表7-7所示。

例7-3

現(xiàn)有學(xué)生選課成績表(表7-8)和平時成績表(表7-9),現(xiàn)要找出考試或平時成績及格的學(xué)生信息。

可使用差運(yùn)算實(shí)現(xiàn),運(yùn)算結(jié)果如表7-10所示。

例7-4

在課程表(表7-11)中找出課程性質(zhì)為必修的課程信息。

可使用選擇運(yùn)算實(shí)現(xiàn),運(yùn)算條件為課程性質(zhì)為必修。運(yùn)算結(jié)果如表7-12。

例7-5

在課程表中(表7-11),只顯示課號、課程名稱和學(xué)時信息。

可使用投影操作實(shí)現(xiàn),在課號、課程名稱和學(xué)時上進(jìn)行投影。運(yùn)算結(jié)果如表7-13所示。表7-13

例7-6

在學(xué)生表(表7-14)、課程表(表7-15)及選課成績表(表7-16)中找出選修了高等數(shù)學(xué),并且考試成績不及格的學(xué)生姓名和成績。(綜合使用選擇,投影,連接操作)。表7-14首先進(jìn)行連接操作,學(xué)生表和選課成績表進(jìn)行自然連接,公共屬性為“學(xué)號”;課程表和選課成績表進(jìn)行自然連接,公共屬性為“課號”,再將連接后的兩張表進(jìn)行自然連接,公共字段為“學(xué)號”、“課號”和“成績”。

然連接后的關(guān)系如圖7.12所示。圖7.12自然連接關(guān)系第二步進(jìn)行選擇操作,選擇的條件是課程名稱=高等數(shù)學(xué),成績<60,運(yùn)算結(jié)果如圖7.13所示。

第三步,進(jìn)行投影操作,選擇“姓名”和“成績”列內(nèi)容,運(yùn)算結(jié)果如圖7.14所示。圖7.13運(yùn)算結(jié)果圖7.14運(yùn)算結(jié)果7.3.3關(guān)系數(shù)據(jù)庫的完整性約束

數(shù)據(jù)模型通常是由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分構(gòu)成的。

數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫的組成對象及對象之間的聯(lián)系,是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的一個方面。因此,人們通常會根據(jù)數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如關(guān)系數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)模型命名為關(guān)系模型。

數(shù)據(jù)操作指對數(shù)據(jù)庫中的各種對象的實(shí)例所允許的操作的集合,包括操作及有關(guān)操作的規(guī)則。數(shù)據(jù)庫主要有查詢和更新兩類操作。數(shù)據(jù)模型必須定義這兩類操作的確切含義、操作符號、操作規(guī)則以及實(shí)現(xiàn)操作的語言。數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述,數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。數(shù)據(jù)完整性是一組規(guī)則的集合,用來保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性。

數(shù)據(jù)完整性和數(shù)據(jù)安全性是兩個不同的概念,數(shù)據(jù)的完整性用來防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),也就是防止存在不正確的數(shù)據(jù),而安全性是保護(hù)數(shù)據(jù)庫防止遭受惡意的破壞和非法的存取。本節(jié)主要討論關(guān)系數(shù)據(jù)庫的完整性。

為了保證數(shù)據(jù)庫中數(shù)據(jù)的完整性,關(guān)系模型提供了三類完整性約束:實(shí)體完整性、參照完整性和用戶自定義的完整性。

1.實(shí)體完整性

實(shí)體完整性是指表中行的完整性,實(shí)體完整性要求主鍵不能為空、不能重復(fù)。在關(guān)系模型中,主鍵(主關(guān)鍵字)作為唯一的標(biāo)識,不能重復(fù)、不能為空。主關(guān)鍵字是否可以修改或整個列是否可以被刪除,取決于主關(guān)鍵字與其它表之間要求的完整性。

例如,簡單教務(wù)系統(tǒng)中,選課關(guān)系是由學(xué)號、課號和成績構(gòu)成,學(xué)號和課號共同做主鍵,那么要求學(xué)號和課號兩個屬性的值都不能為空,因?yàn)橹挥袑W(xué)生選了課,才會有成績,也就是說,沒有學(xué)號的成績或是沒有課號的成績是錯誤的,是不應(yīng)該存在的。

2.參照完整性

參照完整性要求關(guān)系中不允許引用不存在的實(shí)體。參照完整性屬于表之間的約束規(guī)則。實(shí)施了參照完整性規(guī)則之后,對表中主關(guān)鍵字進(jìn)行操作時,系統(tǒng)會自動檢查該字段,看看是否被添加、修改或刪除了。如果對主關(guān)鍵字的修改違背了參照完整性的要求,那么系統(tǒng)會強(qiáng)制執(zhí)行參照完整性。

例如,在簡單教務(wù)系統(tǒng)中,課程表和教師表之間通過教師編號建立關(guān)聯(lián),當(dāng)向課程表中添加一條記錄時,系統(tǒng)要檢查新記錄的教師編號是否存在于主表(教師信息表)中,如果存在,則允許執(zhí)行插入操作,否則拒絕插入。參照完整性還體現(xiàn)在對主表中主鍵值的刪除和更新操作。

如果刪除主表中的一條記錄,那么從表中凡是與主表中主鍵值相同的外鍵值均被刪除,稱為級聯(lián)刪除。

如果修改主表中某條記錄主鍵的值,那么從表中相應(yīng)記錄中的外鍵值也隨著修改,稱為級聯(lián)更新。

參照完整性和實(shí)體完整性是關(guān)系模型必須要滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。

3.用戶自定義的完整性

用戶自定義的完整性指的是針對某一關(guān)系數(shù)據(jù)庫的約束條件,是反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。實(shí)體完整性和參照完整性約束是任何關(guān)系數(shù)據(jù)庫都必須遵守的規(guī)則,除此之外,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要設(shè)置一些特殊的約束條件,用戶自定義的完整性規(guī)則就是針對某一具體的應(yīng)用而設(shè)計(jì)的約束條件。

例如在教師表中,教師職稱字段的內(nèi)容只可能是列表“教授、副教授、高級實(shí)驗(yàn)師、講師、助教”中的內(nèi)容,那么當(dāng)用戶輸入或修改教師信息時,系統(tǒng)會在職稱字段中進(jìn)行完整性檢查,檢查該字段的值是否滿足用戶自定義的規(guī)則,如果不滿足則拒絕執(zhí)行操作,并給出相關(guān)提示信息。

關(guān)系完整性規(guī)則是對關(guān)系的約束條件,這些約束條件實(shí)際上是對現(xiàn)實(shí)世界的要求,任何關(guān)系在任何時刻都要滿足這些條件。7.3.4關(guān)系數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)方法

前面我們介紹過數(shù)據(jù)庫系統(tǒng)是指擁有數(shù)據(jù)庫技術(shù)支持的計(jì)算機(jī)系統(tǒng),它主要由數(shù)據(jù)庫、軟件系統(tǒng)、硬件系統(tǒng)和用戶構(gòu)成。在具備了數(shù)據(jù)庫管理系統(tǒng)、系統(tǒng)軟件、操作系統(tǒng)和硬件環(huán)境時,對數(shù)據(jù)庫應(yīng)用開發(fā)人員來說,就是如何使用這個環(huán)境表達(dá)用戶的要求,構(gòu)造最優(yōu)的數(shù)據(jù)模型,然后建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),這個過程就是數(shù)據(jù)庫設(shè)計(jì)。

在數(shù)據(jù)庫領(lǐng)域內(nèi),通常把使用數(shù)據(jù)庫的各類信息系統(tǒng)都稱為數(shù)據(jù)庫應(yīng)用系統(tǒng),例如以數(shù)據(jù)庫為基礎(chǔ)的各種信息管理系統(tǒng)、辦公自動化系統(tǒng)、電子商務(wù)系統(tǒng)等。數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫系統(tǒng)的核心,是信息系統(tǒng)開發(fā)和建設(shè)的重要組成部分。數(shù)據(jù)庫設(shè)計(jì)狹義地講就是設(shè)計(jì)數(shù)據(jù)庫本身,即設(shè)計(jì)數(shù)據(jù)庫的各級模式并建立數(shù)據(jù)庫,這是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的一個部分。廣義地講,數(shù)據(jù)庫設(shè)計(jì)是設(shè)計(jì)整個數(shù)據(jù)庫應(yīng)用系統(tǒng)?!叭旨夹g(shù),七分管理,十二分基礎(chǔ)數(shù)據(jù)”是數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)之一,可以看出狹義的數(shù)據(jù)庫設(shè)計(jì)是整個數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。當(dāng)然設(shè)計(jì)一個好的數(shù)據(jù)庫與設(shè)計(jì)一個好的數(shù)據(jù)庫應(yīng)用系統(tǒng)是密不可分的,一個好的數(shù)據(jù)庫結(jié)構(gòu)是應(yīng)用系統(tǒng)的基礎(chǔ)。

本節(jié)我們討論的是狹義的數(shù)據(jù)庫設(shè)計(jì),即設(shè)計(jì)數(shù)據(jù)庫本身。早期在開發(fā)一些小型數(shù)據(jù)庫應(yīng)用系統(tǒng)時,數(shù)據(jù)庫設(shè)計(jì)往往會采用手工試湊法。這是一種直觀的設(shè)計(jì)方法,數(shù)據(jù)庫設(shè)計(jì)的優(yōu)劣主要依賴于設(shè)計(jì)者的經(jīng)驗(yàn)和技巧,缺乏科學(xué)理論和軟件工程方法支持,常常是數(shù)據(jù)庫運(yùn)行一段時間以后又不同程度地發(fā)現(xiàn)各種問題,需要進(jìn)行修改甚至重新設(shè)計(jì),增加了系統(tǒng)維護(hù)的難度、數(shù)據(jù)庫設(shè)計(jì)的質(zhì)量難以保證,不適合大型數(shù)據(jù)庫設(shè)計(jì)。大型數(shù)據(jù)庫設(shè)計(jì)是涉及多學(xué)科的綜合性技術(shù),是一項(xiàng)龐大的工程項(xiàng)目,它要求從事數(shù)據(jù)庫設(shè)計(jì)的專業(yè)人員具備多方面的技術(shù)和知識。主要包括:計(jì)算機(jī)的基礎(chǔ)知識、軟件工程的原理和方法、程序設(shè)計(jì)的方法和技巧、數(shù)據(jù)庫的基本知識、數(shù)據(jù)庫設(shè)計(jì)技術(shù)和應(yīng)用領(lǐng)域的知識,只有這樣才能設(shè)計(jì)出符合具體領(lǐng)域要求的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。規(guī)范設(shè)計(jì)是運(yùn)用軟件工程的思想和方法,以各種設(shè)計(jì)準(zhǔn)則和規(guī)程,進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的方法。新奧爾良法(NewOrleans)方法是規(guī)范設(shè)計(jì)中比較著名的,它將數(shù)據(jù)庫設(shè)計(jì)分為四個階段:需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。后經(jīng)過改進(jìn),分為六個階段:

1.?dāng)?shù)據(jù)庫需求分析

進(jìn)行數(shù)據(jù)庫設(shè)計(jì)首先必須準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理),它是后面幾個環(huán)節(jié)的基礎(chǔ),需求分析做得不好,甚至?xí)?dǎo)致整個數(shù)據(jù)庫設(shè)計(jì)返工重做。

2.?dāng)?shù)據(jù)庫概念設(shè)計(jì)

概念設(shè)計(jì)是整個數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵,它通過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨(dú)立于具體的數(shù)據(jù)庫管理系統(tǒng)的概念模型。

3.?dāng)?shù)據(jù)庫邏輯設(shè)計(jì)

邏輯結(jié)構(gòu)設(shè)計(jì)是將概念模型轉(zhuǎn)換為某個數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化。常用的邏輯數(shù)據(jù)模型是關(guān)系模型。

4.?dāng)?shù)據(jù)庫物理設(shè)計(jì)

物理設(shè)計(jì)是將邏輯數(shù)據(jù)模型轉(zhuǎn)化為計(jì)算機(jī)物理實(shí)現(xiàn)(包括存儲結(jié)構(gòu)和存取方法)。

5.?dāng)?shù)據(jù)庫實(shí)施

在數(shù)據(jù)庫實(shí)施階段,設(shè)計(jì)人員運(yùn)用數(shù)據(jù)庫管理系統(tǒng)所提供的數(shù)據(jù)庫語言及其宿主語言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序、組織數(shù)據(jù)入庫、并進(jìn)行調(diào)試運(yùn)行。

6.?dāng)?shù)據(jù)庫運(yùn)行與維護(hù)

數(shù)據(jù)庫應(yīng)用系統(tǒng)經(jīng)調(diào)試運(yùn)行后即可投入正式使用,在數(shù)據(jù)庫系統(tǒng)運(yùn)行過程中必須進(jìn)行維護(hù),不斷的對其進(jìn)行評價、調(diào)整與修改。由于數(shù)據(jù)庫設(shè)計(jì)的結(jié)果往往不是唯一的,所以設(shè)計(jì)的過程通常是一個不斷試探的過程,數(shù)據(jù)庫設(shè)計(jì)不可能一氣呵成,需要反復(fù)推敲和修改才能完成。所以設(shè)計(jì)一個完善的數(shù)據(jù)庫數(shù)據(jù)庫應(yīng)用系統(tǒng)往往是上述六個階段的不斷反復(fù)。規(guī)范化設(shè)計(jì)從本質(zhì)是來說仍然屬于手工設(shè)計(jì)方法,其基本思想是過程迭代和逐步求精。常用的規(guī)范方法有:

基于E-R模型的數(shù)據(jù)庫設(shè)計(jì)方法:是數(shù)據(jù)庫概念設(shè)計(jì)階段廣泛采用的方法,基本思想是在需要分析的基礎(chǔ)上,用E-R圖來反映現(xiàn)實(shí)世界實(shí)體之間聯(lián)系的信息模式。

3NF(第三范式)的設(shè)計(jì)方法:用關(guān)系數(shù)據(jù)理論為指導(dǎo)來設(shè)計(jì)數(shù)據(jù)庫的邏輯模型,確定關(guān)系數(shù)據(jù)庫模式中全部屬性和屬性間的依賴關(guān)系,將它們組織在一個單一的關(guān)系模式中,然后分析模式中不符合3NF的約束條件,將其進(jìn)行投影分解,規(guī)范成若干個符合3NF關(guān)系模式的集合。3NF設(shè)計(jì)方法是關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)階段可以采用的一種有效的方法。

ODL(ObjectDefinitionLanguage)方法:面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計(jì)方法,用面向?qū)ο蟮母拍詈托g(shù)語來說明數(shù)據(jù)庫結(jié)構(gòu)。ODL可以描述面向?qū)ο髷?shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì),可以直接轉(zhuǎn)換為面向?qū)ο蟮臄?shù)據(jù)庫。

隨著數(shù)據(jù)庫技術(shù)的廣泛應(yīng)用,數(shù)據(jù)庫技術(shù)已經(jīng)實(shí)用化和產(chǎn)品化,現(xiàn)在已經(jīng)可以利用一些專門的CASE軟件工具來支持?jǐn)?shù)據(jù)庫設(shè)計(jì)的全過程。 7.4遏制非法用戶侵入—數(shù)據(jù)庫安全

7.4.1數(shù)據(jù)庫安全概念

數(shù)據(jù)庫的一大特點(diǎn)是數(shù)據(jù)可以共享,但數(shù)據(jù)共享必然帶來數(shù)據(jù)庫的安全性問題。數(shù)據(jù)庫往往會成為黑客們的主要攻擊對象,他們會利用各種途徑來獲取他們想要的信息。數(shù)據(jù)庫面臨的安全威脅主要有:

軟件和硬件環(huán)境出現(xiàn)意外。如無防護(hù)情況下斷電、磁盤損壞、系統(tǒng)崩潰等,目前計(jì)算機(jī)病毒泛濫,計(jì)算機(jī)病毒可能造成系統(tǒng)崩潰,進(jìn)而破壞數(shù)據(jù)。

授權(quán)用戶對數(shù)據(jù)庫的不正確訪問而引起數(shù)據(jù)庫中數(shù)據(jù)的錯誤,或是為了某種目的,故意破壞數(shù)據(jù)庫。

非法訪問數(shù)據(jù)庫。如未經(jīng)授權(quán)非法訪問數(shù)據(jù)庫信息,竊取其中的數(shù)據(jù);未經(jīng)授權(quán)非法修改數(shù)據(jù)庫中的數(shù)據(jù),使其數(shù)據(jù)失去真實(shí)性;通過網(wǎng)絡(luò)對數(shù)據(jù)庫進(jìn)行各種非法存??;通過網(wǎng)絡(luò)破壞數(shù)據(jù)庫系統(tǒng)的完整性、可用性等等;

由于數(shù)據(jù)庫是建立在計(jì)算機(jī)系統(tǒng)之上的,因此數(shù)據(jù)庫的安全性還涉及計(jì)算機(jī)系統(tǒng)的安全性,包括計(jì)算機(jī)硬件、操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)等的安全性。因此,在討論數(shù)據(jù)庫的安全性之前,先簡單介紹一下計(jì)算機(jī)系統(tǒng)安全性的一般問題。

計(jì)算機(jī)系統(tǒng)安全性是指為計(jì)算機(jī)系統(tǒng)建立和采取的各種安全保護(hù)措施,以保護(hù)計(jì)算機(jī)系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然的或惡意的原因而使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。計(jì)算機(jī)系統(tǒng)的安全性問題可以分為三大類,即技術(shù)安全類、管理安全類和政策法律類。

技術(shù)安全是指計(jì)算機(jī)系統(tǒng)中采用具有一定安全性的硬件、軟件來實(shí)現(xiàn)對計(jì)算機(jī)系統(tǒng)及其所存數(shù)據(jù)的安全保護(hù),當(dāng)計(jì)算機(jī)系統(tǒng)受到無意或惡意的攻擊時仍然保證系統(tǒng)正常運(yùn)行,保證系統(tǒng)內(nèi)的數(shù)據(jù)不增加、不丟失、不泄露。1985年,美國國防部制定了可信計(jì)算機(jī)評估標(biāo)準(zhǔn)TCSEC(TrustedComputerSystemEvaluationCriteria)。1991年4月,美國國家計(jì)算機(jī)安全中心NCSC發(fā)布《可信計(jì)算機(jī)系統(tǒng)評估標(biāo)準(zhǔn)關(guān)于可信數(shù)據(jù)庫系統(tǒng)的解釋TDI(TrustedDatabaseInterpretation)》將TCSEC擴(kuò)展到數(shù)據(jù)庫管理系統(tǒng)。它們從安全策略、責(zé)任、保證、文檔四個方面描述了安全級別劃分的指標(biāo)。

管理安全是指由于管理不善導(dǎo)致的計(jì)算機(jī)設(shè)備和數(shù)據(jù)介質(zhì)的物理破壞、丟失等硬件意外故障以及場地的意外事故等安全問題。

政策法律指政府部門建立的有關(guān)計(jì)算機(jī)犯罪、數(shù)據(jù)安全保密的法律道德準(zhǔn)則和政策法規(guī)、法令。

數(shù)據(jù)庫的安全性和計(jì)算機(jī)系統(tǒng)的安全性是緊密聯(lián)系、互相支持的,只有各個環(huán)節(jié)都安全,才能保證數(shù)據(jù)庫的安全性。數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更新或破壞,也就是要保證數(shù)據(jù)庫信息的保密性、完整性、一致性、可用性和抗否認(rèn)性。

保密性:又稱機(jī)密性,是指個人或團(tuán)體的信息不為其它不應(yīng)獲得者獲得,保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)不被泄露和未授權(quán)的獲取。

完整性:是保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)不被未授權(quán)的篡改、破壞和刪除。

一致性:是要確保數(shù)據(jù)庫中的數(shù)據(jù)滿足實(shí)體完整性、參照完整性和用戶定義完整性要求。

可用性:是要確保數(shù)據(jù)庫中的數(shù)據(jù)不因人為或自然的原因?qū)κ跈?quán)用戶不可用。

抗否認(rèn)性:是保證用戶事后無法否認(rèn)對數(shù)據(jù)庫進(jìn)行的一系列訪問、修改、查詢等操作,便于事后分析調(diào)查。保護(hù)數(shù)據(jù)庫的安全既要做到向授權(quán)用戶提供可靠的信息服務(wù),同時還要拒絕非授權(quán)用戶對數(shù)據(jù)的存取訪問請求,保證數(shù)據(jù)庫管理下的數(shù)據(jù)的可用性、完整性和一致性,進(jìn)而保護(hù)數(shù)據(jù)庫所有者和使用者的合法權(quán)益。7.4.2數(shù)據(jù)庫安全技術(shù)

如何有效地保證數(shù)據(jù)庫系統(tǒng)的安全,實(shí)現(xiàn)數(shù)據(jù)的保密性、完整性和有效性,是至關(guān)重要的。在一般的計(jì)算機(jī)系統(tǒng)中,安全措施是一級級層層設(shè)置的。用戶要求進(jìn)入計(jì)算機(jī)系統(tǒng)時,系統(tǒng)首先根據(jù)輸入的用戶標(biāo)識進(jìn)行身份鑒定,只有合法的用戶才準(zhǔn)許進(jìn)入計(jì)算機(jī)系統(tǒng);對已經(jīng)進(jìn)入系統(tǒng)的用戶,DBMS還要進(jìn)行存取控制,只允許用戶執(zhí)行合法操作;操作系統(tǒng)也會有自己的保護(hù)措施;數(shù)據(jù)最后還可以加密以密文形式存儲到數(shù)據(jù)庫中。這里只討論跟數(shù)據(jù)庫有關(guān)的用戶標(biāo)識和鑒定技術(shù)、存取控制技術(shù)、隔離控制技術(shù)、加密技術(shù)、信息流向控制技術(shù)、推理控制技術(shù)和數(shù)據(jù)備份技術(shù)。

1.用戶標(biāo)識和鑒定(Identification&Authentication)技術(shù)

用戶標(biāo)識和鑒定是系統(tǒng)提供的最外層安全保護(hù)措施,是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識。每次用戶請求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定后才提供機(jī)器使用權(quán)。對于獲得上機(jī)使用權(quán)的用戶,若要使用數(shù)據(jù)庫時,數(shù)據(jù)庫管理系統(tǒng)還要進(jìn)行用戶標(biāo)識和鑒定。用戶標(biāo)識和鑒定的方法有很多種,在一個具體的系統(tǒng)中,經(jīng)常是多種方法同時使用,以獲得更好的安全性。近年來用戶標(biāo)識和鑒定技術(shù)發(fā)展迅速,常用的用戶標(biāo)識和鑒定的方法有:

(1)用戶名/口令。系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識,系統(tǒng)根據(jù)用戶名來鑒定此用戶是否是合法用戶。若輸入的用戶名不是合法用戶名,則不能使用系統(tǒng);若是,則進(jìn)入下一步核實(shí),要求用戶輸入口令。用戶名/口令鑒定方法的優(yōu)點(diǎn)是簡單易行,缺點(diǎn)是用戶名與口令容易被人竊取。

(2)每個用戶預(yù)先約定好一個計(jì)算過程或函數(shù)。鑒定用戶身份時,系統(tǒng)提供一個隨機(jī)數(shù),用戶根據(jù)自己預(yù)先約定的計(jì)算過程或者函數(shù)進(jìn)行計(jì)算,系統(tǒng)根據(jù)用戶計(jì)算結(jié)果的正確與否進(jìn)一步鑒定用戶身份。用戶可以約定比較簡單的計(jì)算過程或函數(shù),以便計(jì)算起來方便;也可以約定比較復(fù)雜的計(jì)算過程或函數(shù),以便安全性更好。

(3)利用用戶的個人特征鑒別。利用個人特征(簽名、指紋、聲波、虹膜等)來鑒別用戶非??煽?,但是需要昂貴的設(shè)備。

2.存取控制技術(shù)

保證數(shù)據(jù)庫安全最重要的一點(diǎn)就是確保只授權(quán)給有資格的用戶訪問數(shù)據(jù)庫,所有未被授權(quán)的人員無法接近數(shù)據(jù),這主要通過數(shù)據(jù)庫系統(tǒng)的存取控制技術(shù)實(shí)現(xiàn)。存取控制主要包括以下兩部分。

(1)定義用戶權(quán)限,并將用戶權(quán)限登記到數(shù)據(jù)字典中。用戶對某一數(shù)據(jù)對象的操作權(quán)力稱為權(quán)限。在數(shù)據(jù)庫系統(tǒng)中用戶只能訪問其有權(quán)訪問的數(shù)據(jù)。為了保證這一點(diǎn),必須預(yù)先對每個用戶定義存取權(quán)限。存取權(quán)限有兩個要素,即數(shù)據(jù)對象和操作類型。定義一個用戶的存取權(quán)限就是要定義該用戶可以在哪些數(shù)據(jù)對象上進(jìn)行哪類操作。在DBMS中,定義權(quán)限稱為授權(quán)。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)對象可以是列、元組、基本表,也可以是視圖、存儲過程等。常見的權(quán)限有:

讀:允許用戶讀數(shù)據(jù),但不能修改數(shù)據(jù);

插入:允許插入新數(shù)據(jù),但不能修改已經(jīng)存在的數(shù)據(jù);

修改:允許用戶修改數(shù)據(jù),但不能刪除數(shù)據(jù);

刪除:允許用戶刪除數(shù)據(jù)。對于通過鑒別的合法用戶,確保用戶只能存取其有權(quán)存取的數(shù)據(jù)。某個用戶應(yīng)該具有何種權(quán)限是管理問題而不是技術(shù)問題。數(shù)據(jù)庫管理系統(tǒng)(DBMS)的功能是保證這些決定的執(zhí)行。為此DBMS必須提供適當(dāng)?shù)恼Z言來定義用戶權(quán)限,這些定義經(jīng)過編譯后存放在數(shù)據(jù)字典中,這稱為安全規(guī)則或授權(quán)規(guī)則。

(2)合法權(quán)限檢查。每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫的操作請求后,DBMS查找數(shù)據(jù)字典,根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若用戶的操作請求超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。

用戶權(quán)限定義和合法權(quán)限檢查機(jī)制一起組成了DBMS的安全子系統(tǒng)。

3.隔離控制技術(shù)

隔離控制技術(shù)是通過某種中間機(jī)制,將用戶與存取對象隔離。用戶不能直接對存取對象進(jìn)行操作,而是通過中間機(jī)構(gòu)間接進(jìn)行,如視圖和存取過程。

視圖是給用戶提供個性化數(shù)據(jù)庫模式的一種手段,系統(tǒng)可以為不同的用戶定義不同的視圖,達(dá)到訪問控制的目的。首先用視圖把要保密數(shù)據(jù)對無權(quán)訪問的用戶隱藏起來,然后在視圖上面再進(jìn)一步定義存取權(quán)限。將視圖和授權(quán)機(jī)制配合使用來限制用戶的訪問權(quán)限,保證數(shù)據(jù)庫的安全。

4.信息流向控制技術(shù)

信息流控制技術(shù)是將系統(tǒng)的所有元素、組成成分等劃分成多個保護(hù)級別,保證高保護(hù)級別對象所含信息不會被傳送到低保護(hù)級別的對象中去,避免某些懷有惡意的用戶通過較低保護(hù)級別對象獲得保護(hù)級別較高的機(jī)密信息。

5.推理控制技術(shù)

推理是指用戶通過間接的方法獲取不該獲取的信息。例如,在某公司中,職員沒有權(quán)限查看他人的獎金是多少,但是可以查看整個公司的匯總信息圖(圖7.15)。

從該匯總表中,可以看到所有助工的獎金總和為0,從而可以推理出所有助工的獎金都為0,進(jìn)而推理出職稱為助工的某人,該月獎金必為0。而該數(shù)據(jù)是應(yīng)該是保密的。

推理控制的目標(biāo)就是防止用戶通過間接的方式獲得不該獲取的信息。圖7.15匯總信息圖

6.審計(jì)技術(shù)

任何系統(tǒng)的安全保護(hù)措施都不是無懈可擊的,蓄意盜竊、破壞數(shù)據(jù)的人總是想方設(shè)法侵入系統(tǒng)。通過審計(jì),可以把用戶對數(shù)據(jù)庫的所有操作記錄下來放入審計(jì)日志中,這樣數(shù)據(jù)庫系統(tǒng)可以利用審計(jì)跟蹤信息,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等,便于追查有關(guān)責(zé)任;同時審計(jì)也助于發(fā)現(xiàn)系統(tǒng)安全方面的弱點(diǎn)和漏洞。

審計(jì)是DBMS保證數(shù)據(jù)庫安全重要的一部分。由于審計(jì)通常很費(fèi)時間和空間,所以DBMS往往都將其作為可選特征,允許數(shù)據(jù)庫管理員(DBA)根據(jù)應(yīng)用對安全性的級別要求,自主選擇打開或是關(guān)閉審計(jì)功能。

7.?dāng)?shù)據(jù)備份技術(shù)

數(shù)據(jù)備份是防止系統(tǒng)出現(xiàn)操作失誤或是系統(tǒng)故障而導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)從應(yīng)用主機(jī)的硬盤或磁盤陣列復(fù)制到其它存儲介質(zhì)的過程。尤其是一些對數(shù)據(jù)可靠性要求很高的行業(yè),如銀行、證券、電信等,如果發(fā)生意外停機(jī)或是數(shù)據(jù)丟失其損失會十分慘重。為此DBA應(yīng)針對具體的業(yè)務(wù)要求制定詳細(xì)的數(shù)據(jù)庫備份與災(zāi)難恢復(fù)策略,并通過模擬故障對每種可能的情況進(jìn)行嚴(yán)格測試。

8.加密技術(shù)

對于敏感度很高的數(shù)據(jù),如財務(wù)數(shù)據(jù)、國家機(jī)密、軍事數(shù)據(jù)等,除了使用以上安全措施外,還可以進(jìn)行加密。

數(shù)據(jù)加密的基本思想就是將原始數(shù)據(jù)(明文)通過一定的轉(zhuǎn)換(加密算法)變成不可直接識別的數(shù)據(jù)格式(密文)。

隨著計(jì)算機(jī)網(wǎng)絡(luò)的快速發(fā)展,數(shù)據(jù)的安全保密變得越來越重要。DBMS是數(shù)據(jù)庫系統(tǒng)的核心,因而其自身必須具有一套完整而有效的安全機(jī)制。實(shí)現(xiàn)數(shù)據(jù)庫安全的技術(shù)有很多種,目前最重要的是存取控制技術(shù)、視圖技術(shù)和審計(jì)技術(shù)。7.5數(shù)據(jù)庫技術(shù)之冰山一角—Access數(shù)據(jù)庫

7.5.1MSAccess簡介

MSoffice是微軟公司推出的基于關(guān)系模型的桌面型數(shù)據(jù)庫管理系統(tǒng),比較適合于中小型數(shù)據(jù)庫的設(shè)計(jì)。Access1.0版本誕生于20世紀(jì)90年代初,到目前為止,經(jīng)過了多次的升級改版,目前使用最廣泛的是Access2010。

MSAccess2010采用與MSOffice2010套件中其它軟件,如MSWord、MSExcel等大家熟悉的辦公軟件同樣的操作風(fēng)格完成數(shù)據(jù)管理的工作,其操作簡單、功能豐富,可以作為大型數(shù)據(jù)庫系統(tǒng)的前端開發(fā)工具。利用MSAccess2010,用戶可以快速地構(gòu)造數(shù)據(jù)庫應(yīng)用系統(tǒng),收集數(shù)據(jù),以各種方式對數(shù)據(jù)進(jìn)行分類、篩選,也可以通過各種復(fù)雜的報表或圖表對數(shù)據(jù)進(jìn)行匯總分析。

1.Access的系統(tǒng)結(jié)構(gòu)

Access簡單易學(xué),大多數(shù)系統(tǒng)只需要編寫少量的代碼,甚至不用編寫任何代碼就可以完成。Access2010將數(shù)據(jù)庫定義為一個擴(kuò)展名為?.accdb的文件,其數(shù)據(jù)對象都存放在這個文件中。不同的數(shù)據(jù)庫對象在數(shù)據(jù)庫中起著不同的作用,利用這些對象開發(fā)人員可以快速地、規(guī)范地進(jìn)行數(shù)據(jù)的定義、存儲、生成查詢、窗體以及報表和圖表的創(chuàng)建。這6個對象分別是:

(1)表。表是數(shù)據(jù)庫的基本對象,是創(chuàng)建其他數(shù)據(jù)對象的基礎(chǔ),數(shù)據(jù)庫中的所有數(shù)據(jù)都存放在數(shù)據(jù)表中,所以又稱為數(shù)據(jù)表、數(shù)據(jù)基本表。Access的一個數(shù)據(jù)庫中可以有多張表,用戶可以在表中存儲不同類型的數(shù)據(jù)。通過在表之間建立聯(lián)系,可以將不同表中的數(shù)據(jù)聯(lián)系起來。

(2)查詢。查詢是數(shù)據(jù)庫操作的最主要目的之一,是數(shù)據(jù)庫應(yīng)用最多的對象,可以執(zhí)行很多的功能,最主要的就是從表中檢索特定的數(shù)據(jù)。數(shù)據(jù)只有被使用者查詢,才能體現(xiàn)出它的價值。要查看的數(shù)據(jù)通常分布在多個表中,通過查詢可以將不同表中的數(shù)據(jù)檢索出來,形成一個動態(tài)結(jié)果集,并可以將這個動態(tài)結(jié)果集以虛擬二維表的形式顯示出來。當(dāng)用戶只想查詢符合特定條件的記錄時,還可以使用查詢條件,篩選出用戶感興趣的數(shù)據(jù)。

查詢只記錄查詢的操作方式,查詢結(jié)果是以虛擬的二維表顯示的,它們不是基本表,并不真正存儲數(shù)據(jù)??梢詫⒉樵兘Y(jié)果轉(zhuǎn)換為基本表,也可以只保存查詢操作方式,這樣每進(jìn)行一次查詢操作,其結(jié)果集中顯示的都是當(dāng)前存儲的實(shí)際數(shù)據(jù),它反映的是查詢在那一時刻的數(shù)據(jù)表存儲情況。

(3)窗體。窗體是顯示在屏幕上的畫面,是數(shù)據(jù)庫和用戶聯(lián)系的接口。窗體的功能是建立一個可以查詢、輸入、修改、刪除數(shù)據(jù)的操作界面,方便用戶在友好的界面下編輯或查閱數(shù)據(jù)。

窗體中不僅可以包含普通的數(shù)據(jù),還可以包含圖片、圖形、聲音和視頻等不同的數(shù)據(jù)類型,還可以對窗體進(jìn)行美化。

窗體提供了一種簡單易用的處理數(shù)據(jù)的格式,而且還可以向窗體中添加一些功能元素,如命令按鈕等。用戶可以對按鈕進(jìn)行編程來確定在窗體中顯示哪些數(shù)據(jù)、打開窗體或報表或者執(zhí)行其他各種任務(wù)。

(4)報表。報表主要用來顯示或者打印,是對數(shù)據(jù)庫中查詢結(jié)果匯總、統(tǒng)計(jì)分析的最主要的數(shù)據(jù)展現(xiàn)方式。報表上所有內(nèi)容的大小和外觀都可以調(diào)整。

在設(shè)計(jì)報表的過程中,還可以設(shè)置分組顯示,以最方便用戶閱讀的方式來顯示信息。運(yùn)用報表還可以創(chuàng)建標(biāo)簽,將標(biāo)簽報表打印出來以后,裁剪成一個個小的標(biāo)簽,貼在貨物或物品上,用于對該物品進(jìn)行標(biāo)識。

(5)宏。宏是Access中執(zhí)行指定任務(wù)的一個或多個操作的集合,可以自動完成某些常用的操作。在日常工作中,用戶經(jīng)常需要重復(fù)大量的操作,利用宏可以簡化這些操作。

通過宏用戶不必編寫任何代碼,就可以實(shí)現(xiàn)一定的交互功能。宏可以實(shí)現(xiàn)的功能有打開/關(guān)閉數(shù)據(jù)庫對象、彈出提示信息框、實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出、篩選查找數(shù)據(jù)、在數(shù)據(jù)庫啟動時執(zhí)行操作等。

(6)模塊。模塊是用編程語言(VisualBasic)編寫的過程或函數(shù),用于實(shí)現(xiàn)一些宏不能完成的精細(xì)的或復(fù)雜的操作。模塊中的每一個過程都是一個函數(shù)或是子程序。通過將模塊與窗體、報表等對象相聯(lián)系,可以建立完整的數(shù)據(jù)庫應(yīng)用系統(tǒng)。

Access數(shù)據(jù)庫正是利用它的6個對象進(jìn)行工作的。其中表是6個對象中唯一真正存儲數(shù)據(jù)的,設(shè)計(jì)良好的表結(jié)構(gòu),對整個數(shù)據(jù)庫系統(tǒng)的高效運(yùn)行來說是至關(guān)重要的。

2.Access2010工作界面

同其它MSoffice2010程序一樣,Access2010也使用功能區(qū)代替了菜單,并使用了功能更加強(qiáng)大的后臺視圖。

(1)功能區(qū)。Access2010用功能區(qū)取代了早期版本菜單,主要功能區(qū)有“開始”、“創(chuàng)建”、“外部數(shù)據(jù)”和“數(shù)據(jù)庫工具”四個,每個功能區(qū)分為幾組選項(xiàng)卡,每個選項(xiàng)卡包含多個相關(guān)命令。當(dāng)在對某個對象進(jìn)行操作時,還會出現(xiàn)上下文功能區(qū)。例如,創(chuàng)建表就會出現(xiàn)上下文功能區(qū)“表格工具”。

(2)導(dǎo)航窗格。導(dǎo)航窗格在窗口的左側(cè),列出了數(shù)據(jù)庫中的對象,方便用戶操作。

由于Access數(shù)據(jù)庫的所有數(shù)據(jù)對象都保存在一個擴(kuò)展名為accdb的數(shù)據(jù)庫文件中,所以在使用Access進(jìn)行組織、存儲和管理數(shù)據(jù)時,必須先創(chuàng)建數(shù)據(jù)庫文件。

3.創(chuàng)建數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫有兩種方法,一種是建立一個空數(shù)據(jù)庫,然后向數(shù)據(jù)庫中添加表、查詢等數(shù)據(jù)對象;另一種方式是通過模板創(chuàng)建,通過簡單幾個步驟以后,可以生成一個數(shù)據(jù)庫,然后再對這個數(shù)據(jù)庫文件進(jìn)行修改。

(1)使用模板創(chuàng)建數(shù)據(jù)庫。Access2010提供了多種傳統(tǒng)數(shù)據(jù)庫和Web數(shù)據(jù)庫樣本模板,通過這些模板可快速創(chuàng)建數(shù)據(jù)庫。

(2)創(chuàng)建空數(shù)據(jù)庫。用這種方式創(chuàng)建的數(shù)據(jù)庫里面并沒有數(shù)據(jù)庫對象,只是一個空的數(shù)據(jù)庫??捎脛?chuàng)建空數(shù)據(jù)庫的方法在D盤根目錄或其它目錄下創(chuàng)建“簡單教務(wù)管理”數(shù)據(jù)庫,然后向其中添加表、查詢、窗體等數(shù)據(jù)庫對象。

4.打開/關(guān)閉數(shù)據(jù)庫

在向數(shù)據(jù)庫中進(jìn)行添加/刪除數(shù)據(jù)對象或者修改數(shù)據(jù)對象等操作前,應(yīng)該先打開數(shù)據(jù)庫,操作結(jié)束后,及時關(guān)閉數(shù)據(jù)庫。7.5.2數(shù)據(jù)表—MSAccess數(shù)據(jù)庫的基礎(chǔ)

表是Access數(shù)據(jù)庫的基本對象,存儲了數(shù)據(jù)庫中的所有數(shù)據(jù),如文本、數(shù)字、圖片、聲音和視頻等。表是其它數(shù)據(jù)庫對象操作的基礎(chǔ),在建好數(shù)據(jù)庫以后,通常首先建立數(shù)據(jù)表及建立相關(guān)表之間的關(guān)系。

1.表的組成

在關(guān)系數(shù)據(jù)庫中,實(shí)體和聯(lián)系都對應(yīng)為關(guān)系。在Access中,一個關(guān)系就是一張數(shù)據(jù)表。數(shù)據(jù)表是按照一定的結(jié)構(gòu)來存儲數(shù)據(jù)的,因此一張數(shù)據(jù)表由兩部分構(gòu)成—表結(jié)構(gòu)和表內(nèi)容。表的結(jié)構(gòu)(對應(yīng)于word表格的標(biāo)題行)主要包括字段名稱、數(shù)據(jù)類型和字段屬性等。而表內(nèi)容則體現(xiàn)為記錄和數(shù)據(jù)項(xiàng)。

(1)字段名稱。每個字段都有一個唯一的名稱,稱為字段名。在Access2010中,字段命名應(yīng)該遵循如下規(guī)則:

字段名長度不能超過64個字符,漢字和英文字符一樣視為一個字符。

字段名可以使用字母、數(shù)字、漢字、空格和其它字符,但不能以空格開頭(即第一個字符不能是空格)。

不能使用“!”、“.”、“[”、“]”和“`”。

不能使用ASCII碼為0~31的字符。

(2)數(shù)據(jù)類型。表中每一列稱為一個字段,一個字段應(yīng)該存儲具有相同特征的數(shù)據(jù),稱為數(shù)據(jù)類型。Access2010提供了12種不同的數(shù)據(jù)類型。分別是:

①自動編號。自動編號型數(shù)據(jù)比較特殊,自動編號型字段的值不能人為的輸入或修改。數(shù)據(jù)類型為自動編號型的字段一般用來設(shè)置為主鍵,每個表中只能有一個字段被設(shè)置為自動編號型。當(dāng)設(shè)置某一字段為自動編號數(shù)據(jù)類型時,該字段便永久地與記錄建立了鏈接。當(dāng)向表中插入一條記錄時,Access會在自動編號型字段中插入一個唯一編號的整數(shù)值,當(dāng)刪除某條記錄時,該字段的值也一并刪除,永遠(yuǎn)不會再使用。②文本。文本類型可存儲中英文字符、數(shù)字和符號。一般對于不需要計(jì)算的數(shù)字,如身份證號碼、電話號碼、郵政編號、學(xué)號等可設(shè)為文本型數(shù)據(jù)。文本型字段最多只能存儲255個字符,默認(rèn)為50個。

③備注。備注類型和文本一樣,也用來存儲字符、數(shù)字和符號,最多可以存儲65?535個字符。當(dāng)存儲如簡歷這樣字符較多的數(shù)據(jù)時,可使用備注型。由于不能對備注型數(shù)據(jù)進(jìn)行排序和索引,所以會降低查詢的速度。

④數(shù)字。用于存儲要參加算術(shù)運(yùn)算的數(shù)據(jù),如工資、成績、工齡等數(shù)據(jù)。數(shù)字類型的數(shù)據(jù)所占存儲空間的多少與數(shù)字類型有關(guān),如表7-17所示。表7-17⑤日期/時間。用于存儲日期和時間,如出生日期、工作時間、進(jìn)貨時間等。字段長度為8字節(jié)。

⑥貨幣。貨幣是數(shù)字類型的特殊情況,向貨幣類型的字段中輸入數(shù)據(jù)時,會自動添加貨幣符號、千位分隔符并設(shè)置為保留兩位小數(shù)。字段大小為8字節(jié)。

⑦是/否。適合于取值只有兩種情況的數(shù)據(jù),如婚姻狀態(tài)、是否黨員、對/錯等。字段大小為1字節(jié)。

⑧?OLE對象。數(shù)據(jù)類型用于存儲OLE數(shù)據(jù)或其它二進(jìn)制對象。例如Word文檔、Excel工作表、圖像、圖形、音頻、視頻等。最高可以存儲1GB以上。OLE對象由OLE服務(wù)器應(yīng)用程序創(chuàng)建,可以連接到上層應(yīng)用程序或者嵌入到Access表中。OLE對象只能用于顯示在Access窗體和報表中的限定對象框架中。不能對OLE對象建立索引。⑨附件?!案郊睌?shù)據(jù)類型是允許向Access數(shù)據(jù)庫附加外部文件的特殊字段,只能用于.accdb格式的數(shù)據(jù)庫中。單擊附件字段時,Access會打開一個小的對話框,可以查找要附加到表的文件。附加的文件集成到Access數(shù)據(jù)庫中,但是它不會轉(zhuǎn)換為某種本機(jī)Access數(shù)據(jù)類型。表中的一個附件字段可以包含多個文件。由于附加的數(shù)據(jù)集成到數(shù)據(jù)庫中,所以如果添加了很多附件,.accdb文件則會迅速變大。

⑩計(jì)算。用于顯示計(jì)算結(jié)果,計(jì)算時必須引用同一表中的其它字段。查閱向?qū)АS糜诓迦胍粋€字段,通常為4字節(jié)。該字段允許最終用戶從另一個表或窗體中,或者從一個SQL語句的結(jié)果中選擇值。這些值可以通過組合框或者列表框的方式呈現(xiàn)出來。

超鏈接。用于存放鏈接到本地或網(wǎng)絡(luò)上資源的地址,最多64?000個字符。超鏈接地址可以是URL(網(wǎng)頁地址),也可以是UNC。超鏈接地址包含顯示文本、地址、子地址三個部分,以“#”隔開。一般顯示格式為:顯示文本#地址#子地址,也可以只有前兩部分,例如,“桂林電子科技大學(xué)#”。

數(shù)據(jù)類型決定了數(shù)據(jù)的存儲方式和使用方式。在設(shè)計(jì)表的結(jié)構(gòu)時,要為每個字段選擇合適的數(shù)據(jù)類型。

(3)字段屬性。不同數(shù)據(jù)類型的字段屬性是不同的,定義字段屬性可以對輸入/輸出的格式進(jìn)行限制或驗(yàn)證,也可以控制數(shù)據(jù)在數(shù)據(jù)表視圖中的顯示格式。常見的字段屬性有:

①字段大小。字段大小即字段的長度,該屬性用來設(shè)置存儲在字段中文本的最大長度或數(shù)字的取值范圍。因此,只有文本型、數(shù)字型和自動編號型字段才具有該屬性。

②格式?!案袷健睂傩杂脕泶_定數(shù)據(jù)在屏幕上的顯示方式以及打印方式,從而使表中的數(shù)據(jù)輸出有一定的規(guī)范,便于瀏覽和使用。格式設(shè)置只是改變數(shù)據(jù)輸出的樣式,對輸入數(shù)據(jù)本身沒有影響,也不影響數(shù)據(jù)的存儲格式。③輸入掩碼。輸入掩碼屬性用來設(shè)置字段中的數(shù)據(jù)輸入格式,對電話號碼、日期、郵政編碼這些形式相對固定的數(shù)據(jù)尤其適用。例如郵政編碼必須為六位數(shù)字,不能是五位,也不能是七位,也不能是字符或其它符號。此時,可以定義一個輸入掩碼“000000”來確保輸入正確的郵政編碼。對于文本、數(shù)字、日期/時間、貨幣等數(shù)據(jù)類型的字段,均可定義輸入掩碼屬性。

如果同時使用“格式”和“輸入掩碼”屬性,要注意它們的結(jié)果不能互相沖突。如果某字段設(shè)置了輸入掩碼,同時又設(shè)置了格式屬性,格式屬性將在數(shù)據(jù)顯示時優(yōu)先于輸入掩碼的設(shè)置,這意味著即使已經(jīng)保存了輸入掩碼,在數(shù)據(jù)設(shè)置格式顯示時,將被忽略。輸入掩碼只為“文本”型和“日期/時間”型字段提供向?qū)В渌鼣?shù)據(jù)類型沒有向?qū)椭?。?shù)據(jù)掩碼屬性所用字符及含義如表7-18所示。

適當(dāng)利用格式符可以限定字段的取值范圍及格式。例如,在“學(xué)生”表中,可以通過設(shè)置學(xué)號字段的輸入掩碼屬性為“00000000”規(guī)定學(xué)生學(xué)號只能是8位數(shù)字。表7-18④默認(rèn)值。在尚未輸入字段值時系統(tǒng)自動賦予該字段的取值。當(dāng)表中有多條記錄的某個字段值相同時,可以將相同的值設(shè)置為該字段的默認(rèn)值,如“學(xué)生”表中的性別字段,可設(shè)置默認(rèn)值為“男”,這樣每產(chǎn)生一條新記錄時,這個默認(rèn)值就自動加到該字段中,避免重復(fù)輸入,加快錄入速度。用戶可以直接使用這個默認(rèn)值,也可以輸入新的值。

⑤有效性規(guī)則與有效性文本。“有效性規(guī)則”是一個與字段或記錄相關(guān)的表達(dá)式,通過對用戶輸入的值加以限制,提供數(shù)據(jù)有效性檢查。建立有效性規(guī)則時,必須創(chuàng)建一個有效的Access表達(dá)式,該表達(dá)式是一個邏輯表達(dá)式,以此來控制輸入到數(shù)據(jù)表記錄中的數(shù)據(jù)。常用的有效性規(guī)則是字段級有效性規(guī)則。該規(guī)則是對一個字段的約束,它將所輸入的值與所定義的規(guī)則

溫馨提示

  • 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

提交評論