版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.1數(shù)據(jù)管理技術(shù)發(fā)展過(guò)程
1.2數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1.3數(shù)據(jù)庫(kù)設(shè)計(jì)
第一篇基礎(chǔ)篇1.1.1人工管理階段
20世紀(jì)50年代的數(shù)據(jù)處理都是通過(guò)手工進(jìn)行的,因?yàn)楫?dāng)時(shí)的計(jì)算機(jī)主要用于科學(xué)計(jì)算,計(jì)算機(jī)上沒(méi)有專門(mén)管理數(shù)據(jù)的軟件,也沒(méi)有諸如磁盤(pán)之類的設(shè)備來(lái)存儲(chǔ)數(shù)據(jù)。那時(shí)應(yīng)用程序和數(shù)據(jù)之間的關(guān)系如圖1-l所示。1.1數(shù)據(jù)管理技術(shù)發(fā)展過(guò)程圖1-1人工管理階段應(yīng)用程序和數(shù)據(jù)之間的關(guān)系人工管理階段時(shí)期的數(shù)據(jù)管理技術(shù)具有如下特點(diǎn):
(1)數(shù)據(jù)管理由應(yīng)用程序完成。應(yīng)用程序中不僅要規(guī)定數(shù)據(jù)的邏輯結(jié)構(gòu),而且在程序中還要設(shè)計(jì)物理結(jié)構(gòu),包括存儲(chǔ)結(jié)構(gòu)的存取方法、輸入/輸出方式等,一旦數(shù)據(jù)在存儲(chǔ)器上改變物理地址,就需要相應(yīng)地改變用戶程序。
(2)數(shù)據(jù)不能共享。數(shù)據(jù)和程序一一對(duì)應(yīng),數(shù)據(jù)不能共享,數(shù)據(jù)組和數(shù)據(jù)組之間可能有許多重復(fù)數(shù)據(jù),會(huì)造成數(shù)據(jù)冗余。
(3)數(shù)據(jù)缺乏獨(dú)立性。一組數(shù)據(jù)對(duì)應(yīng)一個(gè)程序,數(shù)據(jù)面向應(yīng)用,獨(dú)立性很差。
(4)數(shù)據(jù)不能保存。在該階段計(jì)算機(jī)主要用于科學(xué)計(jì)算,一般不需要將數(shù)據(jù)長(zhǎng)期保存,只在計(jì)算一個(gè)題目時(shí),將數(shù)據(jù)輸入計(jì)算機(jī),得到計(jì)算結(jié)果即可。1.1.2文件系統(tǒng)階段
20世紀(jì)50年代后期到20世紀(jì)60年代,計(jì)算機(jī)的硬件和軟件得到了飛速發(fā)展,計(jì)算機(jī)不再只用于科學(xué)計(jì)算這個(gè)單一任務(wù),還可以做一些非數(shù)值數(shù)據(jù)的處理。這時(shí)也有了大容量的磁盤(pán)等存儲(chǔ)設(shè)備,并且已經(jīng)有了專門(mén)管理數(shù)據(jù)的軟件,即文件系統(tǒng)。在文件系統(tǒng)中,按一定的規(guī)則將數(shù)據(jù)組織成為一個(gè)文件,應(yīng)用程序通過(guò)文件系統(tǒng)對(duì)文件中的數(shù)據(jù)進(jìn)行存取和加工。文件系統(tǒng)對(duì)數(shù)據(jù)的管理,實(shí)際上是通過(guò)應(yīng)用程序和數(shù)據(jù)之間的一種接口實(shí)現(xiàn)的,如圖1-2所示。圖1-2文件系統(tǒng)階段文件系統(tǒng)階段的數(shù)據(jù)管理技術(shù)具有如下特點(diǎn):
(1)數(shù)據(jù)管理由文件管理系統(tǒng)完成。文件管理系統(tǒng)解決了應(yīng)用程序和數(shù)據(jù)之間的一個(gè)公共接口問(wèn)題,使得應(yīng)用程序采用統(tǒng)一的存取方法來(lái)操作數(shù)據(jù)。同時(shí),應(yīng)用程序和數(shù)據(jù)之間不再是直接的對(duì)應(yīng)關(guān)系。
(2)數(shù)據(jù)共享性差,冗余度大。文件系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)沒(méi)有相應(yīng)的模型約束,數(shù)據(jù)冗余度較大。
(3)數(shù)據(jù)獨(dú)立性差。數(shù)據(jù)的存放依賴于應(yīng)用程序的使用方法,不同的應(yīng)用程序仍然很難共享同一數(shù)據(jù)文件,即數(shù)據(jù)獨(dú)立性較差。
(4)數(shù)據(jù)可長(zhǎng)期保存。數(shù)據(jù)可以以文件的方式存在,可保存較長(zhǎng)時(shí)間。1.1.3數(shù)據(jù)庫(kù)系統(tǒng)階段
20世紀(jì)60年代后期,計(jì)算機(jī)性能得到了很大提高,出現(xiàn)了大容量磁盤(pán)和存儲(chǔ)器,同時(shí)價(jià)格也急劇下降。人們克服了文件系統(tǒng)的不足,開(kāi)發(fā)出數(shù)據(jù)庫(kù)管理系統(tǒng),從而將傳統(tǒng)的數(shù)據(jù)管理技術(shù)推向一個(gè)新的階段,即數(shù)據(jù)庫(kù)系統(tǒng)階段。一般來(lái)說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)由計(jì)算機(jī)軟、硬件資源組成。通俗地講,數(shù)據(jù)庫(kù)系統(tǒng)可把日常一些表格、卡片等數(shù)據(jù)有組織地集合在一起,輸入到計(jì)算機(jī)中,然后通過(guò)計(jì)算機(jī)處理后,再按一定要求輸出結(jié)果。因此,對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),主要解決三個(gè)問(wèn)題:第一,有效地組織數(shù)據(jù);第二,方便地將數(shù)據(jù)輸入到計(jì)算機(jī)中;第三,根據(jù)用戶的要求將數(shù)據(jù)從計(jì)算機(jī)中抽取出來(lái)(這是人們處理數(shù)據(jù)的最終目的)。
在這一階段,應(yīng)用程序和數(shù)據(jù)庫(kù)之間產(chǎn)生了一個(gè)新的數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)軟件。應(yīng)用程序和數(shù)據(jù)庫(kù)的關(guān)系如圖1-3所示。圖1-3數(shù)據(jù)庫(kù)系統(tǒng)階段數(shù)據(jù)庫(kù)系統(tǒng)階段的數(shù)據(jù)管理技術(shù)具有如下特點(diǎn):
(1)數(shù)據(jù)結(jié)構(gòu)化。數(shù)據(jù)庫(kù)也是以文件方式存儲(chǔ)數(shù)據(jù)的,但是,它是數(shù)據(jù)的一種高級(jí)組織形式,對(duì)數(shù)據(jù)進(jìn)行合理設(shè)計(jì),以便計(jì)算機(jī)存取。
(2)數(shù)據(jù)共享程度高。數(shù)據(jù)庫(kù)管理系統(tǒng)把所有應(yīng)用程序中所使用的數(shù)據(jù)匯集在一起,并以記錄為單位存儲(chǔ)起來(lái),以便應(yīng)用程序查詢和使用。(3)數(shù)據(jù)獨(dú)立性強(qiáng)。數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的區(qū)別是:數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的存儲(chǔ)是按照同一結(jié)構(gòu)進(jìn)行的,不同的應(yīng)用程序都可以直接操作這些數(shù)據(jù)(即對(duì)應(yīng)用程序的高度獨(dú)立性)。
(4)數(shù)據(jù)冗余度小。數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)了有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問(wèn),數(shù)據(jù)冗余度小。
(5)加強(qiáng)對(duì)數(shù)據(jù)的保護(hù)。數(shù)據(jù)庫(kù)系統(tǒng)對(duì)數(shù)據(jù)的完整性、唯一性和安全性都提供了一套有效的管理手段(即數(shù)據(jù)的充分共享性)。1.2.1幾個(gè)基本概念
為了更好地理解數(shù)據(jù)庫(kù)管理系統(tǒng),下面先介紹一下信息、數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)系統(tǒng)這幾個(gè)概念。
1.信息與數(shù)據(jù)
1)信息
信息(Infomation)是對(duì)客觀事物的特征、運(yùn)動(dòng)形態(tài)以及事物間的相互聯(lián)系等多種要素的抽象反映。我們可以從兩個(gè)方面來(lái)理解信息。1.2數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)第一,信息是客觀事物固有的特征,比如一個(gè)學(xué)生有學(xué)號(hào)、姓名、出生日期和身高等信息。信息是客觀存在的,有些信息是人們能感受到的,有些信息則需要特殊的設(shè)備去檢測(cè)。第二,信息是一種資源,在信息社會(huì),信息已成為人類社會(huì)活動(dòng)的一種重要資源,它與能源、物質(zhì)并稱為人類社會(huì)活動(dòng)的三大要素。能源提供各種形式的動(dòng)力,物質(zhì)提供各種有用的材料,而信息可以為人類提供無(wú)窮的知識(shí)和智慧。2)數(shù)據(jù)
數(shù)據(jù)(Data)是描述事物的物理符號(hào)序列,可以是用來(lái)表示長(zhǎng)度、體積、重量之類的數(shù)字?jǐn)?shù)值,也可以是人名或地名、圖形、圖像、動(dòng)畫(huà)、影像、聲音等非數(shù)值數(shù)據(jù)。
2.數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)(DataBase,DB)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織的、可共享的數(shù)據(jù)集合。
數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性并且容易擴(kuò)展,可以為各種用戶所共享。3.數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)庫(kù)管理軟件,負(fù)責(zé)完成各種數(shù)據(jù)處理操作。典型的數(shù)據(jù)庫(kù)管理系統(tǒng)有MicrosoftSQLServer、MicrosoftOfficeAccess、MicrosoftFoxPro和Oracle、Sybase等。數(shù)據(jù)庫(kù)管理系統(tǒng)主要包括以下4個(gè)方面的功能:
(1)數(shù)據(jù)定義功能。數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL),通過(guò)它可以方便地對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象進(jìn)行定義。(2)數(shù)據(jù)操縱功能。數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,DML),通過(guò)它可以操縱數(shù)據(jù)以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作,如查詢、插入、刪除和修改等。
(3)數(shù)據(jù)庫(kù)的運(yùn)行管理。數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一控制和管理數(shù)據(jù)庫(kù)的運(yùn)行,保證了數(shù)據(jù)庫(kù)的安全性、完整性和共享性。
(4)數(shù)據(jù)庫(kù)的建立和維護(hù)。數(shù)據(jù)庫(kù)管理系統(tǒng)包括了數(shù)據(jù)庫(kù)初始數(shù)據(jù)的輸入、數(shù)據(jù)庫(kù)的恢復(fù)和數(shù)據(jù)庫(kù)的監(jiān)視等功能,這些功能通常由一些程序來(lái)完成。4.數(shù)據(jù)庫(kù)系統(tǒng)
數(shù)據(jù)庫(kù)系統(tǒng)(DataBaseSystem,DBS)是指擁有數(shù)據(jù)庫(kù)技術(shù)支持的計(jì)算機(jī)系統(tǒng)。它可以有組織地、動(dòng)態(tài)地存儲(chǔ)大量相關(guān)數(shù)據(jù),提供數(shù)據(jù)處理和信息資源共享服務(wù)。數(shù)據(jù)庫(kù)系統(tǒng)由計(jì)算機(jī)系統(tǒng)(硬件和基本軟件)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)和有關(guān)人員(數(shù)據(jù)庫(kù)管理員、應(yīng)用設(shè)計(jì)人員、最終用戶)組成。數(shù)據(jù)庫(kù)系統(tǒng)主要具有如下幾個(gè)特點(diǎn):
(1)數(shù)據(jù)結(jié)構(gòu)化。在傳統(tǒng)的文件系統(tǒng)中,盡管記錄內(nèi)容有了某些結(jié)構(gòu),但是記錄之間沒(méi)有聯(lián)系,而數(shù)據(jù)庫(kù)系統(tǒng)能實(shí)現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化,這是數(shù)據(jù)庫(kù)和文件系統(tǒng)的根本區(qū)別。例如,學(xué)生管理系統(tǒng)不僅包括學(xué)生的基本信息,還包括與其相關(guān)的選課管理和成績(jī)管理等。
(2)數(shù)據(jù)共享。數(shù)據(jù)共享允許多個(gè)用戶同時(shí)使用數(shù)據(jù),為多種程序設(shè)計(jì)語(yǔ)言提供編程接口。(3)數(shù)據(jù)獨(dú)立性。數(shù)據(jù)獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性。物理獨(dú)立性指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中的數(shù)據(jù)是相互獨(dú)立的,應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu),當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變時(shí),應(yīng)用程序不用改變。邏輯獨(dú)立性指用戶的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的,當(dāng)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變時(shí),應(yīng)用程序無(wú)需修改仍可繼續(xù)正常運(yùn)行。(4)減少了數(shù)據(jù)冗余。數(shù)據(jù)冗余指一種數(shù)據(jù)存在多個(gè)相同的副本。數(shù)據(jù)庫(kù)系統(tǒng)可以大大減少數(shù)據(jù)冗余,提高數(shù)據(jù)使用效率。
(5)保存數(shù)據(jù)一致性。數(shù)據(jù)的不一致性是指同一數(shù)據(jù)在不同存儲(chǔ)位置的值不一樣。數(shù)據(jù)庫(kù)中的數(shù)據(jù)只有一個(gè)物理備份,所以不存在數(shù)據(jù)不一致的問(wèn)題。
(6)數(shù)據(jù)安全性。數(shù)據(jù)庫(kù)系統(tǒng)可提供一系列有效的安全措施,阻止非法訪問(wèn)數(shù)據(jù),在數(shù)據(jù)被破壞時(shí)也可恢復(fù)。5.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)
數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)是為特定應(yīng)用開(kāi)發(fā)的數(shù)據(jù)庫(kù)應(yīng)用軟件。數(shù)據(jù)庫(kù)管理系統(tǒng)為數(shù)據(jù)的定義、存儲(chǔ)、查詢和修改提供支持,而數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)是對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行處理和加工的軟件,它面向特定應(yīng)用。1.2.2數(shù)據(jù)模型
1.數(shù)據(jù)模型的概念
數(shù)據(jù)(Data)是描述事物的符號(hào)記錄。模型(Model)是現(xiàn)實(shí)世界的抽象。數(shù)據(jù)模型(DataModel)是數(shù)據(jù)特征的抽象,是數(shù)據(jù)庫(kù)管理的教學(xué)形式框架。
數(shù)據(jù)模型描述的內(nèi)容包括三個(gè)部分:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。
(1)數(shù)據(jù)結(jié)構(gòu):主要描述數(shù)據(jù)的類型、內(nèi)容、性質(zhì)以及數(shù)據(jù)間的聯(lián)系等。數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)模型的基礎(chǔ),數(shù)據(jù)操作和約束都建立在數(shù)據(jù)結(jié)構(gòu)上。不同的數(shù)據(jù)結(jié)構(gòu)具有不同的操作和約束。(2)數(shù)據(jù)操作:操作算符的集合,包括若干操作和推理規(guī)則,用以對(duì)目標(biāo)類型的有效實(shí)例所組成的數(shù)據(jù)庫(kù)進(jìn)行操作。
(3)數(shù)據(jù)約束:完整性規(guī)則的集合,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化。約束條件可以按不同的原則劃分為數(shù)據(jù)值的約束和數(shù)據(jù)間聯(lián)系的約束,靜態(tài)約束和動(dòng)態(tài)約束,實(shí)體約束和實(shí)體間的參照約束等。數(shù)據(jù)模型按不同的應(yīng)用層次分成三種類型,分別是概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。
(1)概念數(shù)據(jù)模型(ConceptualDataModel):簡(jiǎn)稱概念模型,是面向數(shù)據(jù)庫(kù)用戶的實(shí)現(xiàn)世界的模型,主要用來(lái)描述世界的概念化結(jié)構(gòu),它使數(shù)據(jù)庫(kù)的設(shè)計(jì)人員在設(shè)計(jì)的初始階段擺脫計(jì)算機(jī)系統(tǒng)及DBMS的具體技術(shù)問(wèn)題,集中精力分析數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系等,與具體的數(shù)據(jù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)無(wú)關(guān)。概念數(shù)據(jù)模型必須換成邏輯數(shù)據(jù)模型才能在DBMS中實(shí)現(xiàn)。(2)邏輯數(shù)據(jù)模型(LogicalDataModel):簡(jiǎn)稱數(shù)據(jù)模型,這是用戶從數(shù)據(jù)庫(kù)中看到的模型,是具體的DBMS所支持的數(shù)據(jù)模型,如網(wǎng)狀數(shù)據(jù)模型(NetworkDataModel)、層次數(shù)據(jù)模型(HierarchicalDataModel)等。此模型既要面向用戶,又要面向系統(tǒng),主要用于數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的實(shí)現(xiàn)。
(3)物理數(shù)據(jù)模型(PhysicalDataModel):簡(jiǎn)稱物理模型,是面向計(jì)算機(jī)物理表示的模型,描述了數(shù)據(jù)在存儲(chǔ)介質(zhì)上的組織結(jié)構(gòu),它不但與具體的DBMS有關(guān),還與操作系統(tǒng)和硬件有關(guān)。每一種邏輯數(shù)據(jù)模型在實(shí)現(xiàn)時(shí)都有其對(duì)應(yīng)的物理數(shù)據(jù)模型。DBMS為了保證其獨(dú)立性與可移植性,大部分物理數(shù)據(jù)模型的實(shí)現(xiàn)工作由系統(tǒng)自動(dòng)完成,而設(shè)計(jì)者只設(shè)計(jì)索引、聚集等特殊結(jié)構(gòu)。在概念數(shù)據(jù)模型中最常用的是E-R模型、擴(kuò)充的E-R模型、面向?qū)ο竽P图爸^詞模型。在邏輯數(shù)據(jù)類型中最常用的是層次模型、網(wǎng)狀模型和關(guān)系模型。
2.四種常見(jiàn)的數(shù)據(jù)模型
下面分別介紹層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P?。其中,層次模型和網(wǎng)狀模型統(tǒng)稱為非關(guān)系模型。1)層次模型
層次模型(HierarchicalModle)是用樹(shù)狀結(jié)構(gòu)表示數(shù)據(jù)之間聯(lián)系的數(shù)據(jù)模型。樹(shù)是由節(jié)點(diǎn)和連線組成的,節(jié)點(diǎn)表示數(shù)據(jù),連線表示數(shù)據(jù)之間的聯(lián)系。層次模型滿足如下兩個(gè)條件:
(1)有且只有一個(gè)節(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn),該節(jié)點(diǎn)稱為根節(jié)點(diǎn)。
(2)其他節(jié)點(diǎn)有且僅有一個(gè)父節(jié)點(diǎn)。
層次模型可以直接表示一對(duì)一聯(lián)系和一對(duì)多聯(lián)系,但不能直接表示多對(duì)多聯(lián)系。如圖1-4所示的就是一個(gè)層次模型的例子。其中,D1為根節(jié)點(diǎn);D2和D3為兄弟節(jié)點(diǎn),是D1的子節(jié)點(diǎn);D4和D5為兄弟節(jié)點(diǎn),是D2的子節(jié)點(diǎn);D3、D4、D5為葉節(jié)點(diǎn)。圖1-4層次模型示例2)網(wǎng)狀模型
網(wǎng)狀模型(NetworkModel)是用網(wǎng)絡(luò)結(jié)構(gòu)表示數(shù)據(jù)之間聯(lián)系的數(shù)據(jù)模型,是層次模型的擴(kuò)展。網(wǎng)狀模型只需滿足下面任意一個(gè)條件:
(1)可以有任意多個(gè)節(jié)點(diǎn)而沒(méi)有父節(jié)點(diǎn)。
(2)一個(gè)節(jié)點(diǎn)允許有多個(gè)父節(jié)點(diǎn)。
(3)兩個(gè)節(jié)點(diǎn)之間可以有兩種或兩種以上的聯(lián)系。
網(wǎng)狀模型可以直接表示多對(duì)多聯(lián)系,但節(jié)點(diǎn)間的連線比較復(fù)雜,因而數(shù)據(jù)結(jié)構(gòu)也比較復(fù)雜。如圖1-5所示是一個(gè)網(wǎng)狀模型的例子。其中,D1和D2沒(méi)有父節(jié)點(diǎn),D3和D5有兩個(gè)父節(jié)點(diǎn),D2和D3之間有兩種聯(lián)系R1和R2。圖1-5網(wǎng)狀模型示例3)關(guān)系模型
關(guān)系模型(RalationalModel)是用關(guān)系來(lái)表示數(shù)據(jù)之間聯(lián)系的數(shù)據(jù)模型,關(guān)系是指由行與列構(gòu)成的二維表。MicrosoftSQLServer、MicrosoftAccess、MicrosoftFoxPro、Oracle、Sybase等都屬于關(guān)系模型數(shù)據(jù)庫(kù)管理系統(tǒng)。這部分內(nèi)容會(huì)在1.2.3節(jié)進(jìn)一步深入討論。
4)面向?qū)ο竽P?/p>
面向?qū)ο竽P?ObjectOrientalModel)是一種新興的數(shù)據(jù)模型,它采用面向?qū)ο蟮姆椒▉?lái)設(shè)計(jì)數(shù)據(jù)庫(kù)。面向?qū)ο竽P偷臄?shù)據(jù)庫(kù)存儲(chǔ)以對(duì)象為單位,每個(gè)對(duì)象包含對(duì)象的屬性和方法,具有類和繼承等特點(diǎn)。ComputerAssociates公司的Jasmine就是面向?qū)ο竽P偷臄?shù)據(jù)庫(kù)系統(tǒng)。在面向?qū)ο蟮臄?shù)據(jù)模型中,一個(gè)對(duì)象存取另一個(gè)對(duì)象的數(shù)據(jù)的唯一途徑是調(diào)用被存取對(duì)象的某個(gè)方法。對(duì)象方法的調(diào)用通過(guò)在對(duì)象之間傳送消息來(lái)實(shí)現(xiàn)。對(duì)象方法的調(diào)用接口是對(duì)外可見(jiàn)的。對(duì)象內(nèi)部的變量和程序編碼是封閉的、不可見(jiàn)的。面向?qū)ο蟮臄?shù)據(jù)模型實(shí)現(xiàn)了數(shù)據(jù)的獨(dú)立性。下面用一個(gè)例子來(lái)說(shuō)明這種獨(dú)立性。我們可以把銀行的賬戶作為一個(gè)對(duì)象,記做account。對(duì)象account具有兩個(gè)變量:一個(gè)是賬號(hào)變量number,另一個(gè)是存款余額變量balance。account具有一個(gè)方法pay_interest,負(fù)責(zé)計(jì)算每個(gè)賬戶的利息并增加到該賬戶的balance變量中。該銀行以往付給每個(gè)賬戶的利息都是8%?,F(xiàn)在,銀行調(diào)整利息如下:只有balance高于1000元的賬戶才能獲得8%的利息,其他賬戶只能獲得6%的利息。使用其他數(shù)據(jù)模型實(shí)現(xiàn)這種利息調(diào)整,必須修改有關(guān)的應(yīng)用程序;使用面向?qū)ο蟮臄?shù)據(jù)模型,則只需修改方法pay_interest就可以實(shí)現(xiàn)這種利息調(diào)整,不需要任何其他改變,更不需要修改應(yīng)用程序。1.2.3關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)是E.F.Cold在20世紀(jì)70年代提出的數(shù)據(jù)庫(kù)模型,自20世紀(jì)80年代以來(lái),新推出的數(shù)據(jù)庫(kù)管理系統(tǒng)幾乎都支持關(guān)系數(shù)據(jù)模型。MicrosoftOfficeAccess是一種典型的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。
1.關(guān)系模型中的相關(guān)術(shù)語(yǔ)
下面以“課程編號(hào)”表(參見(jiàn)表1-1)為例,介紹關(guān)系模型中的相關(guān)術(shù)語(yǔ)。
(1)關(guān)系。一個(gè)關(guān)系就是一個(gè)二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名稱,如表1-1所示的課程編號(hào)表。表1-1課程編號(hào)(2)實(shí)體??陀^存在并可相互區(qū)別的事物稱為實(shí)體。
(3)屬性。表(關(guān)系)中的列稱為屬性,每一列有一個(gè)屬性名,對(duì)應(yīng)數(shù)據(jù)表中的一個(gè)字段。
(4)域。一個(gè)屬性的取值范圍是該屬性的域。
(5)元組。表中的行稱為元組,每一行是一個(gè)元組,對(duì)應(yīng)數(shù)據(jù)表中的一個(gè)具體記錄,元組的各分量分別對(duì)應(yīng)于關(guān)系的各個(gè)屬性。
(6)候選碼。如果表中的某個(gè)屬性或?qū)傩越M能唯一地標(biāo)識(shí)一個(gè)元組,稱該屬性或?qū)傩越M為候選碼(候選關(guān)鍵字)。(7)主碼。若一個(gè)表中有多個(gè)候選碼,可以指定其中一個(gè)為主碼(主關(guān)鍵字)。
(8)外碼。如果表中的一個(gè)屬性(字段)不是本表的主碼或候選碼,而是另外一個(gè)表的主碼或候選碼,這個(gè)屬性(字段)稱為外碼(外部關(guān)鍵字)。
(9)關(guān)系模式。一個(gè)關(guān)系的關(guān)系名及其全部屬性名的集合簡(jiǎn)稱為關(guān)系模式,也就是對(duì)關(guān)系的描述,一般表示為“關(guān)系名(屬性名1,屬性名2,…,屬性名n)”,如“課程編號(hào)(課程編號(hào),課程名稱,課時(shí))”就是一個(gè)關(guān)系模型。
(10)聯(lián)系。實(shí)體集之間的對(duì)應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)聯(lián)。實(shí)體間的聯(lián)系按聯(lián)系方式可分為以下三種類型:一對(duì)一聯(lián)系(1∶1)、一對(duì)多聯(lián)系(1∶n)、多對(duì)多聯(lián)系(m∶n)。2.?E-R(Entity-Relationship)模型
實(shí)體-聯(lián)系模型(簡(jiǎn)稱E-R模型)是由P.P.Chen于1976年首先提出的,也稱為E-R圖。它提供不受任何DBMS約束的面向用戶的表達(dá)方法,在數(shù)據(jù)庫(kù)設(shè)計(jì)中被廣泛用作數(shù)據(jù)建模的工具。E-R數(shù)據(jù)模型問(wèn)世后,經(jīng)歷了許多修改和擴(kuò)充。
E-R模型的構(gòu)成成分是實(shí)體集、屬性和聯(lián)系集,其表示方法如下:
(1)實(shí)體集用矩形框表示,矩形框內(nèi)寫(xiě)上實(shí)體名。
(2)實(shí)體的屬性用橢圓框表示,框內(nèi)寫(xiě)上屬性名,并用無(wú)向邊與實(shí)體集相連。
(3)實(shí)體間的聯(lián)系用菱形框表示,聯(lián)系以適當(dāng)?shù)暮x命名,名字寫(xiě)在菱形框中,用無(wú)向連線將參加聯(lián)系的實(shí)體矩形框分別與菱形框相連,并在連線上標(biāo)明聯(lián)系的類型,即1-1(1對(duì)1)、1-M(1對(duì)多)或M-M(多對(duì)多)。3.關(guān)系模型的完整性
關(guān)系模型的完整性規(guī)則是對(duì)關(guān)系的某種約束條件。關(guān)系模型有四類完整性約束,即實(shí)體完整性、參照完整性、值域完整性和用戶定義完整性。
1)實(shí)體完整性
每個(gè)關(guān)系都有一個(gè)主關(guān)鍵字,每個(gè)元組主關(guān)鍵字的值應(yīng)是唯一的。主關(guān)鍵字的值不能為空,否則,無(wú)從識(shí)別元組,這就是實(shí)體完整性約束。2)參照完整性
在關(guān)系模型中,實(shí)體之間的聯(lián)系是用關(guān)系來(lái)描述的,因而存在關(guān)系與關(guān)系之間的引用。這種引用可通過(guò)外部關(guān)鍵字來(lái)實(shí)現(xiàn)。參照完整性規(guī)則是對(duì)關(guān)系外部關(guān)鍵字的規(guī)定,要求外部關(guān)鍵字取值必須是客觀存在的,即不允許在一個(gè)關(guān)系中引用另一個(gè)關(guān)系里不存在的元組。
3)值域完整性
值域完整性指數(shù)據(jù)表中的記錄的每個(gè)字段的值應(yīng)在允許的范圍內(nèi)。例如,可規(guī)定“學(xué)號(hào)”字段必須由數(shù)字組成,并且字段不能超過(guò)5個(gè)字符。
4)用戶定義完整性
由用戶根據(jù)實(shí)際情況,對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)所做的規(guī)定稱為用戶定義完整性規(guī)則,也稱為域完整性規(guī)則。通過(guò)這些規(guī)則限制數(shù)據(jù)庫(kù)只接受符合完整性約束條件的數(shù)據(jù)值,從而保證數(shù)據(jù)庫(kù)的數(shù)據(jù)合理可靠。4.關(guān)系模型的范式化
范式化是保持存儲(chǔ)數(shù)據(jù)完整性并且使冗余數(shù)據(jù)最少的結(jié)構(gòu)過(guò)程,規(guī)范化的數(shù)據(jù)庫(kù)即符合關(guān)系模型規(guī)則的數(shù)據(jù)庫(kù)。關(guān)系模型規(guī)則稱為范式。范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
1)第一范式
設(shè)R是一個(gè)關(guān)系模式,如果R中的每個(gè)屬性都是不可再分的最小數(shù)據(jù)項(xiàng),則稱R滿足第一范式或R是第一范式。第一范式滿足以下兩個(gè)條件:
(1)記錄的每個(gè)屬性只能包含一個(gè)值。
(2)關(guān)系中的每個(gè)記錄一定不能相同。
例如,學(xué)生(學(xué)號(hào),姓名,性別,系名,入學(xué)時(shí)間,家庭成員)不滿足第一范式,因?yàn)榧彝コ蓡T屬性可以再分解,可將“學(xué)生”分解為學(xué)生(學(xué)號(hào),姓名,性別,系名,入學(xué)時(shí)間)和家庭(學(xué)號(hào),家庭成員,親屬關(guān)系)。2)第二范式
如果關(guān)系模式R是第一范式,且所有非主屬性都完全依賴于其主關(guān)鍵字,則稱R是第二范式。
如表1-1中,“課程名稱”、“課時(shí)”依賴于“課程編號(hào)”屬性,因此“課程編碼”關(guān)系是第二范式。
3)第三范式
假設(shè)關(guān)系中有A、B、C三個(gè)屬性,傳遞依賴是指關(guān)系中B屬性依賴于主關(guān)鍵字段A,而C屬性依賴于B屬性,稱字段C傳遞依賴于A。如果關(guān)系模式R是第二范式,且所有非主屬性對(duì)任何主關(guān)鍵字都不存在傳遞依賴,則稱R滿足第三范式或R是第三范式。
如表1-2所示,候選鍵是“教師編號(hào)”屬性,“系別編號(hào)”、“課程編號(hào)”、“工作時(shí)間”、“學(xué)歷”、“職稱”都依賴該候選鍵,并且相互之間無(wú)關(guān),其屬于第三范式。表1-2教師表利用關(guān)系范式實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)的規(guī)范化,可減少數(shù)據(jù)冗余,節(jié)省存儲(chǔ)空間,避免數(shù)據(jù)不一致性,提高對(duì)關(guān)系的操作效率,同時(shí)滿足應(yīng)用需求。在實(shí)際應(yīng)用中,并不一定要求全部模式都達(dá)到第三范式。有時(shí)故意保留部分冗余可能會(huì)更方便數(shù)據(jù)查詢,尤其對(duì)于那些更新頻度不高,查詢頻度極高的數(shù)據(jù)庫(kù)系統(tǒng)更是如此。
5.?E-R模型與關(guān)系模型的轉(zhuǎn)化
E-R模型是數(shù)據(jù)庫(kù)的一種概念模型,關(guān)系數(shù)據(jù)庫(kù)采用的模型是關(guān)系模型,因此,必須將E-R模型轉(zhuǎn)化為關(guān)系模型。根據(jù)E-R模型中實(shí)體之間的聯(lián)系,將E-R模型轉(zhuǎn)化為關(guān)系模型的方法如下。1)一對(duì)一(1∶1)聯(lián)系的轉(zhuǎn)換
轉(zhuǎn)換方法:將聯(lián)系與任意一端實(shí)體所對(duì)應(yīng)的關(guān)系模式合并,在關(guān)系模式的屬性中加入另一個(gè)實(shí)體的主碼和聯(lián)系本身的屬性。
【例1-1】在人事管理系統(tǒng)中,“部門(mén)經(jīng)理”實(shí)體和“部門(mén)”實(shí)體之間的任職聯(lián)系是一對(duì)一的聯(lián)系,其E-R模型如圖1-6所示,請(qǐng)將其E-R模型轉(zhuǎn)換為關(guān)系模型。圖1-6部門(mén)-經(jīng)理E-R模型轉(zhuǎn)換方法:該E-R模型有兩個(gè)實(shí)體,即“部門(mén)”實(shí)體和“部門(mén)經(jīng)理”實(shí)體,且它們是1∶1的聯(lián)系。因此,將聯(lián)系合并到“部門(mén)”實(shí)體或“部門(mén)經(jīng)理”實(shí)體中,并將聯(lián)系本身的屬性和另一個(gè)實(shí)體的主碼作為屬性放入合并的實(shí)體中,以下兩種方法均可:
(1)將“任職”聯(lián)系合并到“部門(mén)”實(shí)體中。
部門(mén)(部門(mén)經(jīng)理,部門(mén)名稱,經(jīng)理編號(hào),聘任時(shí)間,任期)
經(jīng)理(經(jīng)理編號(hào),經(jīng)理姓名)(2)將聯(lián)系合并到“部門(mén)經(jīng)理”實(shí)體中。
部門(mén)(部門(mén)編號(hào),部門(mén)名稱)
經(jīng)理(經(jīng)理編號(hào),經(jīng)理姓名,部門(mén)編號(hào),聘任時(shí)間,任期)
2)一對(duì)多(1∶n)聯(lián)系的轉(zhuǎn)換
轉(zhuǎn)換方法:將該聯(lián)系與n端實(shí)體所對(duì)應(yīng)的關(guān)系模式合并。合并時(shí)需要在n端實(shí)體的關(guān)系模式的屬性中加入1端實(shí)體的主碼和聯(lián)系本身的屬性。
【例1-2】請(qǐng)將圖1-7中的E-R模型轉(zhuǎn)換為關(guān)系模型。圖1-7部門(mén)-員工E-R模型轉(zhuǎn)換方法:該E-R模型有兩個(gè)實(shí)體,即“部門(mén)”實(shí)體和“員工”實(shí)體,且它們是1∶n的聯(lián)系。因此,將“隸屬”聯(lián)系并到n端的“員工”實(shí)體中,并將聯(lián)系本身的屬性和“部門(mén)”實(shí)體的主碼“部門(mén)編號(hào)”作為屬性放入“員工”實(shí)體中。
部門(mén)(部門(mén)編號(hào),部門(mén)名稱)
員工(員工編號(hào),姓名,性別,部門(mén)編號(hào))3)多對(duì)多(m∶n)聯(lián)系的轉(zhuǎn)換
轉(zhuǎn)換方法:將一個(gè)多對(duì)多的聯(lián)系轉(zhuǎn)換為多個(gè)一對(duì)多的聯(lián)系,再使用前面介紹的方法轉(zhuǎn)換。
通過(guò)上面介紹的E-R模型轉(zhuǎn)換為關(guān)系模型的三種方法,可將通用的概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫(kù)中的物理模型,但得到的關(guān)系模型不一定是最優(yōu)的。在實(shí)際應(yīng)用中,還需要根據(jù)應(yīng)用需要,對(duì)得到的關(guān)系模型進(jìn)行調(diào)整和優(yōu)化。6.關(guān)系運(yùn)算
早期的關(guān)系操作有兩種表示方式:關(guān)系代數(shù)與關(guān)系演算。理論上,關(guān)系代數(shù)和關(guān)系演算被證明是完全等價(jià)的。關(guān)系代數(shù)通過(guò)對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢,其操作對(duì)象是關(guān)系,操作結(jié)果亦為關(guān)系。
傳統(tǒng)的集合操作包括并、交、差、廣義笛卡兒積等。這類操作將關(guān)系看做元組的集。其操作是從關(guān)系的水平方向(即關(guān)系的行)來(lái)進(jìn)行的。設(shè)關(guān)系R和關(guān)系S具有相同數(shù)目的屬性列(n列屬性),并且相應(yīng)的屬性取自同一個(gè)域,則可定義以下四種集合運(yùn)算:
并(Union):關(guān)系R與關(guān)系S的并,它是屬于R或?qū)儆赟的元組組成的集合,結(jié)果為n列屬性的關(guān)系。
交(Intersection):關(guān)系R與關(guān)系S的交,它是既屬于R又屬于S的元組組成的集合,結(jié)果為n列屬性的關(guān)系。
差(Difference):關(guān)系R與關(guān)系S的差,它是屬于R而不屬于S的元組組成的集合,結(jié)果為n列屬性的關(guān)系。廣義笛卡兒積(ExtendedCartesianProduct):關(guān)系R(假設(shè)為n列)和關(guān)系S(假設(shè)為m列)的廣義笛卡兒積是一個(gè)(n+m)列元組的集合,每一個(gè)元組的前n列是來(lái)自關(guān)系R的一個(gè)元組,后m列是來(lái)自關(guān)系S的一個(gè)元組。若R有K1個(gè)元組,S有K2個(gè)元組,則關(guān)系R和關(guān)系S的廣義笛卡兒積有K1×K2個(gè)元組。
以傳統(tǒng)的集合操作為依據(jù),數(shù)據(jù)庫(kù)關(guān)系運(yùn)算主要包括選擇(Select)、投影(Project)、連接(Join)、自然連接(NatureJoin)。
1)選擇
選擇運(yùn)算是在關(guān)系中選擇滿足某些條件的元組。也就是說(shuō),選擇運(yùn)算是在二維表中選擇滿足指定條件的行。示例如圖1-8所示。圖1-8選擇運(yùn)算2)投影
投影運(yùn)算是從關(guān)系模式中指定若干個(gè)屬性組成新的關(guān)系,即在關(guān)系中選擇某些屬性列。示例如圖1-9所示。
3)連接
連接運(yùn)算將兩個(gè)關(guān)系模式通過(guò)公共的屬性名拼接成一個(gè)更寬的關(guān)系模式,生成的新關(guān)系中包含滿足連接條件的元組。示例如圖1-10所示。
4)自然連接
在連接運(yùn)算中,按字段值相等的連接稱為等值連接,去掉重復(fù)值的連接稱為自然連接。示例如圖1-11所示。圖1-9投影運(yùn)算圖1-10連接運(yùn)算圖1-11自然連接運(yùn)算1.3.1數(shù)據(jù)庫(kù)設(shè)計(jì)的兩個(gè)方面
數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)是在DBMS的支持下,按照應(yīng)用系統(tǒng)的要求,設(shè)計(jì)一個(gè)結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫(kù)系統(tǒng)。
數(shù)據(jù)庫(kù)設(shè)計(jì)涉及兩方面:數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)的行為設(shè)計(jì)。在設(shè)計(jì)數(shù)據(jù)庫(kù)的過(guò)程中,應(yīng)將結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)相結(jié)合。1.3數(shù)?據(jù)?庫(kù)?設(shè)?計(jì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)是從應(yīng)用的數(shù)據(jù)結(jié)構(gòu)角度對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)。由于數(shù)據(jù)的結(jié)構(gòu)是靜態(tài)的,因此數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)又稱為數(shù)據(jù)庫(kù)的靜態(tài)結(jié)構(gòu)設(shè)計(jì)。其設(shè)計(jì)過(guò)程是:先將現(xiàn)實(shí)世界中的事物、事物之間的聯(lián)系用E-R圖表示,再將各E-R圖匯總,得出數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)模型,再將概念結(jié)構(gòu)模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫(kù)的關(guān)系結(jié)構(gòu)模型。
數(shù)據(jù)庫(kù)的行為設(shè)計(jì)指根據(jù)應(yīng)用系統(tǒng)用戶的行為對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì),是指數(shù)據(jù)查詢、統(tǒng)計(jì)、事物處理等。由于用戶的行為是動(dòng)態(tài)的,因此數(shù)據(jù)庫(kù)的行為設(shè)計(jì)又稱為數(shù)據(jù)庫(kù)的動(dòng)態(tài)設(shè)計(jì)。其設(shè)計(jì)過(guò)程是:首先將現(xiàn)實(shí)世界中的數(shù)據(jù)及應(yīng)用情況用數(shù)據(jù)流圖和數(shù)據(jù)字典表示,并描述用戶的數(shù)據(jù)操作要求,從而得出系統(tǒng)的功能結(jié)構(gòu)和數(shù)據(jù)庫(kù)結(jié)構(gòu)。
數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)的行為設(shè)計(jì)將貫穿數(shù)據(jù)庫(kù)設(shè)計(jì)的每一步。1.3.2數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟
數(shù)據(jù)庫(kù)設(shè)計(jì)可分為6個(gè)階段:需求分析階段、概要設(shè)計(jì)階段、詳細(xì)設(shè)計(jì)階段、編碼階段、測(cè)試階段、安裝及維護(hù)階段。各個(gè)階段的主要任務(wù)如下。
1.需求分析階段
需求分析階段的主要任務(wù)是:通過(guò)與數(shù)據(jù)庫(kù)的最終用戶交流,了解和掌握數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)對(duì)象(也稱為用戶,指待使用數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的部門(mén))的工作流程和每個(gè)崗位、每個(gè)環(huán)節(jié)的職責(zé),了解和掌握信息從開(kāi)始產(chǎn)生或建立,到最后輸出、存檔或消亡所經(jīng)過(guò)的傳遞和轉(zhuǎn)換過(guò)程,了解和掌握各種人員在整個(gè)系統(tǒng)活動(dòng)過(guò)程中的作用。為了實(shí)現(xiàn)設(shè)計(jì)目標(biāo),首先要進(jìn)行下述準(zhǔn)備工作:
(1)確定哪些工作應(yīng)由計(jì)算機(jī)來(lái)做,哪些工作仍由手工來(lái)做。
(2)掌握各種人員對(duì)信息和處理各有什么要求。
(3)了解對(duì)操作界面和報(bào)表輸出格式各有什么要求,對(duì)信息的安全性、完整性有什么要求。
(4)了解用戶希望從數(shù)據(jù)庫(kù)中得到什么樣的信息。
(5)集體討論數(shù)據(jù)庫(kù)所要解決的問(wèn)題,并描述數(shù)據(jù)庫(kù)需要生成的報(bào)表。
(6)收集當(dāng)前用于記錄數(shù)據(jù)的表格。
(7)參考某個(gè)與當(dāng)前要設(shè)計(jì)的數(shù)據(jù)庫(kù)相似的典型案例。通過(guò)進(jìn)行系統(tǒng)調(diào)查和分析,搜集足夠的數(shù)據(jù)庫(kù)設(shè)計(jì)的依據(jù)。接著完成如下工作:畫(huà)出數(shù)據(jù)流圖,建立數(shù)據(jù)字典和編寫(xiě)需求說(shuō)明書(shū)。
(1)畫(huà)出數(shù)據(jù)流圖。數(shù)據(jù)流圖(DataFlowDiagram,DFD)是描述實(shí)際業(yè)務(wù)管理系統(tǒng)工作流程的一種圖形表示。數(shù)據(jù)流圖使用帶箭頭的連線表示數(shù)據(jù)的流動(dòng)方向或者表示前者(即不帶箭頭的一端)對(duì)后者(即箭頭所指向的一端)的使用,用圓圈表示進(jìn)行信息處理的一個(gè)環(huán)節(jié),用雙線段或開(kāi)口矩形表示存檔文件或?qū)嵨铮镁匦伪硎緟⑴c活動(dòng)的人員或部門(mén)。通過(guò)下發(fā)給教職員工的工資數(shù)據(jù)流動(dòng)情況,可以設(shè)計(jì)出工資管理系統(tǒng)的數(shù)據(jù)流圖,如圖1-12所示。圖1-13所示為工資管理的業(yè)務(wù)處理流程圖。圖1-12工資管理系統(tǒng)的數(shù)據(jù)流圖圖1-13工資管理的業(yè)務(wù)處理流程圖(2)建立數(shù)據(jù)字典。數(shù)據(jù)字典(DataDictionary)是對(duì)系統(tǒng)流程中數(shù)據(jù)和處理的描述。在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)中,它是最原始的數(shù)據(jù)字典,以后在概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)中的數(shù)據(jù)字典都由它依次變換和修改而得到。
例如,對(duì)教職工工資管理系統(tǒng)進(jìn)行分析,可得出工資款項(xiàng)的定義:工資款項(xiàng)即進(jìn)行工資核算所需要的各個(gè)數(shù)據(jù)項(xiàng),包括工資條上計(jì)算應(yīng)發(fā)工資、實(shí)發(fā)工資所需要的各項(xiàng)數(shù)據(jù),如姓名、固定工資、績(jī)效工資、生活補(bǔ)貼等。工資款項(xiàng)的定義就是建立教職工工資核算所需的各項(xiàng)數(shù)據(jù)。根據(jù)工資款項(xiàng)的不同屬性,工資款項(xiàng)可分為:
①相對(duì)固定數(shù)據(jù)項(xiàng),如職工編號(hào)、姓名、參加工作時(shí)間、固定工資、生活補(bǔ)貼等。
②變動(dòng)原始數(shù)據(jù)項(xiàng),如出勤天數(shù)、病假天數(shù)等。
③變動(dòng)基礎(chǔ)數(shù)據(jù)項(xiàng),如病、事假扣款等。
④計(jì)算所得數(shù)據(jù)項(xiàng),如應(yīng)發(fā)工資、實(shí)發(fā)工資等。(3)編寫(xiě)需求說(shuō)明書(shū)。需求說(shuō)明書(shū)就是系統(tǒng)總體設(shè)計(jì)方案,它包括數(shù)據(jù)流圖和數(shù)據(jù)字典;包括系統(tǒng)設(shè)計(jì)總體目標(biāo),系統(tǒng)適宜采用的計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)及相應(yīng)配置情況;包括系統(tǒng)開(kāi)發(fā)人員組成、開(kāi)發(fā)費(fèi)用和時(shí)間;包括劃分系統(tǒng)邊界,即哪些數(shù)據(jù)和處理由計(jì)算機(jī)完成,哪些數(shù)據(jù)和處理仍由人工完成;包括對(duì)用戶使用系統(tǒng)的要求等許多方面的詳細(xì)內(nèi)容。需求說(shuō)明書(shū)是開(kāi)發(fā)單位與用戶共同協(xié)商達(dá)成的文檔,一般要經(jīng)過(guò)有關(guān)方面的專家進(jìn)行評(píng)審和通過(guò)。它是以后各階段進(jìn)行開(kāi)發(fā)、設(shè)計(jì)的主要依據(jù),也是最終進(jìn)行系統(tǒng)測(cè)試的依據(jù)。通過(guò)相關(guān)需求分析可知,工資管理系統(tǒng)應(yīng)具有以下功能:
●錄入工資結(jié)算單中各工資數(shù)據(jù)項(xiàng)的原始數(shù)據(jù),據(jù)此進(jìn)行應(yīng)發(fā)工資、代扣款項(xiàng)、實(shí)發(fā)工資數(shù)的計(jì)算,能對(duì)來(lái)自人事部門(mén)的人員變動(dòng)數(shù)據(jù)進(jìn)行相應(yīng)的人員變動(dòng)數(shù)據(jù)處理,打印工資結(jié)算單。
●根據(jù)結(jié)算單,按部門(mén)、班組、人員類別、費(fèi)用科目進(jìn)行分類匯總,打印分類匯總表。
●根據(jù)工資匯總表進(jìn)行工資費(fèi)用的分配、福利費(fèi)的計(jì)提,打印工資費(fèi)用計(jì)提、分配表。
●根據(jù)工資匯總表中代扣款項(xiàng)(如個(gè)人所得稅代扣計(jì)算)的有關(guān)數(shù)據(jù)進(jìn)行匯總,將匯總結(jié)果存入銀行或轉(zhuǎn)入其他有關(guān)部門(mén)。
●提供工資數(shù)據(jù)的查詢功能。2.概要設(shè)計(jì)階段
這個(gè)階段是將需求分析階段的結(jié)果模塊化,并把本系統(tǒng)的數(shù)據(jù)流向等關(guān)系搞明白。最好畫(huà)出程序的流程圖,把整個(gè)項(xiàng)目的框架設(shè)計(jì)出來(lái),如圖1-13畫(huà)出了工資管理的業(yè)務(wù)處理流程圖。另外,還要考慮需要哪些功能模塊,每個(gè)模塊大體需要完成哪些功能,以及它們之間有什么關(guān)系,等等,如圖1-14所示。圖1-14工資管理系統(tǒng)模塊3.詳細(xì)設(shè)計(jì)階段
這個(gè)階段是在系統(tǒng)模塊化的基礎(chǔ)上,把系統(tǒng)的功能具體化,逐步完善系統(tǒng)的功能需求。這個(gè)階段要為具體的設(shè)計(jì)打好基礎(chǔ)。
數(shù)據(jù)庫(kù)設(shè)計(jì)在每一個(gè)具體階段的后期都要經(jīng)過(guò)用戶確認(rèn)。如果不能滿足要求,則要返回到前面一個(gè)或幾個(gè)階段進(jìn)行調(diào)整和修改。整個(gè)設(shè)計(jì)過(guò)程實(shí)際上是一個(gè)不斷返回修改、調(diào)整的迭代過(guò)程。
4.編碼階段
該階段主要是根據(jù)詳細(xì)設(shè)計(jì)的結(jié)果把原始數(shù)據(jù)裝入數(shù)據(jù)庫(kù),建立一個(gè)具體的數(shù)據(jù)庫(kù)并編寫(xiě)和調(diào)試相應(yīng)的應(yīng)用程序。應(yīng)用程序的開(kāi)發(fā)目標(biāo)是開(kāi)發(fā)一個(gè)可依賴的有效的數(shù)據(jù)庫(kù)存取程序,來(lái)滿足用戶的處理要求。1)規(guī)劃數(shù)據(jù)庫(kù)中的表
表是數(shù)據(jù)庫(kù)的基本信息結(jié)構(gòu)。確定表可能是數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中最難處理的步驟,因?yàn)橐獜臄?shù)據(jù)庫(kù)獲得的結(jié)果(如要打印的報(bào)表,要使用的格式,要解決的問(wèn)題等)不一定能夠提供用于生成它們的表的結(jié)構(gòu)的線索。
在設(shè)計(jì)表時(shí),應(yīng)按以下設(shè)計(jì)原則對(duì)信息進(jìn)行分類:
(1)表中不應(yīng)該包含重復(fù)信息,而且信息不應(yīng)該在表之間復(fù)制。如果每條信息只保存在一個(gè)表中,則只需在一處進(jìn)行更新,這樣效率更高,同時(shí)也消除了包含不同信息的重復(fù)項(xiàng)的可能性。例如,在一個(gè)表中,對(duì)每個(gè)教職工的職工編號(hào)、姓名等只保存一次。(2)每個(gè)表應(yīng)該只包含關(guān)于一個(gè)主題的信息。如果每個(gè)表只包含關(guān)于一個(gè)主題的事件,則可以獨(dú)立于其他主題來(lái)維護(hù)每個(gè)主題的信息。例如,將教職工的基本信息與考勤信息存放在不同的表中,這樣就可以在刪除某條考勤記錄后仍然保留教職工的信息。
通過(guò)上述分析,在“教職工工資管理系統(tǒng)”中我們?cè)O(shè)計(jì)如下幾張表:教職工基本信息表、部門(mén)表、考勤表、績(jī)效工資、工資表。2)確定表中的字段
每個(gè)表中都包含關(guān)于同一主題的信息,表中的每個(gè)字段則包含關(guān)于該主題的各個(gè)事件。例如,教職工基本信息表中包含的字段有職工編號(hào)、姓名、性別、出生年月、參加工作時(shí)間、學(xué)歷、職稱、聯(lián)系電話、郵箱地址、籍貫、部門(mén)編號(hào);部門(mén)表中包含的字段有部門(mén)編號(hào)、部門(mén)名稱、負(fù)責(zé)人;考勤表中包含的字段有職工編號(hào)、出勤天數(shù)、加班時(shí)間、遲到次數(shù)、早退次數(shù)、曠工次數(shù)、事假次數(shù)、病假次數(shù);績(jī)效工資中包含的字段有職工編號(hào)、加班費(fèi)、獎(jiǎng)金、津貼、考勤扣除金額;工資表中包含的字段有職工編號(hào)、姓名、固定工資、生活補(bǔ)貼、應(yīng)發(fā)工資、水電費(fèi)、公積金、稅收、實(shí)發(fā)工資。在草擬每個(gè)表的字段時(shí),要注意以下問(wèn)題:
(1)每個(gè)字段都直接與表的主題相關(guān)。
(2)不包含推導(dǎo)或計(jì)算的數(shù)據(jù),如表達(dá)式的計(jì)算結(jié)果。
(3)包含所需的所有信息。
(4)以最小的邏輯部分保存信息。例如,對(duì)英文姓名應(yīng)該將姓和名分開(kāi)保存。3)確定表之間的關(guān)系
首先要明確主碼與外碼。主碼能唯一識(shí)別表中的每一條記錄,為確保主碼字段的唯一性,Access避免任何重復(fù)值或Null值進(jìn)入主碼字段。在Access中可以定義三種主碼:自動(dòng)編號(hào)、單字段和多字段。表之間的關(guān)聯(lián)依靠外碼來(lái)維系,設(shè)計(jì)的表結(jié)構(gòu)合理,不僅可以存儲(chǔ)所需要的實(shí)體信息,而且可以反映實(shí)體之間
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)生黨課課件教學(xué)課件
- 神經(jīng)內(nèi)科電場(chǎng)治療方案
- 新人入職培訓(xùn)規(guī)章制度
- 糖尿病傷口處理
- 眼耳鼻喉科護(hù)理查房
- 老年病科科普講解大賽
- 博物館奇案教案反思
- 化學(xué)肥料說(shuō)課稿
- 好玩的竹梯說(shuō)課稿
- 過(guò)秦論的說(shuō)課稿
- 小學(xué)音樂(lè)課堂中開(kāi)展紅色歌曲教學(xué)的幾點(diǎn)思考
- 學(xué)校財(cái)務(wù)處理程序制度
- 塔里木河流域胡楊林生態(tài)恢復(fù)成效評(píng)估
- 環(huán)境保護(hù)Theenvironmentalprotection英語(yǔ)演講課件
- 2023年事故序列模型介紹
- 兒童免疫性疾病課件
- 行為金融學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 中圖版八年級(jí)地理上冊(cè)《世界氣候》復(fù)習(xí)課件
- 家族財(cái)富傳承法商
- 無(wú)損檢測(cè)通用作業(yè)指導(dǎo)書(shū)
- 2023年中考語(yǔ)文復(fù)習(xí):150個(gè)文言實(shí)詞-課件(共183張PPT)
評(píng)論
0/150
提交評(píng)論