版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章數(shù)據(jù)庫系統(tǒng)概論1.1數(shù)據(jù)庫系統(tǒng)應(yīng)用
1.2數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)
1.3數(shù)據(jù)視圖
1.4數(shù)據(jù)模型簡介1.5數(shù)據(jù)庫語言1.6數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)1.7數(shù)據(jù)庫管理系統(tǒng)
1.8數(shù)據(jù)庫系統(tǒng)習(xí)題1.1數(shù)據(jù)庫系統(tǒng)應(yīng)用數(shù)據(jù)庫技術(shù)是一門既傳統(tǒng)而又年輕的計(jì)算機(jī)科學(xué)技術(shù),說其傳統(tǒng)是因?yàn)樗呀?jīng)有幾十年的發(fā)展歷史,說其年輕是因?yàn)镮nternet時代賦予其新的使命和新的要求。數(shù)據(jù)庫系統(tǒng)是存儲、管理和提供數(shù)據(jù)服務(wù)的系統(tǒng),它以一種簡單、規(guī)范、便捷的方式存儲管理數(shù)據(jù)。數(shù)據(jù)庫的應(yīng)用領(lǐng)域非常廣泛,它已經(jīng)成為當(dāng)今企業(yè)信息建設(shè)的重要組成部分。其典型的應(yīng)用領(lǐng)域如下:
(1)金融業(yè):用于存儲管理債券、股票等金融票據(jù)的持有、銷售信息等等。
(2)銷售業(yè):存儲管理客戶、產(chǎn)品、銷售、供應(yīng)等信息。
(3)制造業(yè):用于管理供應(yīng)鏈,追蹤產(chǎn)品的產(chǎn)量、庫存及客戶的訂單信息。
(4)大學(xué):存儲管理學(xué)生的信息、課程及成績,圖書管理信息等。
(5)航空業(yè):用于存儲訂票和航班的信息。航空業(yè)是最早使用地理上分布的方式應(yīng)用數(shù)據(jù)庫的行業(yè)之一,通過各個終端或其他數(shù)據(jù)網(wǎng)絡(luò)來訪問中央數(shù)據(jù)庫系統(tǒng)。
(6)電信業(yè):用于存儲管理通話記錄,生成賬單報(bào)表,維護(hù)預(yù)付電話卡余額信息等。從20世紀(jì)60年代開始,數(shù)據(jù)庫逐步進(jìn)入社會應(yīng)用的各個領(lǐng)域。早期的人們很少直接與數(shù)據(jù)庫打交道,但是通過月底的工資表、銀行的賬單卻間接地與數(shù)據(jù)庫打交道。后來隨著數(shù)據(jù)庫應(yīng)用范圍的進(jìn)一步擴(kuò)大,人們開始直接和數(shù)據(jù)庫進(jìn)行交互。比如用戶通過瀏覽器查詢航班數(shù)據(jù)庫、了解航班的起降時間和票價;學(xué)生通過校園網(wǎng)絡(luò)查詢課程數(shù)據(jù)庫,確定新學(xué)期的選課情況。大多數(shù)信息系統(tǒng)提供了友好的應(yīng)用界面,它隱藏了數(shù)據(jù)庫的內(nèi)部細(xì)節(jié),使得大多數(shù)用戶沒有意識到自己正在和數(shù)據(jù)庫打交道。今天,訪問數(shù)據(jù)庫已經(jīng)成為人們生活中最基本的組成部分。1.2數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)對大量數(shù)據(jù)的管理最初是采用文件管理方式,即將成批數(shù)據(jù)單獨(dú)組織成文件存儲在外部存儲設(shè)備上。假設(shè)銀行儲蓄系統(tǒng)要保存所有客戶和儲蓄賬戶的信息,在沒有出現(xiàn)數(shù)據(jù)庫系統(tǒng)前保存信息常用的方法就是將它們保存為操作系統(tǒng)中的文件。為了便于用戶對這些客戶信息進(jìn)行操作,系統(tǒng)程序員必然根據(jù)用戶的需求設(shè)計(jì)一系列的文件操作程序,包括處理賬戶存款、貸款的程序;創(chuàng)建新賬戶、注銷賬戶的程序;查詢賬戶余額的程序以及打印報(bào)表的程序等。但是用戶的需求是變化的,比如系統(tǒng)要求增加支票類型的賬戶。除了要增加新的文件來保存支票賬戶,還要修改程序或增加新的應(yīng)用程序。比如儲蓄賬戶不存在的透支問題出現(xiàn)在支票賬戶中了,必須增加新程序來解決需求的變化。這導(dǎo)致更多的數(shù)據(jù)文件和處理數(shù)據(jù)的程序增加到系統(tǒng)中。這個應(yīng)用實(shí)例是典型的文件處理系統(tǒng),該系統(tǒng)由傳統(tǒng)的操作系統(tǒng)支持,信息存儲到不同文件中,通過不同的應(yīng)用程序?qū)⑿畔倪m當(dāng)文件中取出或放回適當(dāng)文件中。文件系統(tǒng)存在許多弊端:
(1)數(shù)據(jù)冗余和不一致。銀行系統(tǒng)的軟件要運(yùn)行很長時間,在這個過程中需求會發(fā)生變化,程序開發(fā)人員也會有調(diào)整。因此不同的數(shù)據(jù)可能采用不同的文件格式保存,使用不同的程序存取必然導(dǎo)致相同的信息可能在多個文件中重復(fù)存儲。例如,客戶的個人信息既出現(xiàn)在儲蓄賬戶文件中又出現(xiàn)在支票賬戶文件中。這種信息冗余不僅導(dǎo)致了存儲和訪問工作開銷增大,還可能出現(xiàn)數(shù)據(jù)不一致性。比如工作人員在儲蓄賬戶記錄中修改了某客戶的地址而沒有修改支票賬戶的內(nèi)容。
(2)數(shù)據(jù)孤立。?在文件系統(tǒng)中由于信息保存在不同的文件中,因此很難看到全局的信息,比如銀行的高級管理人員想了解當(dāng)前所有的儲蓄賬戶和支票賬戶的轉(zhuǎn)賬情況,應(yīng)用程序員也很難編寫檢索這類多種文件格式的新程序。
(3)數(shù)據(jù)訪問困難。如果銀行管理人員想查詢某一地區(qū)開戶人員中小于30歲的儲蓄賬戶的信息,而這種新的查詢?nèi)蝿?wù)以前從來沒有過。因此只能有兩種辦法解決,一種辦法是這個管理員在所有客戶的巨大列表中努力尋找,這是個繁雜、易錯的過程;另一種辦法是要求數(shù)據(jù)處理部門編寫新的應(yīng)用程序來解決,這需要一定的等待時間。這兩個方案都令人失望。如果幾天后,這個管理人員需要儲蓄賬戶和支票賬戶的信息,查詢條件不改變,則上述問題又再次出現(xiàn)。
(4)完整性問題。文件中保存的數(shù)據(jù)必須滿足某些特定的一致性約束。比如銀行新增賬戶時要提供身份證號碼,應(yīng)用程序中增加相應(yīng)的代碼來保證信息的約束。當(dāng)沒有身份證的客戶開戶時將給予提示。如果加入新的約束時,必須修改應(yīng)用程序,當(dāng)涉及多個不同文件時,這種修改過程是個噩夢。
(5)原子性問題。計(jì)算機(jī)系統(tǒng)如同其他的系統(tǒng)一樣可能出現(xiàn)故障。例如客戶A要把自己儲蓄賬戶的錢轉(zhuǎn)賬到客戶B的支票賬戶中。如果轉(zhuǎn)賬過程中計(jì)算機(jī)系統(tǒng)出現(xiàn)了故障,A賬戶的錢減去了而B賬戶的錢沒有增加,這是現(xiàn)實(shí)中絕對不能允許的事情,可見文件系統(tǒng)不能保證數(shù)據(jù)的一致性,這就需要賬戶的“加”和“減”這兩種操作必須是要么做、要么不做的原子性操作。可是在文件系統(tǒng)處理階段,保持原子性是很難實(shí)現(xiàn)的。
(6)并發(fā)訪問異?!,F(xiàn)實(shí)世界是個并發(fā)的世界,經(jīng)常出現(xiàn)多個用戶修改同一數(shù)據(jù)的事情。例如賬戶A中原來已有5000元,此時兩個客戶同時向賬戶A轉(zhuǎn)賬,他們分別向賬戶A轉(zhuǎn)入500元和1000元。假設(shè)轉(zhuǎn)賬操作是先讀取賬戶A的余額,然后在其上增加或減少金額,最后將結(jié)果寫回。如果兩個轉(zhuǎn)賬程序并行執(zhí)行,開始讀到賬戶A的余額都是5000元,然后分別加上自己的轉(zhuǎn)賬數(shù),再分別寫回5500元和6000元。由于沒有并發(fā)控制,后寫入的數(shù)據(jù)將覆蓋前面寫入的數(shù)據(jù),導(dǎo)致賬戶A最后的結(jié)果要么是5500元要么是6000元,但是本轉(zhuǎn)賬過程真正的結(jié)果應(yīng)該是賬戶A擁有6500元。正是由于文件系統(tǒng)存在很多不足,加速了數(shù)據(jù)庫系統(tǒng)的發(fā)展。數(shù)據(jù)庫系統(tǒng)很好地解決了文件系統(tǒng)中存在的問題,并能提供以下特性:
(1)數(shù)據(jù)獨(dú)立性(DataIndependence)。所謂的獨(dú)立性,是指應(yīng)用程序獨(dú)立于數(shù)據(jù)的邏輯表示和物理存儲。將文件系統(tǒng)中定義的數(shù)據(jù)文件從應(yīng)用程序中抽取出來,由數(shù)據(jù)庫系統(tǒng)統(tǒng)一實(shí)現(xiàn)和管理,因此當(dāng)數(shù)據(jù)邏輯結(jié)構(gòu)和物理存儲結(jié)構(gòu)發(fā)生變化時無需對應(yīng)用程序進(jìn)行修改。
(2)有效訪問數(shù)據(jù)(EfficientDataAccess)。數(shù)據(jù)庫系統(tǒng)中采用復(fù)雜的技術(shù),通過優(yōu)化系統(tǒng)資源配置和合理分布數(shù)據(jù)等工作來提高大規(guī)模數(shù)據(jù)量的存儲與檢索效率。
(3)數(shù)據(jù)完整性與安全性(DataIntegrityandSecurity)。數(shù)據(jù)庫管理系統(tǒng)利用數(shù)據(jù)完整性約束或限制來保證數(shù)據(jù)庫的數(shù)據(jù)不受系統(tǒng)故障和用戶誤操作而導(dǎo)致的數(shù)據(jù)破壞。同時,數(shù)據(jù)庫系統(tǒng)采用安全認(rèn)證、數(shù)據(jù)加密、訪問控制等技術(shù)來實(shí)現(xiàn)數(shù)據(jù)的安全性要求。
(4)并發(fā)訪問與故障恢復(fù)(ConcurrentAccessandCrashRecovery)。多用戶同時訪問同一數(shù)據(jù)的時候,產(chǎn)生了并發(fā)訪問,這可能導(dǎo)致數(shù)據(jù)的沖突。數(shù)據(jù)庫系統(tǒng)可保證并發(fā)訪問的順利進(jìn)行,解決并行化所帶來的問題,同時還會讓用戶感覺到好像自己在獨(dú)享系統(tǒng)。1.3數(shù)據(jù)視圖視圖(View)從最原始的意義上可以理解為一個人看(既“視”)某個物體所得到的圖像。如果將這個概念引申到數(shù)據(jù)庫領(lǐng)域中,則認(rèn)為不同的用戶對同一數(shù)據(jù)庫不同部分的理解,稱為該數(shù)據(jù)庫的一個視圖,或數(shù)據(jù)視圖。這里的用戶可以是普通計(jì)算用戶或是不同的應(yīng)用程序,他們對同一數(shù)據(jù)庫所關(guān)心的數(shù)據(jù)可能是不同的,就如同很多人對同一事物有不同的視角。數(shù)據(jù)視圖不僅是一個重要的概念,也是數(shù)據(jù)庫系統(tǒng)中的一個實(shí)用的工具。例如,對于學(xué)生信息數(shù)據(jù)庫來說,檔案管理部門、教務(wù)管理部門和衛(wèi)生保健部門各自關(guān)心不同的數(shù)據(jù),檔案管理人員一般只想查看學(xué)生的基本檔案信息;教務(wù)管理人員只關(guān)心學(xué)生的成績和課程信息;衛(wèi)生保健人員關(guān)心的是與學(xué)生健康有關(guān)的數(shù)據(jù)。因此有了3個不同的局部數(shù)據(jù)視圖。如果想同時觀察學(xué)生的全部數(shù)據(jù)記錄,就得把3個不同的數(shù)據(jù)視圖合并形成學(xué)生的全局?jǐn)?shù)據(jù)視圖。局部數(shù)據(jù)視圖和全局?jǐn)?shù)據(jù)視圖都是學(xué)生數(shù)據(jù)的一種邏輯表示結(jié)構(gòu),這種結(jié)構(gòu)易于實(shí)現(xiàn)計(jì)算機(jī)的訪問操作。數(shù)據(jù)庫中的所有數(shù)據(jù)最終是存儲在物理磁盤上的,如何在磁盤上存儲數(shù)據(jù)、如何將數(shù)據(jù)分布在多個磁盤上或網(wǎng)絡(luò)存儲介質(zhì)上、使用什么樣的底層文件系統(tǒng)等都是數(shù)據(jù)庫系統(tǒng)要解決的問題。從物理存儲角度來看,數(shù)據(jù)有不同的存儲結(jié)構(gòu)。這些存儲結(jié)構(gòu)又叫數(shù)據(jù)庫的物理視圖。因此在數(shù)據(jù)庫中存儲的數(shù)據(jù)具有物理視圖和邏輯視圖兩個側(cè)面。而邏輯視圖又有局部數(shù)據(jù)視圖和全局?jǐn)?shù)據(jù)視圖。1.3.1數(shù)據(jù)抽象數(shù)據(jù)抽象(DataAbstraction)是指人們對現(xiàn)實(shí)事物屬性的一種數(shù)據(jù)抽取的過程。數(shù)據(jù)庫系統(tǒng)必須能夠快速檢索用戶所需要的數(shù)據(jù),因此設(shè)計(jì)者必須使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu)來表示現(xiàn)實(shí)的數(shù)據(jù)。而數(shù)據(jù)庫用戶大部分不具備專業(yè)的計(jì)算機(jī)知識,因此系統(tǒng)通過多個層次的抽象來隱藏復(fù)雜性。數(shù)據(jù)抽象采用多層抽取的思想,每一層都是其上一層的基礎(chǔ),這個過程是將復(fù)雜變簡單的漸進(jìn)過程。最后用戶面對最高層的抽象結(jié)果,也就是最簡單的數(shù)據(jù)形式而不用關(guān)心復(fù)雜的細(xì)節(jié)。首先,物理層抽象是抽象的最低層,它描述數(shù)據(jù)庫中的數(shù)據(jù)是如何在硬盤上保存的。物理層詳細(xì)描述了存儲的數(shù)據(jù)結(jié)構(gòu)。在物理層之上,以物理層為基礎(chǔ)抽取一個邏輯層,在邏輯層中描述數(shù)據(jù)庫中存儲數(shù)據(jù)的類型及相互的關(guān)系。視圖層抽象是抽象的最高層次,只描述了數(shù)據(jù)庫中某一部分的數(shù)據(jù)及其關(guān)系。例如企業(yè)員工信息數(shù)據(jù)庫中保存了全部員工的數(shù)據(jù),財(cái)務(wù)部人員只關(guān)心在職人員的信息,人事退休管理部門只關(guān)心退休人員信息等。視圖層抽象提供了同一數(shù)據(jù)庫的多個視圖。數(shù)據(jù)抽象的3個層次如圖1.1所示。圖1.1數(shù)據(jù)抽象層次結(jié)構(gòu)1.3.2實(shí)例與模式數(shù)據(jù)庫所包含的數(shù)據(jù)往往是一個應(yīng)用部門、集團(tuán)或領(lǐng)域中各方面的數(shù)據(jù),其涉及若干個現(xiàn)實(shí)中的對象,包括人員信息、資產(chǎn)信息、財(cái)務(wù)信息、物流信息、銷售信息等等。這些信息存在固有的數(shù)據(jù)屬性,同時信息之間也存在著天然的關(guān)聯(lián)。數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)必須把這些屬性和關(guān)聯(lián)用計(jì)算機(jī)可以支持的模型表示出來。在一個數(shù)據(jù)庫應(yīng)用系統(tǒng)內(nèi)描述對象的數(shù)據(jù)屬性以及對象之間關(guān)聯(lián)的數(shù)據(jù)框架的集合稱為數(shù)據(jù)庫模式。數(shù)據(jù)庫設(shè)計(jì)工作就是要構(gòu)建有效的數(shù)據(jù)庫模式。數(shù)據(jù)庫模式構(gòu)建完成之后,就要向其中添加數(shù)據(jù),隨著時間的推移,數(shù)據(jù)操作會引起信息動態(tài)變化,但每一時刻數(shù)據(jù)庫中的數(shù)據(jù)都會保持一個一致性狀態(tài)。特定時刻存儲在數(shù)據(jù)庫中的所有數(shù)據(jù)的總和稱為數(shù)據(jù)庫模式在這一時刻的一個實(shí)例。數(shù)據(jù)庫模式和實(shí)例的區(qū)別可通過計(jì)算機(jī)程序設(shè)計(jì)中的概念加以類比說明。模式對應(yīng)于程序設(shè)計(jì)語言中的變量聲明,而每個變量在特定時刻都有特定的值,程序中變量在某一時刻的值是模式的一個實(shí)例。例如銀行賬戶數(shù)據(jù)庫的模式固定后,某一天的賬戶數(shù)據(jù)就是該模式的一個實(shí)例,第二天就有新的客戶建立新賬戶或者老客戶注銷賬戶,因此數(shù)據(jù)的實(shí)例很容易變化,而模式也會發(fā)生改變,但是相對固定。數(shù)據(jù)庫系統(tǒng)根據(jù)抽象的層次不同存在幾種不同的模式。在物理層描述數(shù)據(jù)庫的物理存儲設(shè)計(jì)是物理模式;邏輯模式是在邏輯層描述數(shù)據(jù)庫的全部框架設(shè)計(jì);數(shù)據(jù)庫在視圖層有子模式的概念,子模式描述了數(shù)據(jù)庫不同的視圖。根據(jù)分層設(shè)計(jì)的思想,程序員使用邏輯模式來設(shè)計(jì)應(yīng)用程序,不直接操作模式,因此邏輯模式隱藏了物理模式的復(fù)雜性,同時也解除了應(yīng)用程序與物理模式的耦合性。當(dāng)物理模式改變時應(yīng)用程序無需修改,這就是物理數(shù)據(jù)獨(dú)立。1.4數(shù)據(jù)模型簡介數(shù)據(jù)是反映客觀世界的事實(shí)并可以區(qū)分其特征的符號,包括字符、數(shù)字、文本、聲音、圖形、圖像、圖表、圖片等,都是現(xiàn)實(shí)世界中客觀存在的,可以輸入到計(jì)算機(jī)中進(jìn)行存儲和管理的數(shù)據(jù)。數(shù)據(jù)可以描述現(xiàn)實(shí)世界中一個客觀對象,如一個企業(yè)員工的情況:工號、姓名、性別、年齡、部門等。數(shù)據(jù)通過對客觀事物特性的定量化描述來支持計(jì)算機(jī)系統(tǒng)對客觀事物的存儲、加工和處理。數(shù)據(jù)模型是描述數(shù)據(jù)、數(shù)據(jù)之間關(guān)系、數(shù)據(jù)語義及一致性約束的概念集合,也是構(gòu)建數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)。下面介紹常見的幾種數(shù)據(jù)模型。1.4.1實(shí)體-關(guān)聯(lián)模型實(shí)體-關(guān)聯(lián)模型(E-R,Entity-Relationship)是分析現(xiàn)實(shí)世界抽象關(guān)系的有效工具之一。該模型認(rèn)為現(xiàn)實(shí)世界是由被稱為實(shí)體(Entity)的元素和實(shí)體之間的聯(lián)系構(gòu)成的。實(shí)體是現(xiàn)實(shí)世界中存在的可以相互區(qū)別的事物或者活動的數(shù)據(jù)抽象。比如員工信息管理中,職工、經(jīng)理、部門、賬戶等都是實(shí)體。關(guān)聯(lián)(Relationship)是指實(shí)體之間的相互關(guān)系,反映了現(xiàn)實(shí)中事物之間的聯(lián)系,通常表示一種活動。比如一張訂單、一場比賽、一種選題、一種銷售等都是聯(lián)系。屬性(Attribute)是描述實(shí)體或關(guān)聯(lián)特征的單元,一個實(shí)體或關(guān)聯(lián)通常具有多個特征,需要多個相應(yīng)的屬性來描述。比如描述“課程”這個實(shí)體具有課程名稱、任課教師、開設(shè)專業(yè)、學(xué)分等屬性。實(shí)體集(EntitySet)是指同一類實(shí)體的集合。例如一個班級的全體學(xué)生是一個實(shí)體集。實(shí)體型(EntityType)是對同類實(shí)體的共用特征的抽象定義。例如人的共有特征為:姓名、年齡、性別、籍貫、學(xué)歷等,這5個特征就定義了人這個實(shí)體型。實(shí)體值(EntityValue)就是符合實(shí)體型定義的每個具體的實(shí)體。例如人的實(shí)體型使用“姓名、年齡、性別、籍貫、學(xué)歷”5個特征定義,而“李明,33,山東,教師,碩士”就是該實(shí)體型的一個實(shí)體值,它所描述的是現(xiàn)實(shí)中具體的人。E-R模型可以用E-R圖進(jìn)行描述,E-R圖由以下幾個元素構(gòu)成。
(1)矩形:代表實(shí)體集。
(2)橢圓:代表屬性。
(3)菱形:代表實(shí)體集之間的關(guān)聯(lián)。
(4)線段:鏈接屬性與實(shí)體集或鏈接實(shí)體集與關(guān)聯(lián)的連線。作為例子,我們看一下高校學(xué)生管理數(shù)據(jù)庫中學(xué)生選課的部分,對應(yīng)的E-R圖如圖1.2所示。在圖中有學(xué)生和課程兩個實(shí)體,每個實(shí)體包括一些屬性,而這些屬性并不是實(shí)體的全部屬性,只是與該系統(tǒng)相關(guān)的部分。兩個實(shí)體之間還存在“選課”的聯(lián)系。圖1.2E-R圖示例1.4.2關(guān)系模型關(guān)系模型是一種簡單的二維表格結(jié)構(gòu),概念模型中的實(shí)體及實(shí)體之間的聯(lián)系都可以轉(zhuǎn)換為二維表形式。每個二維表稱為一個關(guān)系,一個二維表的表頭,即表的所有列的標(biāo)題稱做關(guān)系的型或者是關(guān)系的結(jié)構(gòu),二維表內(nèi)容稱做關(guān)系的值。關(guān)系中的每一行數(shù)據(jù)(記錄)稱做元組,而它的每一列數(shù)據(jù)稱做一個屬性,列標(biāo)題稱做屬性名。例如表1.1展示了銀行系統(tǒng)中的客戶表,它被稱為客戶關(guān)系??蛻舸a、姓名、地址、電話稱為客戶關(guān)系的屬性,(09001001,張明,上海市楊浦區(qū)翔殷路ABC號,1234567890)是客戶關(guān)系的一個元組。表1.2描述了賬戶信息表,表1.3描述的存款表是賬戶與客戶之間的聯(lián)系。表1.1客戶表(customer)表1.2賬戶表表1.3存款表從這3個表中可以看出,張明和李亮共用一個賬戶,可能是合作關(guān)系;而客戶季新芳開了兩個賬戶,賬戶余額分別為700和900。關(guān)系模型是當(dāng)前商用數(shù)據(jù)庫的主導(dǎo)數(shù)據(jù)模型,有著堅(jiān)實(shí)的理論支持,建立在集合論、數(shù)理邏輯、關(guān)系理論等嚴(yán)格的數(shù)學(xué)基礎(chǔ)上。此外,關(guān)系數(shù)據(jù)模型結(jié)構(gòu)簡單,符合人的思維方式,大多數(shù)數(shù)據(jù)庫系統(tǒng)都是基于這種關(guān)系模型的。1.4.3對象模型對象數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)中一種新型的邏輯數(shù)據(jù)模型,是數(shù)據(jù)庫技術(shù)和面向?qū)ο笤O(shè)計(jì)思想相結(jié)合的產(chǎn)物。傳統(tǒng)的數(shù)據(jù)模型主要用于存儲數(shù)值和文本等由若干數(shù)據(jù)項(xiàng)構(gòu)成的數(shù)據(jù),因此這些數(shù)據(jù)以記錄為基本形式就能滿足需要。隨著數(shù)據(jù)類型越來越復(fù)雜,以及圖形、圖像、聲音、視頻等多媒體數(shù)據(jù)類型的應(yīng)用普及,基本的記錄形式已經(jīng)無法滿足應(yīng)用需要,因此出現(xiàn)了對象數(shù)據(jù)模型。對象數(shù)據(jù)模型表達(dá)信息的基本單位是對象,對象不僅描述實(shí)體的狀態(tài)特征,而且還包含對象的行為特征。比如描述學(xué)生實(shí)體的對象,不僅包含學(xué)號、姓名、年齡、性別、專業(yè)等表示學(xué)生狀態(tài)的屬性特征,而且還包含顯示學(xué)生姓名、入學(xué)、注冊、修改專業(yè)等行為特征。對象具有封裝性、繼承性和多態(tài)性。這些特性都是傳統(tǒng)數(shù)據(jù)模型所不具備的,也是對象數(shù)據(jù)模型的本質(zhì)特征。封裝性是指將對象的屬性和行為隱藏在一起,一個對象只能發(fā)送消息給另一個對象,另一個對象收到消息后做出響應(yīng),執(zhí)行封裝在內(nèi)部的方法,把操作結(jié)果返回給該對象。繼承性是指某一類型的對象可以繼承另一種或一些類型對象的部分或全部特征,這里的特征包括對象的屬性和方法。圖1.3展示了對象的繼承結(jié)構(gòu)。圖1.3對象繼承結(jié)構(gòu)圖1.3所展示的繼承關(guān)系中,最上面的人員是父對象模型,下端的均為子對象模型。學(xué)生對象和教師對象都繼承人員對象的姓名、性別、年齡等特征,同時它們可以增加自己的新的特征,例如在學(xué)生對象中增加年級、獎學(xué)金等新特征;而在教師對象中增加職稱、工齡等特征。繼承性提高了軟件的復(fù)用性,能夠加快軟件更新周期和縮短研發(fā)時間。對象數(shù)據(jù)模型符合人類認(rèn)識世界的規(guī)律,但是目前還不很成熟完善,對象數(shù)據(jù)庫實(shí)現(xiàn)比較復(fù)雜,效率還有待提高,還需要不斷發(fā)展。1.5數(shù)?據(jù)?庫?語?言數(shù)據(jù)庫語言包括數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)描述、操縱和控制語言。它是數(shù)據(jù)庫管理系統(tǒng)為用戶提供的定義、操縱、控制、維護(hù)數(shù)據(jù)庫的工具,是數(shù)據(jù)庫管理系統(tǒng)的重要組成部分。它主要包括兩大部分:
(1)數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫的模式;
(2)數(shù)據(jù)操縱語言,用來表達(dá)數(shù)據(jù)庫的查詢和更新操作。這兩種類型的語言在形式上不是分離的語言,而是統(tǒng)一結(jié)構(gòu)的數(shù)據(jù)庫語言,例如目前應(yīng)用最廣的SQL語言。1.5.1數(shù)據(jù)定義語言數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage)是建立數(shù)據(jù)庫模式的工具,數(shù)據(jù)庫模式是由一系列DDL表達(dá)式建立的。例如,用下面的SQL語言定義一個保存學(xué)生信息的表:
CREATETABLEstudent(idchar(10),namechar(20),ageinteger);數(shù)據(jù)庫中底層復(fù)雜的存儲結(jié)構(gòu)和訪問方式都被隱藏起來,用戶不用關(guān)心這些數(shù)據(jù)模式實(shí)現(xiàn)的細(xì)節(jié),而只需要掌握簡單的DDL語句就能完成數(shù)據(jù)庫模式的建立任務(wù)。同時DDL語言提供了數(shù)據(jù)庫存儲的一致性約束,例如學(xué)生年齡不能小于10歲。1.5.2數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言(DML,DataManipulationLanguage)方便用戶訪問或操作某種特定數(shù)據(jù)模式的數(shù)據(jù)。DML數(shù)據(jù)操縱語言命令使用戶能夠查詢數(shù)據(jù)庫以及操作已有數(shù)據(jù)庫中的數(shù)據(jù)。常見的操作有查詢操作(對數(shù)據(jù)庫信息進(jìn)行檢索)、插入操作(向數(shù)據(jù)庫插入數(shù)據(jù))、刪除操作(從數(shù)據(jù)庫刪除數(shù)據(jù))、更新操作(修改數(shù)據(jù)庫的已有數(shù)據(jù))。例如從數(shù)據(jù)庫的客戶表customer中找出客戶號是09001001的客戶姓名,可以使用如下SQL語句獲得:
SELECETnameFROMcustomerWHEREcustomer-id='09001001';這個查詢指定了客戶表中這個特定數(shù)據(jù)模式的檢索操作,取出customer-id為09001001的行,并且把這些行的數(shù)據(jù)顯示出來。1.5.3應(yīng)用程序訪問數(shù)據(jù)庫機(jī)制應(yīng)用程序中的DML或DDL表達(dá)式需要結(jié)合宿主語言(如C、C++、Java等)來執(zhí)行,目前常用兩種結(jié)合方式。第一種方式是通過提供應(yīng)用程序接口(過程集)來將DML和DDL的表達(dá)式發(fā)送給數(shù)據(jù)庫,執(zhí)行完畢后再取回結(jié)果。開放數(shù)據(jù)庫互聯(lián)標(biāo)準(zhǔn)(ODBC,OpenDatabaseConnectivity)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,WindowsOpenServicesArchitecture)中有關(guān)數(shù)據(jù)庫的一個組成部分,它建立了一組規(guī)范,并提供了一組對數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來完成其大部分任務(wù)。該標(biāo)準(zhǔn)可以支持C、C++?等高級程序設(shè)計(jì)語言來完成對數(shù)據(jù)庫系統(tǒng)的訪問,其可以支持目前主流的數(shù)據(jù)庫系統(tǒng),如SQLServer、Oracle、Infomix、MySQL等等。Java數(shù)據(jù)庫連接(JDBC,JavaDataBaseConnectivity)是一種用于執(zhí)行SQL語句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。第二種方式是通過擴(kuò)展宿主語言的語義,使得嵌入其中的DML或DDL可以運(yùn)行在宿主語言的程序中。通常用一個特殊字符作為DML調(diào)用的開始,并且通過預(yù)處理將DML表達(dá)式轉(zhuǎn)化為宿主語言中的過程調(diào)用;也可以構(gòu)建全新的可視化開發(fā)環(huán)境來支持?jǐn)?shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā),這種方式的典型代表有微軟的ADO.NET開發(fā)環(huán)境和Oracle的DEVELOPER2000系列等。1.6數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)1.6.1數(shù)據(jù)庫的分層結(jié)構(gòu)三級分層結(jié)構(gòu)的組織形式是一個典型的數(shù)據(jù)庫的組織結(jié)構(gòu),如圖1.4所示。這個結(jié)構(gòu)是于1975年在美國ANSI/X3/SPARC(美國國家標(biāo)準(zhǔn)協(xié)會的計(jì)算機(jī)與信息處理委員會中的標(biāo)準(zhǔn)計(jì)劃與需求委員會)數(shù)據(jù)庫小組的報(bào)告中提出的。
1.三級數(shù)據(jù)視圖數(shù)據(jù)抽象的3個級別又稱為三級數(shù)據(jù)視圖,是不同層次用戶(人員)從不同角度所看到的數(shù)據(jù)組織形式。
(1)外部視圖。這是第一層的數(shù)據(jù)組織形式,是應(yīng)用程序員開發(fā)應(yīng)用程序時所使用的數(shù)據(jù)組織形式。外部視圖是應(yīng)用程序員所看到的數(shù)據(jù)的邏輯結(jié)構(gòu),是用戶數(shù)據(jù)視圖。外部視圖可有多個。這一層的最大特點(diǎn)是以各類用戶的需求為出發(fā)點(diǎn),構(gòu)造滿足其需求的最佳邏輯結(jié)構(gòu)。
(2)全局視圖。這是第二層的數(shù)據(jù)組織形式,是面向全局應(yīng)用的全局?jǐn)?shù)據(jù)的組織形式,是數(shù)據(jù)庫管理人員所看到的全體數(shù)據(jù)的邏輯組織形式。
(3)存儲視圖。這是第三層的數(shù)據(jù)組織形式,是面向存儲的即按照物理存儲最優(yōu)的策略的數(shù)據(jù)庫組織形式,是系統(tǒng)維護(hù)人員所看到的數(shù)據(jù)結(jié)構(gòu)。外部視圖是全局視圖的邏輯子集,全局視圖是外部視圖的邏輯匯總和綜合,存儲視圖是全局視圖的具體實(shí)現(xiàn)。三級視圖之間的聯(lián)系由二級映射實(shí)現(xiàn)。外部視圖和全局視圖之間的映射稱為邏輯映射,全局視圖和存儲視圖之間的映射稱為物理映射。
2.三級模式為了在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫的三級組織形式,必須用計(jì)算機(jī)能識別的語言對其進(jìn)行描述。DBMS提供的DDL可以精確定義數(shù)據(jù)視圖的模式(Scheme),與三級視圖對應(yīng)的是三級模式。數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)由外模式、模式和內(nèi)模式三級構(gòu)成,如圖1.4所示。圖1.4數(shù)據(jù)庫的三級模式結(jié)構(gòu)
(1)模式(Schema)。定義全局視圖的模式稱為邏輯模式,簡稱模式,是對數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。它是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,它既完全獨(dú)立于數(shù)據(jù)的物理存儲細(xì)節(jié)也完全獨(dú)立于具體的應(yīng)用程序。一個數(shù)據(jù)庫只有一個模式。定義模式既要定義數(shù)據(jù)的結(jié)構(gòu),還要定義數(shù)據(jù)間的聯(lián)系,更要定義與數(shù)據(jù)有關(guān)的安全性和完整性約束。
(2)外模式(ExternalSchema)。定義外部視圖的模式稱為外模式,也稱子模式。它是數(shù)據(jù)庫用戶看到的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖。外模式是模式的一個子集。一個數(shù)據(jù)庫可以有多個外模式。不同的數(shù)據(jù)庫用戶都擁有自己的外模式。外模式通過對不同用戶開放不同數(shù)據(jù)的方式提供了保證數(shù)據(jù)庫安全性的手段。每個用戶只能訪問其所對應(yīng)的外模式中的數(shù)據(jù),而數(shù)據(jù)庫中的其余部分都是不可見的。
(3)內(nèi)模式(InternalSchema)。定義存儲視圖的模式稱為內(nèi)模式,又稱物理模式。它是對數(shù)據(jù)庫的全體數(shù)據(jù)的物理存儲結(jié)構(gòu)和存儲方式的描述。用DBMS提供的內(nèi)模式DDL定義。存儲結(jié)構(gòu)的描述包括記錄值的存儲方式(順序存儲、Hash方法、B樹結(jié)構(gòu)等)、索引的組織方式等。
3.二層映像數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)的3個級別的抽象,而這些層次間的聯(lián)系和轉(zhuǎn)換則由數(shù)據(jù)庫系統(tǒng)的模式映像機(jī)制來完成。數(shù)據(jù)庫系統(tǒng)在這三級模式間提供了二層映像:(1)外模式/模式映像;(2)模式/內(nèi)模式映像。二層映像如圖1.4所示。
1)外模式/模式映像模式描述的是數(shù)據(jù)庫的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)庫的某個局部邏輯結(jié)構(gòu)。一個模式對應(yīng)多個外模式。多個外模式可能具有共同的局部數(shù)據(jù)。所有外模式都按照一定規(guī)則定義在同一模式上。那么如何定義模式與外模式間的關(guān)系呢,這需要外模式/模式映像機(jī)制。當(dāng)模式發(fā)生改變時,只需修改相應(yīng)的外模式/模式映像,而外模式保持不變。應(yīng)用程序是根據(jù)外模式所定義的邏輯結(jié)構(gòu)開發(fā)書寫的,由于有外模式/模式映像,所以當(dāng)模式發(fā)生改變時不會影響應(yīng)用程序的改變。同理,當(dāng)應(yīng)用程序和外模式改變時,也不會影響模式的變化。
2)模式/內(nèi)模式映像數(shù)據(jù)庫只有一個模式,也只有一個內(nèi)模式。模式/內(nèi)模式映像定義了模式所描述的全局邏輯結(jié)構(gòu)與內(nèi)模式所描述的存儲結(jié)構(gòu)之間的關(guān)系。模式所定義的全局邏輯結(jié)構(gòu)可以存儲在一個磁盤上、多個磁盤上、甚至是多個計(jì)算機(jī)上。數(shù)據(jù)庫存儲在數(shù)據(jù)庫運(yùn)行階段也可以調(diào)整,如把數(shù)據(jù)存放在磁盤陣列上。有了模式/內(nèi)模式映像,不管數(shù)據(jù)庫物理存儲環(huán)境如何改變,只需修改模式/外模式映像的定義即可適應(yīng),而不用修改數(shù)據(jù)庫模式。同理,數(shù)據(jù)庫模式的改變也不會影響內(nèi)模式的改變。1.6.2體系結(jié)構(gòu)中的關(guān)鍵要素?cái)?shù)據(jù)庫系統(tǒng)往往由不同的功能模塊構(gòu)成,這些模塊一起協(xié)同工作來完成數(shù)據(jù)庫的功能。下面分別介紹這些關(guān)鍵部件。
1.存儲管理器存儲管理器是數(shù)據(jù)庫中管理存儲底層數(shù)據(jù)并負(fù)責(zé)與文件管理器進(jìn)行交互的模塊。原始數(shù)據(jù)通過文件系統(tǒng)存儲在磁盤上,這部分功能由操作系統(tǒng)的文件管理器來實(shí)現(xiàn)。存儲管理器將不同的DML語句翻譯成底層文件系統(tǒng)命令提交給文件系統(tǒng)完成。存儲管理器通過這種方式負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)的存儲、檢索和更新。存儲管理器包括:
(1)權(quán)限及完整性管理器。負(fù)責(zé)檢測是否滿足完整性約束,檢查試圖訪問數(shù)據(jù)的用戶權(quán)限等。
(2)事務(wù)管理器。它負(fù)責(zé)保證即使發(fā)生了故障,數(shù)據(jù)庫也能保證數(shù)據(jù)的正確性或者一致性的狀態(tài);保證并發(fā)事務(wù)的正確執(zhí)行而不會發(fā)生沖突。
(3)文件管理器。負(fù)責(zé)磁盤空間的分配,管理用于表示數(shù)據(jù)庫存儲信息的數(shù)據(jù)結(jié)構(gòu)。
(4)緩沖區(qū)管理器。負(fù)責(zé)將數(shù)據(jù)從磁盤上提取到內(nèi)存中,保證數(shù)據(jù)庫系統(tǒng)可以處理比內(nèi)存容量大很多的數(shù)據(jù)。除此之外,存儲管理器還實(shí)現(xiàn)了以下幾種數(shù)據(jù)結(jié)構(gòu),作為系統(tǒng)物理實(shí)現(xiàn)的組成部分:
(1)數(shù)據(jù)文件。負(fù)責(zé)保存數(shù)據(jù)庫自身數(shù)據(jù)。
(2)數(shù)據(jù)字典。負(fù)責(zé)存儲數(shù)據(jù)庫結(jié)構(gòu)的元數(shù)據(jù),尤其是數(shù)據(jù)庫模式。
(3)索引。用于加快對特定數(shù)據(jù)項(xiàng)的訪問速度。
2.查詢處理器查詢處理器負(fù)責(zé)將用戶的查詢表達(dá)式編譯成一個查詢方案,再進(jìn)行查詢優(yōu)化,并選擇代價最小的方案編譯成低級指令,然后執(zhí)行這些指令并將結(jié)果返回。它主要包括如下模塊:
(1)?DDL解釋器。負(fù)責(zé)解釋DDL語句并將其保存在數(shù)據(jù)字典中。
(2)?DML編譯器。將查詢語言中的DML語句翻譯為一個查詢方案。通常同一個查詢請求可以解釋為多種查詢方案,DML編譯器負(fù)責(zé)查詢優(yōu)化,尋求代價最小的方案執(zhí)行。
(3)查詢求值引擎。負(fù)責(zé)執(zhí)行由DML編譯器生成的低級指令。圖1.5展示了這些部件的關(guān)系。圖1.5關(guān)鍵要素之間的關(guān)系1.6.3數(shù)據(jù)庫的獨(dú)立性數(shù)據(jù)庫系統(tǒng)的發(fā)展獨(dú)立于應(yīng)用系統(tǒng)和物理存儲系統(tǒng)的限制,按照自己特有的技術(shù)發(fā)展,同時它又為應(yīng)用系統(tǒng)和底層存儲系統(tǒng)提供統(tǒng)一的標(biāo)準(zhǔn)供相關(guān)研究機(jī)構(gòu)和企業(yè)使用。這樣,在IT業(yè)界獨(dú)立地并行運(yùn)作了3個行業(yè):應(yīng)用程序開發(fā)環(huán)境企業(yè)(如微軟、SUN公司)、數(shù)據(jù)庫管理系統(tǒng)開發(fā)廠商(如Oracle、Sybase公司)、專業(yè)存儲企業(yè)(如EMC、HDS等)。3個行業(yè)的產(chǎn)品相互配合在一起用于實(shí)現(xiàn)數(shù)據(jù)庫應(yīng)用系統(tǒng),并且它們各自的發(fā)展變化不會影響其他合作伙伴的核心技術(shù)的發(fā)展。從這些角度來看數(shù)據(jù)庫應(yīng)該具備獨(dú)立性。數(shù)據(jù)庫的獨(dú)立性可以從內(nèi)部和外部兩個角度來看。數(shù)據(jù)庫內(nèi)部的獨(dú)立性體現(xiàn)在其數(shù)據(jù)獨(dú)立性(DataIndependence)。數(shù)據(jù)獨(dú)立性可以用三級模式和二層映像結(jié)構(gòu)來解釋說明。數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)庫的某級模式(內(nèi)模式、模式、外模式)的變化不會影響其相鄰模式的改變,因?yàn)檫@些變化被它們之間的映像所屏蔽。由于數(shù)據(jù)庫存在二層映像,所以數(shù)據(jù)庫具有兩個數(shù)據(jù)獨(dú)立性:
(1)數(shù)據(jù)的邏輯獨(dú)立性是指修改模式而無需修改外模式或應(yīng)用程序,保證了數(shù)據(jù)與應(yīng)用程序之間的獨(dú)立性。應(yīng)用程序是根據(jù)外模式所定義的邏輯結(jié)構(gòu)而開發(fā)書寫的,由于有外模式/模式映像,所以當(dāng)模式發(fā)生改變時不會影響應(yīng)用程序的改變。
(2)數(shù)據(jù)的物理獨(dú)立性是指修改內(nèi)模式而無需修改模式,進(jìn)而根據(jù)數(shù)據(jù)的邏輯獨(dú)立性,也無須修改外模式和應(yīng)用程序,從而保證了數(shù)據(jù)和應(yīng)用程序之間的物理獨(dú)立性。數(shù)據(jù)庫外部的獨(dú)立性體現(xiàn)在數(shù)據(jù)庫系統(tǒng)的獨(dú)立存在架構(gòu)。當(dāng)今,隨著信息社會的飛速發(fā)展,數(shù)據(jù)呈爆炸性趨勢發(fā)展,數(shù)據(jù)庫系統(tǒng)管理著各個領(lǐng)域的海量信息。一個數(shù)據(jù)庫系統(tǒng)可能服務(wù)于多個應(yīng)用系統(tǒng)、甚至服務(wù)于未來的某些新的應(yīng)用,因而數(shù)據(jù)庫系統(tǒng)的建設(shè)應(yīng)該具有獨(dú)立的運(yùn)行機(jī)制和擴(kuò)展機(jī)制。另一方面,隨著數(shù)據(jù)規(guī)模的增加,勢必要增加存儲設(shè)備、甚至使用網(wǎng)絡(luò)存儲設(shè)備,這也要求數(shù)據(jù)庫的構(gòu)建必須適應(yīng)存儲環(huán)境的改變,而這種改變不會影響數(shù)據(jù)庫系統(tǒng)的效率。機(jī)群數(shù)據(jù)庫技術(shù)是這一方面的主要代表之一。1.6.4集中式體系結(jié)構(gòu)與C/S體系結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的集中體系結(jié)構(gòu)是指使用大型機(jī)(或高性能服務(wù)器)來提供系統(tǒng)的所有功能,包括用戶應(yīng)用程序、操作界面、應(yīng)用業(yè)務(wù)邏輯服務(wù)及所有的DBMS功能。數(shù)據(jù)庫系統(tǒng)的用戶通過計(jì)算機(jī)終端訪問集中在一個地點(diǎn)上的中央計(jì)算機(jī)系統(tǒng),所有的數(shù)據(jù)處理都要在中央計(jì)算機(jī)系統(tǒng)中完成,只有顯示信息和控制信息從遠(yuǎn)程中央計(jì)算機(jī)發(fā)送至用戶終端。數(shù)據(jù)庫集中式體系結(jié)構(gòu)如圖1.6所示。圖中所示的終端往往沒有獨(dú)立的計(jì)算資源,只有簡單的通信、顯示和輸入模塊。數(shù)據(jù)庫集中式體系結(jié)構(gòu)在數(shù)據(jù)庫應(yīng)用的早期階段較為流行,其存在許多缺點(diǎn),如中央計(jì)算機(jī)系統(tǒng)造價昂貴、終端距離有限、可支持的用戶數(shù)目有限和可擴(kuò)展性差等。圖1.6集中式體系結(jié)構(gòu)客戶/服務(wù)器體系結(jié)構(gòu)C/S(Client/Server)是一種分布式計(jì)算模式,與傳統(tǒng)的集中式體系結(jié)構(gòu)相比,具有較好的可伸縮性和較優(yōu)的性價比。?C/S體系結(jié)構(gòu)中分為前端和后端兩個部分。前端由客戶機(jī)擔(dān)任,負(fù)責(zé)用戶界面的處理以及向服務(wù)器發(fā)送用戶請求和接收服務(wù)器返回的處理結(jié)果;后端為服務(wù)器,主要承擔(dān)數(shù)據(jù)庫的管理,根據(jù)前端用戶請求進(jìn)行數(shù)據(jù)處理并返回處理結(jié)果。圖1.7顯示了多級邏輯分層C/S體系結(jié)構(gòu)。圖中所示客戶端和服務(wù)器端通過計(jì)算機(jī)網(wǎng)路互聯(lián)。在服務(wù)器端分布多臺服務(wù)器以便更高效地完成服務(wù)工作。應(yīng)用邏輯服務(wù)器用于負(fù)責(zé)與具體業(yè)務(wù)相關(guān)的服務(wù),如財(cái)務(wù)分析、數(shù)據(jù)匯總、帳務(wù)整理等。數(shù)據(jù)庫系統(tǒng)服務(wù)器負(fù)責(zé)數(shù)據(jù)庫的訪問、事務(wù)的并發(fā)控制、數(shù)據(jù)的維護(hù)、數(shù)據(jù)庫的備份與恢復(fù)、數(shù)據(jù)庫安全性完整性保護(hù)等工作。當(dāng)應(yīng)用邏輯服務(wù)器接受了用戶對數(shù)據(jù)庫的訪問時,將向數(shù)據(jù)庫系統(tǒng)服務(wù)器發(fā)送服務(wù)請求。C/S結(jié)構(gòu)通過計(jì)算機(jī)網(wǎng)絡(luò)連接客戶端和數(shù)據(jù)庫服務(wù)端,增加了系統(tǒng)的靈活性和可擴(kuò)展性,通過多個小型服務(wù)器實(shí)現(xiàn)服務(wù)系統(tǒng)具有良好的性能價格比。C/S結(jié)構(gòu)的主要缺點(diǎn)是要在客戶端安裝應(yīng)用程序,并且客戶端的應(yīng)用程序比較龐大,因而影響了系統(tǒng)應(yīng)用的方便性。一種改進(jìn)的應(yīng)用模式是B/S結(jié)構(gòu)(Browser/Server),這種結(jié)構(gòu)的主要思想是把所有應(yīng)用程序配置在應(yīng)用邏輯服務(wù)器上,客戶端僅僅配置通用的支撐軟件,如瀏覽器??蛻舳送ㄟ^Web訪問應(yīng)用邏輯服務(wù)器,應(yīng)用邏輯服務(wù)器負(fù)責(zé)所有的應(yīng)用計(jì)算服務(wù)。圖1.7C/S體系結(jié)構(gòu)1.6.5分布式體系結(jié)構(gòu)數(shù)據(jù)庫分布式體系結(jié)構(gòu)是把計(jì)算機(jī)網(wǎng)絡(luò)中物理上分散的多個數(shù)據(jù)庫單元連接起來組成的一個邏輯上統(tǒng)一的數(shù)據(jù)庫。每個被連接起來的數(shù)據(jù)庫單元稱為站點(diǎn)或結(jié)點(diǎn)。分布式體系結(jié)構(gòu)中有一個統(tǒng)一的數(shù)據(jù)庫管理系統(tǒng)來進(jìn)行管理,稱為分布式數(shù)據(jù)庫管理系統(tǒng)。如圖1.8所示,在分布式體系結(jié)構(gòu)中數(shù)據(jù)是存儲在計(jì)算機(jī)網(wǎng)絡(luò)中的多個場地,各個場地具有一定的自治性,能夠完成本場地的局部應(yīng)用。而分布在各個場地的物理數(shù)據(jù)在邏輯上映射為一個整體,可以被所有用戶共享,并由一個統(tǒng)一的DBMS進(jìn)行管理。圖1.8分布式體系結(jié)構(gòu)1.6.6異構(gòu)數(shù)據(jù)庫體系結(jié)構(gòu)異構(gòu)數(shù)據(jù)庫系統(tǒng)是與應(yīng)用相關(guān)的多個數(shù)據(jù)庫系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問,每個數(shù)據(jù)庫系統(tǒng)在加入異構(gòu)數(shù)據(jù)庫系統(tǒng)之前本身就已經(jīng)存在,擁有自己的DMBS。異構(gòu)數(shù)據(jù)庫的各個組成部分具有自身的自治性,實(shí)現(xiàn)數(shù)據(jù)共享的同時,每個數(shù)據(jù)庫系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制。異構(gòu)數(shù)據(jù)庫系統(tǒng)的異構(gòu)性主要體現(xiàn)在以下幾個方面:
(1)計(jì)算機(jī)體系結(jié)構(gòu)的異構(gòu)。各個數(shù)據(jù)庫可以分別在大型機(jī)、小型機(jī)、工作站、PC或嵌入式系統(tǒng)中運(yùn)行。
(2)基礎(chǔ)操作系統(tǒng)的異構(gòu)。各個數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)操作系統(tǒng)可以是Unix、WindowsNT、Linux等。
(3)?DMBS本身的異構(gòu)。構(gòu)成異構(gòu)數(shù)據(jù)庫系統(tǒng)的部分可以是同為關(guān)系型數(shù)據(jù)庫系統(tǒng)的Oracle、SQLServer等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫,如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο?,函?shù)型數(shù)據(jù)庫共同組成的一個異構(gòu)數(shù)據(jù)庫系統(tǒng)。1.6.7其他數(shù)據(jù)庫體系結(jié)構(gòu)并行數(shù)據(jù)庫(PDBS,ParallelDatabaseSystem)是以并行計(jì)算機(jī)為基礎(chǔ),以高性能和可擴(kuò)展性為目標(biāo),利用多處理器結(jié)構(gòu)提供比大型機(jī)系統(tǒng)高得多的性能價格比和可用性的數(shù)據(jù)庫系統(tǒng)。并行數(shù)據(jù)庫存在3種基本的結(jié)構(gòu):共享內(nèi)存結(jié)構(gòu)(Shared-Memory)、共享磁盤結(jié)構(gòu)(Shared-Disk)和無共享資源結(jié)構(gòu)(Shared-Nothing)。并行數(shù)據(jù)庫的一個特例是機(jī)群數(shù)據(jù)庫系統(tǒng),它利用計(jì)算機(jī)機(jī)群技術(shù)來支撐數(shù)據(jù)庫系統(tǒng),以便實(shí)現(xiàn)海量信息的高效訪問和存儲管理。目前機(jī)群數(shù)據(jù)庫已經(jīng)有成熟的產(chǎn)品可用,如Oracle11g以后版本推出的OracleRAC技術(shù)。面向?qū)ο笫且环N認(rèn)識方法學(xué),也是一種新的程序設(shè)計(jì)方法學(xué)。把面向?qū)ο蟮姆椒ê蛿?shù)據(jù)庫技術(shù)結(jié)合起來可以使數(shù)據(jù)庫系統(tǒng)的分析、設(shè)計(jì)最大程度地與人們對客觀世界的認(rèn)識相一致。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)是為了滿足新的數(shù)據(jù)庫應(yīng)用需要而產(chǎn)生的新一代數(shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫中提供面向?qū)ο蟮募夹g(shù)是為了滿足特定應(yīng)用的需要。隨著許多基本設(shè)計(jì)應(yīng)用(如MACD和ECAD)中的數(shù)據(jù)庫向面向?qū)ο髷?shù)據(jù)庫的過渡,面向?qū)ο笏枷胍仓饾u延伸到其他涉及復(fù)雜數(shù)據(jù)的應(yīng)用中,其中包括輔助軟件工程(CASE)、計(jì)算機(jī)輔助印刷(CAP)和材料需求計(jì)劃(MRP)。這些應(yīng)用如同設(shè)計(jì)應(yīng)用一樣在程序設(shè)計(jì)方面和數(shù)據(jù)類型方面都是數(shù)據(jù)密集型的,它們需要能識別這類數(shù)據(jù)的存儲技術(shù),并能對相近數(shù)據(jù)備份進(jìn)行調(diào)整?,F(xiàn)在主流的數(shù)據(jù)庫產(chǎn)品已經(jīng)開始支持面向?qū)ο蟮奶卣鳌?.7數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)DBMS(DataBaseManagementSystem)是對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行存儲和管理的軟件系統(tǒng)。DBMS包括存儲、管理、檢索和控制數(shù)據(jù)庫中數(shù)據(jù)的各種語言和工具,是一套系統(tǒng)軟件?,F(xiàn)在世界上已經(jīng)有很多成熟的DBMS軟件,例如,大家熟悉的FOXPRO、dBASE等是小型DBMS軟件;大型的DBMS軟件如IBM的DB2、Oracle公司的Oracle11g、微軟的SQLServer,以及Informix、Sybase公司的數(shù)據(jù)庫產(chǎn)品等等。
DBMS的主要功能如下:
(1)數(shù)據(jù)庫的定義功能。DBMS提供模式DDL(描述概念模式的數(shù)據(jù)定義語言)定義數(shù)據(jù)庫的三級結(jié)構(gòu)、二級映像、數(shù)據(jù)的完整性約束、安全保密限制等約束。
(2)數(shù)據(jù)庫的操縱功能。DBMS提供DML(數(shù)據(jù)操縱語言)以實(shí)現(xiàn)對數(shù)據(jù)的操作?;镜臄?shù)據(jù)操作有兩類:檢索(查詢)和更新(包括插入、刪除、更新)。在DBMS中應(yīng)包括DML的編譯程序或解釋程序。依照語言的級別,DML又可分成過程性DML和非過程性DML兩種。
(3)數(shù)據(jù)庫的保護(hù)功能。DBMS對數(shù)據(jù)庫的保護(hù)主要通過以下4個方面實(shí)現(xiàn):①數(shù)據(jù)庫的恢復(fù)。在數(shù)據(jù)庫被破壞或數(shù)據(jù)不正確時,系統(tǒng)有能力把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。②數(shù)據(jù)庫的并發(fā)控制。在多個用戶同時對同一個數(shù)據(jù)進(jìn)行操作時,系統(tǒng)應(yīng)能加以控制,防止破壞數(shù)據(jù)庫中的數(shù)據(jù)。③數(shù)據(jù)的完整性控制。用于保證數(shù)據(jù)庫中數(shù)據(jù)及語義的正確性和有效性,防止任何對數(shù)據(jù)造成錯誤的操作。④數(shù)據(jù)安全性控制。用于防止未經(jīng)授權(quán)的用戶存取數(shù)據(jù)庫中的數(shù)據(jù),以避免數(shù)據(jù)的泄露、更改或破壞。
(4)數(shù)據(jù)庫的維護(hù)功能。包括數(shù)據(jù)庫的數(shù)據(jù)載入、轉(zhuǎn)換、轉(zhuǎn)儲,數(shù)據(jù)庫的改組以及性能監(jiān)控等功能。
(5)數(shù)據(jù)字典。數(shù)據(jù)庫系統(tǒng)中存放三級結(jié)構(gòu)定義的數(shù)據(jù)庫稱為數(shù)據(jù)字典(DD)。對數(shù)據(jù)庫的操作都要通過數(shù)據(jù)字典才能實(shí)現(xiàn)。DD中還存放數(shù)據(jù)庫運(yùn)行時的統(tǒng)計(jì)信息,例如記錄個數(shù)、訪問次數(shù)等。上面是一般DBMS所具備的功能,通常在大、中型計(jì)算機(jī)上實(shí)現(xiàn)的DBMS功能較強(qiáng)、較全,在微型計(jì)算機(jī)上實(shí)現(xiàn)的DBMS功能較弱。1.8數(shù)?據(jù)?庫?系?統(tǒng)數(shù)據(jù)庫系統(tǒng)(DBS,DataBaseSystem)是一個實(shí)際可運(yùn)行的存儲、維護(hù)和向應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),它是存儲介質(zhì)、處理對象和管理系統(tǒng)的集合體。它通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言、實(shí)用程序以及數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行。1.8.1DBS構(gòu)成數(shù)據(jù)庫系統(tǒng)由如下部分構(gòu)成:
(1)數(shù)據(jù)庫。即存儲在磁帶、磁盤、光盤或其他外存介質(zhì)上,按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù),按照一定的數(shù)據(jù)模型組織、描述和存儲,具有比較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和擴(kuò)展性,并可以被多個用戶所共享。
(2)數(shù)據(jù)庫管理系統(tǒng)(DBMS)。它是一組能完成描述、管理、維護(hù)數(shù)據(jù)庫的程序系統(tǒng)。它能對數(shù)據(jù)庫進(jìn)行有效的管理,實(shí)現(xiàn)存儲管理、安全性管理、完整性管理,為數(shù)據(jù)的訪問和保護(hù)提供強(qiáng)大的處理功能,同時也為用戶提供一個方便、快捷的管理和操作平臺。
(3)人員。人員包括應(yīng)用程序員、數(shù)據(jù)庫管理員(DBA)和用戶3部分。應(yīng)用程序員負(fù)責(zé)設(shè)計(jì)和編寫具體的應(yīng)用程序模塊,并進(jìn)行調(diào)試和安裝。數(shù)據(jù)庫管理員(DBA)負(fù)責(zé)全面管理和控制數(shù)據(jù)庫系統(tǒng),決定數(shù)據(jù)庫中的信息內(nèi)容和結(jié)構(gòu);決定存儲結(jié)構(gòu)和存取策略;定義數(shù)據(jù)的安全性要求和完整性約束條件;監(jiān)控?cái)?shù)據(jù)庫的使用和運(yùn)行;負(fù)責(zé)對數(shù)據(jù)庫進(jìn)行改進(jìn)和重構(gòu)。用戶是數(shù)據(jù)庫系統(tǒng)的使用
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年09月江西2024年廣發(fā)銀行贛州分行校園招考筆試歷年參考題庫附帶答案詳解
- 二零二五版美容院美容師職業(yè)資格認(rèn)證合同3篇
- 2024年09月江蘇2024年興業(yè)銀行南京分行校園招考(鎮(zhèn)江)筆試歷年參考題庫附帶答案詳解
- 標(biāo)題22:2025年度網(wǎng)絡(luò)安全風(fēng)險評估與應(yīng)急預(yù)案合同3篇
- 2024年08月銀行行測題庫行測邏輯填空模擬題0822筆試歷年參考題庫附帶答案詳解
- 展會現(xiàn)場展商管理與服務(wù)合同(二零二五年度)3篇
- 2025年度個人帶車庫帶私人泳池房產(chǎn)交易合同4篇
- 2024版通風(fēng)系統(tǒng)施工合同范本
- 2024年08月中信銀行總行執(zhí)行監(jiān)控崗招聘筆試歷年參考題庫附帶答案詳解
- 2024年08月東莞銀行佛山分行招聘筆試歷年參考題庫附帶答案詳解
- 2025年病案編碼員資格證試題庫(含答案)
- 企業(yè)財(cái)務(wù)三年戰(zhàn)略規(guī)劃
- 提高膿毒性休克患者1h集束化措施落實(shí)率
- 山東省濟(jì)南市天橋區(qū)2024-2025學(xué)年八年級數(shù)學(xué)上學(xué)期期中考試試題
- 主播mcn合同模板
- 新疆2024年中考數(shù)學(xué)試卷(含答案)
- 2024測繪個人年終工作總結(jié)
- DB11 637-2015 房屋結(jié)構(gòu)綜合安全性鑒定標(biāo)準(zhǔn)
- 制造業(yè)生產(chǎn)流程作業(yè)指導(dǎo)書
- DB34∕T 4444-2023 企業(yè)信息化系統(tǒng)上云評估服務(wù)規(guī)范
- 福建中閩能源股份有限公司招聘筆試題庫2024
評論
0/150
提交評論