數(shù)據(jù)庫(kù)技術(shù)是現(xiàn)代信息科學(xué)與技術(shù)的重要組成部分,是計(jì)算機(jī)數(shù)據(jù)處理與信息管理系統(tǒng)的核心。數(shù)據(jù)庫(kù)技術(shù)研究和解決了計(jì)算機(jī)信息處理過程中大量數(shù)據(jù)有效地組織和存儲(chǔ)的問題,在數(shù)據(jù)庫(kù)系統(tǒng)中減少數(shù)據(jù)存儲(chǔ)冗余、實(shí)現(xiàn)數(shù)據(jù)共享、保障數(shù)據(jù)安全以及高效地檢索數(shù)據(jù)和處理數(shù)據(jù)。 隨著計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)通信技術(shù)的發(fā)展,數(shù)據(jù)庫(kù)技術(shù)已成為信息社會(huì)中對(duì)大量數(shù)據(jù)進(jìn)行組織與管理的重要技術(shù)手段及軟件技術(shù),是網(wǎng)絡(luò)信息化管理系統(tǒng)的基礎(chǔ)。本章主要介紹數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用與發(fā)展、關(guān)系模型的基本概念、關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)理論及數(shù)據(jù)庫(kù)設(shè)計(jì)方法等內(nèi)容,是學(xué)習(xí)和掌握現(xiàn)代數(shù)據(jù)庫(kù)技術(shù)的基礎(chǔ)。 1.1 數(shù)據(jù)庫(kù)技術(shù)的發(fā)展與應(yīng)用 從20世紀(jì)60年代末期開始到現(xiàn)在,數(shù)據(jù)庫(kù)技術(shù)已經(jīng)發(fā)展了30多年。在這30多年的歷程中,人們?cè)跀?shù)據(jù)庫(kù)技術(shù)的理論研究和系統(tǒng)開發(fā)上都取得了輝煌的成就,而且已經(jīng)開始對(duì)新一代數(shù)據(jù)庫(kù)系統(tǒng)的深入研究。數(shù)據(jù)庫(kù)系統(tǒng)已經(jīng)成為現(xiàn)代計(jì)算機(jī)系統(tǒng)的重要組成部分。 1.1.1 數(shù)據(jù)庫(kù)技術(shù)與信息技術(shù) 信息技術(shù)(Information Technology,IT)是當(dāng)今使用頻率最高的名詞之一,它隨著計(jì)算機(jī)技術(shù)在工業(yè)、農(nóng)業(yè)以及日常生活中的廣泛應(yīng)用,已經(jīng)被越來越多的個(gè)人和企業(yè)作為自己趕超世界潮流的標(biāo)志之一。而數(shù)據(jù)庫(kù)技術(shù)則是信息技術(shù)中一個(gè)重要的支撐。沒有數(shù)據(jù)庫(kù)技術(shù),人們?cè)诤棋男畔⑹澜缰袑@得手足無措。 數(shù)據(jù)庫(kù)技術(shù)是計(jì)算機(jī)科學(xué)技術(shù)的一個(gè)重要分支。從20世紀(jì)50年代中期開始,計(jì)算機(jī)應(yīng)用從科學(xué)研究部門擴(kuò)展到企業(yè)管理及政府行政部門,人們對(duì)數(shù)據(jù)處理的要求也越來越高。1968年,世界上誕生了第一個(gè)商品化的信息管理系統(tǒng)IMS(Information Management System),從此,數(shù)據(jù)庫(kù)技術(shù)得到了迅猛發(fā)展。在互聯(lián)網(wǎng)日益被人們接受的今天,Internet又使數(shù)據(jù)庫(kù)技術(shù)、知識(shí)、技能的重要性得到了充分的放大?,F(xiàn)在數(shù)據(jù)庫(kù)已經(jīng)成為信息管理、辦公自動(dòng)化、計(jì)算機(jī)輔助設(shè)計(jì)等應(yīng)用的主要軟件工具之一,幫助人們處理各種各樣的信息數(shù)據(jù)。 1.1.2 數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用及特點(diǎn) 數(shù)據(jù)庫(kù)最初是在大公司或大機(jī)構(gòu)中用作大規(guī)模事務(wù)處理的基礎(chǔ)。后來隨著個(gè)人計(jì)算機(jī)的普及,數(shù)據(jù)庫(kù)技術(shù)被移植到PC機(jī)(Personal Computer,個(gè)人計(jì)算機(jī))上,供單用戶個(gè)人數(shù)據(jù)庫(kù)應(yīng)用。接著,由于PC機(jī)在工作組內(nèi)連成網(wǎng),數(shù)據(jù)庫(kù)技術(shù)就移植到工作組級(jí)?,F(xiàn)在,數(shù)據(jù)庫(kù)正在Internet和內(nèi)聯(lián)網(wǎng)中廣泛使用。 20世紀(jì)60年代中期,數(shù)據(jù)庫(kù)技術(shù)是用來解決文件處理系統(tǒng)問題的。當(dāng)時(shí)的數(shù)據(jù)庫(kù)處理技術(shù)還很脆弱,常常發(fā)生應(yīng)用不能提交的情況。20世紀(jì)70年代關(guān)系模型的誕生為數(shù)據(jù)庫(kù)專家提供了構(gòu)造和處理數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法,推動(dòng)了關(guān)系數(shù)據(jù)庫(kù)的發(fā)展和應(yīng)用。1979年,Ashton-Tate公司引入了微機(jī)產(chǎn)品dBase Ⅱ,并稱之為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),從此數(shù)據(jù)庫(kù)技術(shù)移植到了個(gè)人計(jì)算機(jī)上。20世紀(jì)80年代中期到后期,終端用戶開始使用局域網(wǎng)技術(shù)將獨(dú)立的計(jì)算機(jī)連接成網(wǎng)絡(luò),終端之間共享數(shù)據(jù)庫(kù),形成了一種新型的多用戶數(shù)據(jù)處理,稱為客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)結(jié)構(gòu)。現(xiàn)在,數(shù)據(jù)庫(kù)技術(shù)正在被用來同Internet技術(shù)相結(jié)合,以便在機(jī)構(gòu)內(nèi)聯(lián)網(wǎng)、部門局域網(wǎng)甚至WWW上發(fā)布數(shù)據(jù)庫(kù)數(shù)據(jù)。 1.1.3 數(shù)據(jù)庫(kù)技術(shù)發(fā)展歷史 數(shù)據(jù)模型是數(shù)據(jù)庫(kù)技術(shù)的核心和基礎(chǔ),因此,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)發(fā)展階段的劃分應(yīng)該以數(shù)據(jù)模型的發(fā)展演變作為主要依據(jù)和標(biāo)志。按照數(shù)據(jù)模型的發(fā)展演變過程,數(shù)據(jù)庫(kù)技術(shù)從開始到現(xiàn)在短短的30年中,主要經(jīng)歷了三個(gè)發(fā)展階段:第一代是網(wǎng)狀和層次數(shù)據(jù)庫(kù)系統(tǒng),第二代是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),第三代是以面向?qū)ο髷?shù)據(jù)模型為主要特征的數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)技術(shù)與網(wǎng)絡(luò)通信技術(shù)、人工智能技術(shù)、面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)、并行計(jì)算技術(shù)等相互滲透、有機(jī)結(jié)合,成為當(dāng)代數(shù)據(jù)庫(kù)技術(shù)發(fā)展的重要特征。 1. 第一代數(shù)據(jù)庫(kù)系統(tǒng) 第一代數(shù)據(jù)庫(kù)系統(tǒng)是20世紀(jì)70年代研制的層次和網(wǎng)狀數(shù)據(jù)庫(kù)系統(tǒng)。層次數(shù)據(jù)庫(kù)系統(tǒng)的典型代表是1969年IBM公司研制出的層次模型的數(shù)據(jù)庫(kù)管理系統(tǒng)IMS。20世紀(jì)60年代末70年代初,美國(guó)數(shù)據(jù)庫(kù)系統(tǒng)語言協(xié)會(huì)CODASYL(Conference on Data System Language)下屬的數(shù)據(jù)庫(kù)任務(wù)組DBTG(Data Base Task Group)提出了若干報(bào)告,被稱為DBTG報(bào)告。DBTG報(bào)告確定并建立了網(wǎng)狀數(shù)據(jù)庫(kù)系統(tǒng)的許多概念、方法和技術(shù),是網(wǎng)狀數(shù)據(jù)庫(kù)的典型代表。在DBTG思想和方法的指引下數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn)技術(shù)不斷成熟,開發(fā)了許多商品化的數(shù)據(jù)庫(kù)系統(tǒng),它們都是基于層次模型和網(wǎng)狀模型的。 可以說,層次數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)系統(tǒng)的先驅(qū),而網(wǎng)狀數(shù)據(jù)庫(kù)則是數(shù)據(jù)庫(kù)概念、方法、技術(shù)的奠基者。 2. 第二代數(shù)據(jù)庫(kù)系統(tǒng) 第二代數(shù)據(jù)庫(kù)系統(tǒng)是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。1970年IBM公司的San Jose研究試驗(yàn)室的研究員Edgar F. Codd發(fā)表了題為《大型共享數(shù)據(jù)庫(kù)數(shù)據(jù)的關(guān)系模型》的論文,提出了關(guān)系數(shù)據(jù)模型,開創(chuàng)了關(guān)系數(shù)據(jù)庫(kù)方法和關(guān)系數(shù)據(jù)庫(kù)理論,為關(guān)系數(shù)據(jù)庫(kù)技術(shù)奠定了理論基礎(chǔ)。Edgar F. Codd于1981年被授予ACM圖靈獎(jiǎng),以表彰他在關(guān)系數(shù)據(jù)庫(kù)研究方面的杰出貢獻(xiàn)。 20世紀(jì)70年代是關(guān)系數(shù)據(jù)庫(kù)理論研究和原型開發(fā)的時(shí)代,其中以IBM公司的San Jose研究試驗(yàn)室開發(fā)的System R和Berkeley大學(xué)研制的Ingres為典型代表。大量的理論成果和實(shí)踐經(jīng)驗(yàn)終于使關(guān)系數(shù)據(jù)庫(kù)從實(shí)驗(yàn)室走向了社會(huì),因此,人們把20世紀(jì)70年代稱為數(shù)據(jù)庫(kù)時(shí)代。20世紀(jì)80年代幾乎所有新開發(fā)的系統(tǒng)均是關(guān)系型的,其中涌現(xiàn)出了許多性能優(yōu)良的商品化關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),如DB2、Ingres、Oracle、Informix、Sybase等。這些商用數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用使數(shù)據(jù)庫(kù)技術(shù)日益廣泛地應(yīng)用到企業(yè)管理、情報(bào)檢索、輔助決策等方面,成為實(shí)現(xiàn)和優(yōu)化信息系統(tǒng)的基本技術(shù)。 3. 第三代數(shù)據(jù)庫(kù)系統(tǒng) 從20世紀(jì)80年代以來,數(shù)據(jù)庫(kù)技術(shù)在商業(yè)上的巨大成功刺激了其他領(lǐng)域?qū)?shù)據(jù)庫(kù)技術(shù)需求的迅速增長(zhǎng)。這些新的領(lǐng)域?yàn)閿?shù)據(jù)庫(kù)應(yīng)用開辟了新的天地,并在應(yīng)用中提出了一些新的數(shù)據(jù)管理的需求,推動(dòng)了數(shù)據(jù)庫(kù)技術(shù)的研究與發(fā)展。 1990年高級(jí)DBMS功能委員會(huì)發(fā)表了《第三代數(shù)據(jù)庫(kù)系統(tǒng)宣言》,提出了第三代數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)具有的三個(gè)基本特征: l 應(yīng)支持?jǐn)?shù)據(jù)管理、對(duì)象管理和知識(shí)管理。 l 必須保持或繼承第二代數(shù)據(jù)庫(kù)系統(tǒng)的技術(shù)。 l 必須對(duì)其他系統(tǒng)開放。 面向?qū)ο髷?shù)據(jù)模型是第三代數(shù)據(jù)庫(kù)系統(tǒng)的主要特征之一;數(shù)據(jù)庫(kù)技術(shù)與多學(xué)科技術(shù)的有機(jī)結(jié)合也是第三代數(shù)據(jù)庫(kù)技術(shù)的一個(gè)重要特征。分布式數(shù)據(jù)庫(kù)、并行數(shù)據(jù)庫(kù)、工程數(shù)據(jù)庫(kù)、演繹數(shù)據(jù)庫(kù)、知識(shí)庫(kù)、多媒體庫(kù)、模糊數(shù)據(jù)庫(kù)等都是這方面的實(shí)例。 1.1.4 數(shù)據(jù)庫(kù)系統(tǒng)訪問技術(shù) 目前訪問數(shù)據(jù)庫(kù)服務(wù)器的主流標(biāo)準(zhǔn)接口主要有ODBC、OLE DB和ADO。下面分別對(duì)這三種接口進(jìn)行概要介紹。 1. 開放數(shù)據(jù)庫(kù)連接(ODBC) 開放數(shù)據(jù)庫(kù)連接(Open Database Connectivity,ODBC)是由Microsoft公司定義的一種數(shù)據(jù)庫(kù)訪問標(biāo)準(zhǔn)。使用ODBC應(yīng)用程序不僅可以訪問存儲(chǔ)在本地計(jì)算機(jī)的桌面型數(shù)據(jù)庫(kù)中的數(shù)據(jù),而且可以訪問異構(gòu)平臺(tái)上的數(shù)據(jù)庫(kù),例如可以訪問SQL Server、Oracle、Informix或DB2構(gòu)建的數(shù)據(jù)庫(kù)等。 ODBC是一種重要的訪問數(shù)據(jù)庫(kù)的應(yīng)用程序編程接口(Application Programming Interface,API),基于標(biāo)準(zhǔn)的SQL語句,它的核心就是SQL語句,因此,為了通過ODBC訪問數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器必須支持SQL語句。 ODBC通過一組標(biāo)準(zhǔn)的函數(shù)(ODBC API)調(diào)用來實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問,但是程序員不必理解這些ODBC,API就可以輕松開發(fā)基于ODBC的客戶機(jī)/服務(wù)器應(yīng)用程序。這是因?yàn)樵诤芏嗔餍械某绦蜷_發(fā)語言中,如Visual Basic、PowerBuilder、Visual C++等,都提供了封裝ODBC各種標(biāo)準(zhǔn)函數(shù)的代碼層,開發(fā)人員可以直接使用這些標(biāo)準(zhǔn)函數(shù)。 ODBC獲得了巨大成功并大大簡(jiǎn)化了一些數(shù)據(jù)庫(kù)開發(fā)工作。但是它也存在嚴(yán)重的不足,因此Microsoft公司又開發(fā)了OLE DB。 2. OLE DB OLE DB是Microsoft公司提供的關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)級(jí)程序的接口(System-Level Programming Interface),是Microsoft公司數(shù)據(jù)庫(kù)訪問的基礎(chǔ)。OLE DB實(shí)際上是Microsoft公司OLE對(duì)象標(biāo)準(zhǔn)的一個(gè)實(shí)現(xiàn)。OLE DB對(duì)象本身是COM(組件對(duì)象模型)對(duì)象并支持這種對(duì)象的所有必需的接口。 一般說來,OLE DB提供了兩種訪問數(shù)據(jù)庫(kù)的方法:一種是通過ODBC驅(qū)動(dòng)器訪問支持SQL語言的數(shù)據(jù)庫(kù)服務(wù)器;另一種是直接通過原始的OLE DB提供程序。因?yàn)镺DBC只適用于支持SQL語言的數(shù)據(jù)庫(kù),因此ODBC的使用范圍過于狹窄,目前Microsoft公司正在逐步用OLE DB來取代ODBC。 因?yàn)镺LE DB是一個(gè)面向?qū)ο蟮慕涌?,特別適合于面向?qū)ο笳Z言。然而,許多數(shù)據(jù)庫(kù)應(yīng)用開發(fā)者使用VBScript和JScript等腳本語言開發(fā)程序,所以Microsoft公司在OLE DB對(duì)象的基礎(chǔ)上定義了ADO。 3. 動(dòng)態(tài)數(shù)據(jù)對(duì)象(ADO) 動(dòng)態(tài)數(shù)據(jù)對(duì)象(Active Data Objects,ADO)是一種簡(jiǎn)單的對(duì)象模型,可以被開發(fā)者用來處理任何OLE DB數(shù)據(jù),可以由腳本語言或高級(jí)語言調(diào)用。ADO對(duì)數(shù)據(jù)庫(kù)提供了應(yīng)用程序水平級(jí)的接口(Application-Level Programming Interface),幾乎使用任何語言的程序員都能夠通過使用ADO來使用OLE DB的功能。Microsoft公司聲稱,ADO將替換其他的數(shù)據(jù)訪問方式,所以ADO對(duì)于任何使用Microsoft公司產(chǎn)品的數(shù)據(jù)庫(kù)應(yīng)用是至關(guān)重要的。 1.1.5 網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng)編程技術(shù) 在當(dāng)今網(wǎng)絡(luò)盛行的年代,數(shù)據(jù)庫(kù)與Web技術(shù)的結(jié)合正在深刻改變著網(wǎng)絡(luò)應(yīng)用。有了數(shù)據(jù)庫(kù)的支持,擴(kuò)展網(wǎng)頁(yè)功能、設(shè)計(jì)交互式頁(yè)面、構(gòu)造功能強(qiáng)大的后臺(tái)管理系統(tǒng)、更新網(wǎng)站和維護(hù)網(wǎng)站都將變得輕而易舉。隨著網(wǎng)絡(luò)應(yīng)用的深入,Web數(shù)據(jù)庫(kù)技術(shù)將日益顯示出其重要地位。在這里簡(jiǎn)單介紹一下Web數(shù)據(jù)庫(kù)開發(fā)的相關(guān)技術(shù)。 1. 通用網(wǎng)關(guān)接口(CGI)編程 通用網(wǎng)關(guān)接口(Common Gateway Interface,CGI)是一種通信標(biāo)準(zhǔn),它的任務(wù)是接受客戶端的請(qǐng)求,經(jīng)過辨認(rèn)和處理,生成HTML文檔并重新傳回到客戶端。這種交流過程的編程就叫做CGI編程。CGI可以運(yùn)行在多種平臺(tái)上,具有強(qiáng)大的功能,可以使用多種語言編程,如Visual Basic、Visual C++、Tcl、Perl、AppletScript等,比較常見的是用Perl語言編寫的CGI程序。但是CGI也有其致命的弱點(diǎn),即速度慢和安全性差等。 2. 動(dòng)態(tài)服務(wù)器頁(yè)面(ASP) 動(dòng)態(tài)服務(wù)器頁(yè)面(Active Server Pages,ASP)是Microsoft公司推出的一種用以取代CGI的技術(shù),是一種真正簡(jiǎn)便易學(xué)、功能強(qiáng)大的服務(wù)器編程技術(shù)。ASP實(shí)際上是Microsoft公司開發(fā)的一套服務(wù)器端腳本運(yùn)行環(huán)境,通過ASP可以建立動(dòng)態(tài)的、交互的、高效的Web服務(wù)器應(yīng)用程序。用ASP編寫的程序都在服務(wù)器端執(zhí)行,程序執(zhí)行完畢后,再將執(zhí)行的結(jié)果返回給客戶端瀏覽器,這樣不僅減輕了客戶端瀏覽器的負(fù)擔(dān),大大提高了交互速度,而且避免了ASP程序源代碼的外泄,提高了程序的安全性。 3. Java 服務(wù)器頁(yè)面(JSP) Java服務(wù)器頁(yè)面(Java Server Pages,JSP)是Sun公司發(fā)布的Web應(yīng)用程序開發(fā)技術(shù),一經(jīng)推出,就受到了人們的廣泛關(guān)注。JSP技術(shù)為創(chuàng)建高度動(dòng)態(tài)的Web應(yīng)用程序提供了一個(gè)獨(dú)特的開發(fā)環(huán)境,它能夠適用于市場(chǎng)上大多數(shù)的服務(wù)器產(chǎn)品。 JSP使用Java語言編寫服務(wù)器端程序,當(dāng)客戶端向服務(wù)器發(fā)出請(qǐng)求時(shí),JSP源程序被編譯成Servlet并由Java虛擬機(jī)執(zhí)行。這種編譯操作僅在對(duì)JSP頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。因此,JSP程序能夠提供更快的交互速度,其安全性和跨平臺(tái)性也很優(yōu)秀。 |
|