資料庫技術應用與開發
㈠ 資料庫技術的應用與發展
資料庫技術是現代信息科學與技術的重要組成部分,是計算機數據處理與信息管理系統的核心。資料庫技術研究和解決了計算機信息處理過程中大量數據有效地組織和存儲的問題,在資料庫系統中減少數據存儲冗餘、實現數據共享、保障數據安全以及高效地檢索數據和處理數據。
隨著計算機技術與網路通信技術的發展,資料庫技術已成為信息社會中對大量數據進行組織與管理的重要技術手段及軟體技術,是網路信息化管理系統的基礎。本章主要介紹資料庫技術的應用與發展、關系模型的基本概念、關系資料庫的設計理論及資料庫設計方法等內容,是學習和掌握現代資料庫技術的基礎。
1.1 資料庫技術的發展與應用
從20世紀60年代末期開始到現在,資料庫技術已經發展了30多年。在這30多年的歷程中,人們在資料庫技術的理論研究和系統開發上都取得了輝煌的成就,而且已經開始對新一代資料庫系統的深入研究。資料庫系統已經成為現代計算機系統的重要組成部分。
1.1.1 資料庫技術與信息技術
信息技術(Information Technology,IT)是當今使用頻率最高的名詞之一,它隨著計算機技術在工業、農業以及日常生活中的廣泛應用,已經被越來越多的個人和企業作為自己趕超世界潮流的標志之一。而資料庫技術則是信息技術中一個重要的支撐。沒有資料庫技術,人們在浩瀚的信息世界中將顯得手足無措。
資料庫技術是計算機科學技術的一個重要分支。從20世紀50年代中期開始,計算機應用從科學研究部門擴展到企業管理及政府行政部門,人們對數據處理的要求也越來越高。1968年,世界上誕生了第一個商品化的信息管理系統IMS(Information Management System),從此,資料庫技術得到了迅猛發展。在互聯網日益被人們接受的今天,Internet又使資料庫技術、知識、技能的重要性得到了充分的放大。現在資料庫已經成為信息管理、辦公自動化、計算機輔助設計等應用的主要軟體工具之一,幫助人們處理各種各樣的信息數據。
1.1.2 資料庫技術的應用及特點
資料庫最初是在大公司或大機構中用作大規模事務處理的基礎。後來隨著個人計算機的普及,資料庫技術被移植到PC機(Personal Computer,個人計算機)上,供單用戶個人資料庫應用。接著,由於PC機在工作組內連成網,資料庫技術就移植到工作組級。現在,資料庫正在Internet和內聯網中廣泛使用。
20世紀60年代中期,資料庫技術是用來解決文件處理系統問題的。當時的資料庫處理技術還很脆弱,常常發生應用不能提交的情況。20世紀70年代關系模型的誕生為資料庫專家提供了構造和處理資料庫的標准方法,推動了關系資料庫的發展和應用。1979年,Ashton-Tate公司引入了微機產品dBase Ⅱ,並稱之為關系資料庫管理系統,從此資料庫技術移植到了個人計算機上。20世紀80年代中期到後期,終端用戶開始使用區域網技術將獨立的計算機連接成網路,終端之間共享資料庫,形成了一種新型的多用戶數據處理,稱為客戶機/伺服器資料庫結構。現在,資料庫技術正在被用來同Internet技術相結合,以便在機構內聯網、部門區域網甚至WWW上發布資料庫數據。
1.1.3 資料庫技術發展歷史
數據模型是資料庫技術的核心和基礎,因此,對資料庫系統發展階段的劃分應該以數據模型的發展演變作為主要依據和標志。按照數據模型的發展演變過程,資料庫技術從開始到現在短短的30年中,主要經歷了三個發展階段:第一代是網狀和層次資料庫系統,第二代是關系資料庫系統,第三代是以面向對象數據模型為主要特徵的資料庫系統。資料庫技術與網路通信技術、人工智慧技術、面向對象程序設計技術、並行計算技術等相互滲透、有機結合,成為當代資料庫技術發展的重要特徵。
1. 第一代資料庫系統
第一代資料庫系統是20世紀70年代研製的層次和網狀資料庫系統。層次資料庫系統的典型代表是1969年IBM公司研製出的層次模型的資料庫管理系統IMS。20世紀60年代末70年代初,美國資料庫系統語言協會CODASYL(Conference on Data System Language)下屬的資料庫任務組DBTG(Data Base Task Group)提出了若干報告,被稱為DBTG報告。DBTG報告確定並建立了網狀資料庫系統的許多概念、方法和技術,是網狀資料庫的典型代表。在DBTG思想和方法的指引下資料庫系統的實現技術不斷成熟,開發了許多商品化的資料庫系統,它們都是基於層次模型和網狀模型的。
可以說,層次資料庫是資料庫系統的先驅,而網狀資料庫則是資料庫概念、方法、技術的奠基者。
2. 第二代資料庫系統
第二代資料庫系統是關系資料庫系統。1970年IBM公司的San Jose研究試驗室的研究員Edgar F. Codd發表了題為《大型共享資料庫數據的關系模型》的論文,提出了關系數據模型,開創了關系資料庫方法和關系資料庫理論,為關系資料庫技術奠定了理論基礎。Edgar F. Codd於1981年被授予ACM圖靈獎,以表彰他在關系資料庫研究方面的傑出貢獻。
20世紀70年代是關系資料庫理論研究和原型開發的時代,其中以IBM公司的San Jose研究試驗室開發的System R和Berkeley大學研製的Ingres為典型代表。大量的理論成果和實踐經驗終於使關系資料庫從實驗室走向了社會,因此,人們把20世紀70年代稱為資料庫時代。20世紀80年代幾乎所有新開發的系統均是關系型的,其中涌現出了許多性能優良的商品化關系資料庫管理系統,如DB2、Ingres、Oracle、Informix、Sybase等。這些商用資料庫系統的應用使資料庫技術日益廣泛地應用到企業管理、情報檢索、輔助決策等方面,成為實現和優化信息系統的基本技術。
3. 第三代資料庫系統
從20世紀80年代以來,資料庫技術在商業上的巨大成功刺激了其他領域對資料庫技術需求的迅速增長。這些新的領域為資料庫應用開辟了新的天地,並在應用中提出了一些新的數據管理的需求,推動了資料庫技術的研究與發展。
1990年高級DBMS功能委員會發表了《第三代資料庫系統宣言》,提出了第三代資料庫管理系統應具有的三個基本特徵:
l 應支持數據管理、對象管理和知識管理。
l 必須保持或繼承第二代資料庫系統的技術。
l 必須對其他系統開放。
面向對象數據模型是第三代資料庫系統的主要特徵之一;資料庫技術與多學科技術的有機結合也是第三代資料庫技術的一個重要特徵。分布式資料庫、並行資料庫、工程資料庫、演繹資料庫、知識庫、多媒體庫、模糊資料庫等都是這方面的實例。
1.1.4 資料庫系統訪問技術
目前訪問資料庫伺服器的主流標准介面主要有ODBC、OLE DB和ADO。下面分別對這三種介面進行概要介紹。
1. 開放資料庫連接(ODBC)
開放資料庫連接(Open Database Connectivity,ODBC)是由Microsoft公司定義的一種資料庫訪問標准。使用ODBC應用程序不僅可以訪問存儲在本地計算機的桌面型資料庫中的數據,而且可以訪問異構平台上的資料庫,例如可以訪問SQL Server、Oracle、Informix或DB2構建的資料庫等。
ODBC是一種重要的訪問資料庫的應用程序編程介面(Application Programming Interface,API),基於標準的SQL語句,它的核心就是SQL語句,因此,為了通過ODBC訪問資料庫伺服器,資料庫伺服器必須支持SQL語句。
ODBC通過一組標準的函數(ODBC API)調用來實現資料庫的訪問,但是程序員不必理解這些ODBC,API就可以輕松開發基於ODBC的客戶機/伺服器應用程序。這是因為在很多流行的程序開發語言中,如Visual Basic、PowerBuilder、Visual C++等,都提供了封裝ODBC各種標准函數的代碼層,開發人員可以直接使用這些標准函數。
ODBC獲得了巨大成功並大大簡化了一些資料庫開發工作。但是它也存在嚴重的不足,因此Microsoft公司又開發了OLE DB。
2. OLE DB
OLE DB是Microsoft公司提供的關於資料庫系統級程序的介面(System-Level Programming Interface),是Microsoft公司資料庫訪問的基礎。OLE DB實際上是Microsoft公司OLE對象標準的一個實現。OLE DB對象本身是COM(組件對象模型)對象並支持這種對象的所有必需的介面。
一般說來,OLE DB提供了兩種訪問資料庫的方法:一種是通過ODBC驅動器訪問支持SQL語言的資料庫伺服器;另一種是直接通過原始的OLE DB提供程序。因為ODBC只適用於支持SQL語言的資料庫,因此ODBC的使用范圍過於狹窄,目前Microsoft公司正在逐步用OLE DB來取代ODBC。
因為OLE DB是一個面向對象的介面,特別適合於面向對象語言。然而,許多資料庫應用開發者使用VBScript和JScript等腳本語言開發程序,所以Microsoft公司在OLE DB對象的基礎上定義了ADO。
3. 動態數據對象(ADO)
動態數據對象(Active Data Objects,ADO)是一種簡單的對象模型,可以被開發者用來處理任何OLE DB數據,可以由腳本語言或高級語言調用。ADO對資料庫提供了應用程序水平級的介面(Application-Level Programming Interface),幾乎使用任何語言的程序員都能夠通過使用ADO來使用OLE DB的功能。Microsoft公司聲稱,ADO將替換其他的數據訪問方式,所以ADO對於任何使用Microsoft公司產品的資料庫應用是至關重要的。
1.1.5 網路資料庫系統編程技術
在當今網路盛行的年代,資料庫與Web技術的結合正在深刻改變著網路應用。有了資料庫的支持,擴展網頁功能、設計互動式頁面、構造功能強大的後台管理系統、更新網站和維護網站都將變得輕而易舉。隨著網路應用的深入,Web資料庫技術將日益顯示出其重要地位。在這里簡單介紹一下Web資料庫開發的相關技術。
1. 通用網關介面(CGI)編程
通用網關介面(Common Gateway Interface,CGI)是一種通信標准,它的任務是接受客戶端的請求,經過辨認和處理,生成HTML文檔並重新傳回到客戶端。這種交流過程的編程就叫做CGI編程。CGI可以運行在多種平台上,具有強大的功能,可以使用多種語言編程,如Visual Basic、Visual C++、Tcl、Perl、AppletScript等,比較常見的是用Perl語言編寫的CGI程序。但是CGI也有其致命的弱點,即速度慢和安全性差等。
2. 動態伺服器頁面(ASP)
動態伺服器頁面(Active Server Pages,ASP)是Microsoft公司推出的一種用以取代CGI的技術,是一種真正簡便易學、功能強大的伺服器編程技術。ASP實際上是Microsoft公司開發的一套伺服器端腳本運行環境,通過ASP可以建立動態的、交互的、高效的Web伺服器應用程序。用ASP編寫的程序都在伺服器端執行,程序執行完畢後,再將執行的結果返回給客戶端瀏覽器,這樣不僅減輕了客戶端瀏覽器的負擔,大大提高了交互速度,而且避免了ASP程序源代碼的外泄,提高了程序的安全性。
3. Java 伺服器頁面(JSP)
Java伺服器頁面(Java Server Pages,JSP)是Sun公司發布的Web應用程序開發技術,一經推出,就受到了人們的廣泛關注。JSP技術為創建高度動態的Web應用程序提供了一個獨特的開發環境,它能夠適用於市場上大多數的伺服器產品。
JSP使用Java語言編寫伺服器端程序,當客戶端向伺服器發出請求時,JSP源程序被編譯成Servlet並由Java虛擬機執行。這種編譯操作僅在對JSP頁面的第一次請求時發生。因此,JSP程序能夠提供更快的交互速度,其安全性和跨平台性也很優秀。
㈡ 簡述資料庫應用系統開發的一般過程
資料庫應用系統的開發是一項軟體工程。一般可分為以下幾個階段:1.規劃2.需求分析3.概念模型設計4.邏輯設計5.物理設計6.程序編制及調試7.運行及維護。這些階段的劃分目前尚無統一的標准,各階段間相互聯接,而且常常需要回溯修正。在資料庫應用系統的開發過程中,每個階段的工作成果就是寫出相應的文檔。每個階段都是在上一階段工作成果的基礎上繼續進行,整個開發工程是有依據、有組織、有計劃、有條不紊地展開工作。1.規劃規劃的主要任務就是作必要性及可行性分析。在收集整理有關資料的基礎上,要確定將建立的資料庫應用系統老早與周邊的關系,要對應用系統定位,其規模的大小、所處的地位、應起的作用均須作全面的分析和論證。明確應用系統的基本功能,劃分資料庫支持的范圍。分析數據來源、數據採集的方式和范圍,研究數據結構的特點,估算數據量的大小,確立數據處理的基本要求和業務的規范標准。規劃人力資源調配。對參與研製和以後維護系統運作的管理人員、技術人員的技術業務水平提出要求,對最終用戶、操作員的素質作出評估。擬定設備配置方案。論證計算機、網路和其他設備在時間、空間兩方面的處理能力,要有足夠的內外存容量,系統的響應速度、網路傳輸和輸入輸出能力應滿足應用需求並留有餘量。要選擇合適的os,dbms和其它軟體。設備配置方案要在使用要求、系統性能、購置成本和維護代價各方面綜合權衡。對系統的開發、運行、維護的成本作出估算。預測系統效益的期望值。擬定開發進度計劃,還要對現行工作模式如何向新系統過渡作出具體安排。規劃階段的工作成果是寫出詳盡的可行性分析報告和資料庫應用系統規劃書。內容應包括:系統的定位及其功能、數據資源及數據處理能力、人力資源調配、設備配置方案、開發成本估算、開發進度計劃等。可行性分析報告和資料庫應用系統規劃書經審定立項後,成為後續開發工作的總綱。資料庫應用系統的開發是一項軟體工程,本文介紹了資料庫應用系統的開發步驟2.需求分析需求分析大致可分成三步來完成。(1)需求信息的收集,需求信息的收集一般以機構設置和業務活動為主幹線,從高層中層到低層逐步展開(2)需求信息的分析整理,對收集到的信息要做分析整理工作。數據流圖(dfd,dataflowdiagram)是業務流程及業務中數據聯系的形式描述。圖4.1是一個簡單的dfd示例。數據字典(dd,datadictionary)詳細描述系統中的全部數據。數據字典包含以下幾個部分。·數據項:是數據的原子單位。·數據組項:由若干數據項組成。·數據流:表示某一數據加工過程的輸入/輸出數據。·數據存儲:是處理過程中要存取的數據。·數據加工過程數據加工過程的描述包括:數據加工過程名、說明、輸入、輸出、加工處理工作摘要、加工處理頻度、加工處理的數據量、響應時間要求等。數據流圖既是需求分析的工具,也是需求分析的成果之一。數據字典是進行數據收集和數據分析的主要成果。(3)需求信息的評審.開發過程中的每一個階段都要經過評審,確認任務是否全部完成,避免或糾正工作中出現的錯誤和疏漏。聘請項目外的專家參與評審,可保證評審的質量和客觀性。評審可能導致開發過程回溯,甚至會反復多次。但是,一定要使全部的預期目標都達到才能讓需求分析階段的工作暫告一個段落.需求分析階段的工作成果是寫出一份既切合實際又具有預見的需求說明書,並且附以一整套詳盡的數據流圖和數據字典。3.概念模型設計概念模型不依賴於具體的計算機系統,他是純粹反映信息需求的概念結構。建模是在需求分析結果的基礎上展開,常常要對數據進行抽象處理。常用的數據抽象方法是『聚集』和『概括』。er方法是設計概念模型時常用的方法。用設計好的er圖再附以相應的說明書可作為階段成果概念模型設計可分三步完成。(1)設計局部概念模型①確定局部概念模型的范圍②定義實體③定義聯系④確定屬性⑤逐一畫出所有游含鍵的局部er圖,並附以相應的說明文件資料庫應用系統的開發是一項軟體工程,本文介紹了資料庫應用系統的開發步驟(2)設計全局概念模型建立全局er圖的步驟如下:①確定公共實體類型②合並局部er圖③消除不一致因素④優化全局er圖⑤畫出全局er圖,並附以相應的說明文件。(3)概念模型的評審概念模型的評審分兩部分進行第一部分是用戶評審。第二部分是開發人員評審。4.邏輯設計邏輯設計階段的主要目標是把概念模型轉神巧換為具體計算機上dbms所支持的結構數據模型。邏輯設計的輸入要素包括:概念模式、用戶需求、約束條件、選用的dbms的特性。邏輯設計的輸出信息包括:dbms可處理的模式和子模式、應用程序設計指南、物理設計指南。(1)設計模式與子模式關系資料庫的模式設計可分四步完成。①建立初始關系模式②規范化處理③模式評價④修正模式經過多次的模式評價和模式修正,確定最終的模式和子模式。寫出邏輯資料庫結構說明書。資料庫應用系統的開發是一項軟體工程,本文介紹了資料庫應用系統的開發步驟(2)編寫應用程序設計指南根據設計好的模式和應用需求,規劃應用程序的架構,設計應用程序的草圖,指定每個應用程序的數據存取功能和數據處理功能梗概,提供程序上的邏輯介面。編寫出應用程序設計指南。(3)編寫物理設計指南。根據設計好的模式和應用需求,整理出物理設計階段所需的一些重要數據和文檔。例如,資料庫的數據容量、各個關系(文件)的數據容量、應用處理頻率、操作順序、響應速度、各個應用的lra和tv、程序訪問路徑建議,等等。這些數據和要求將直接用於物理資料庫的設計。編寫出物理設計指南。5.物理設計物理設計是對給定的邏輯數據模型配置一個最適合應用環境的物理結構。物理設計的輸入要素包括:模式和子模式、物理設計指南、硬體特性、os和dbms的約束、運行要求等。物理設計的輸出信息主要是物理資料庫結構說明書。其內容包括物理資料庫結構、存儲記錄格式、存儲記錄位置分配及訪問方法等。物理設計的步驟如下:(1)存儲記錄結構設計綜合分析數據存儲要求和應用需求,設計存儲記錄格式。(2)存儲空間分配存儲空間分配有兩個原則:①存取頻度高的數據盡量安排在快速、隨機設備上,存取頻度低的數據則安排在速度較慢的設備上。②相互依賴性強的數據盡量存儲在同一台設備上,且盡量安排在鄰近的存儲空間上。從提高系統性能方面考慮,應將設計好的存儲記錄作為一個整體合理地分配物理存儲區域。盡可能充分利用物理順序特點,把不同類型的存儲記錄指派到不同的物理群中。(3)訪問方法的設計一個訪問方法包括存儲結構和檢索機構兩部分。存儲結構限定了訪問存儲記錄時可以使用的訪問路徑;檢索機構定義了每個應用實際使用的訪問路徑。資料庫應用系統的開發是一項軟體工程,本文介紹了資料庫應用系統的開發步驟(4)物理設計的性能評價①查詢響應時間從查詢開始到有結果顯示之間所經歷的時間稱為查詢響應時間。查詢響應時間可進一步細分為服務時間、等待時間和延遲時間。在物理設計過程中,要對系統的性能進行評價。性能評價包括時間、空間、效率、開銷等各個方面。⊙cpu服務時間和i/o服務時間的長短取決於應用程序設計。⊙cpu隊列等待時間和i/o隊列等待時間的長短受計算機系統作業的影響。⊙設計者可以有限度地控制分布式資料庫系統的通信延遲時間。②存儲空間存儲空間存放程序和數據。程序包括運行的應用程序、dbms子程序、os子程序等。數據包括用戶工作區、dbms工作區、os工作區、索引緩沖區、數據緩沖區等。存儲空間分為主存空間和輔存空間。設計者只能有限度地控制主存空間,例如可指定緩沖區的分配等。但設計者能夠有效地控制輔存空間。③開銷與效率設計中還要考慮以下各種開銷,開銷增大,系統效率將下降。⊙事務開銷指從事務開始到事務結束所耗用的時間。更新事務要修改索引、重寫物理塊、進行寫校驗等操作,增加了額外的開銷。更新頻度應列為設計的考慮因素。⊙報告生成開銷指從數據輸入到有結果輸出這段時間。報告生成佔用cpu及i/o的服務時間較長。設計中要進行篩選,除去不必要的報告生成。⊙對資料庫的重組也是一項大的開銷。設計中應考慮數據量和處理頻度這兩個因數,做到避免或盡量減少重組資料庫。在物理設計階段,設計、評價、修改這個過程可能要反復多次,最終得到較為完善的物理資料庫結構說明書。建立資料庫時,dba依據物理資料庫結構說明書,使用dbms提供的工具可以進行資料庫配置。在資料庫運行時,dba監察資料庫的各項性能,根據依據物理資料庫結構說明書的准則,及時進行修正和優化操作,保證資料庫系統能夠保持高效率地運行。6.程序編制及調試在邏輯資料庫結構確定以後,應用程序設計的編制就可以和物理設計並行地展開程序模塊代碼通常先在模擬的環境下通過初步調試,然後再進行聯合調試。聯合調試的工作主要有以下幾點:資料庫應用系統的開發是一項軟體工程,本文介紹了資料庫應用系統的開發步驟(1)建立資料庫結構根據邏輯設計和物理設計的結果,用dbms提供的數據語言(ddl)編寫出資料庫的源模式,經編譯得到目標模式,執行目標模式即可建立實際的資料庫結構。(2)調試運行資料庫結構建立後,裝入試驗數據,使資料庫進入調試運行階段。運行應用程序,測試(3)裝入實際的初始數據在資料庫正式投入運行之前,還要做好以下幾項工作:(1)制定資料庫重新組織的可行方案。(2)制定故障恢復規范(3)制定系統的安全規范7.運行和維護資料庫正式投入運行後,運行維護階段的主要工作是:(1)維護資料庫的安全性與完整性。按照制定的安全規范和故障恢復規范,在系統的安全出現問題時,及時調整授權和更改密碼。及時發現系統運行時出現的錯誤,迅速修改,確保系統正常運行。把資料庫的備份和轉儲作為日常的工作,一旦發生故障,立即使用資料庫的最新備份予以恢復。(2)監察系統的性能。運用dbms提供的性能監察與分析工具,不斷地監控著系統的運行情況。當資料庫的存儲空間或響應時間等性能下降時,立即進行分析研究找出原因,並及時採取措施改進。例如,可通修改某些參數、整理碎片、調整存儲結構或重新組織資料庫等方法,使資料庫系統保持高效率地正常運作。(3)擴充系統的功能在維持原有系統功能和性能的基礎上,適應環境和需求的變化,採納用戶的合理意見,對原有系統進行擴充,增加新的功能。