數(shù)據(jù)庫(kù)的發(fā)展方向_第1頁(yè)
數(shù)據(jù)庫(kù)的發(fā)展方向_第2頁(yè)
數(shù)據(jù)庫(kù)的發(fā)展方向_第3頁(yè)
數(shù)據(jù)庫(kù)的發(fā)展方向_第4頁(yè)
數(shù)據(jù)庫(kù)的發(fā)展方向_第5頁(yè)
已閱讀5頁(yè),還剩117頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、121/122摘 要本系統(tǒng)要緊完成對(duì)圖書(shū)倉(cāng)庫(kù)的庫(kù)存治理,包括圖書(shū)入庫(kù)、出庫(kù)、庫(kù)存,職員信息,供應(yīng)商信息以及密碼治理等六個(gè)方面。系統(tǒng)能夠完成對(duì)各類(lèi)信息的掃瞄、查詢(xún)、添加、刪除、修改、報(bào)表等功能。系統(tǒng)的核心是入庫(kù)、庫(kù)存和出庫(kù)三者之間的聯(lián)系,每一個(gè)表的修改都將聯(lián)動(dòng)的阻礙其它的表,當(dāng)完成入庫(kù)或出庫(kù)操作時(shí)系統(tǒng)會(huì)自動(dòng)地完成庫(kù)存的修改。查詢(xún)功能也是系統(tǒng)的核心之一,在系統(tǒng)中即有單條件查詢(xún)和多條件查詢(xún),也有精確查詢(xún)和模糊查詢(xún),系統(tǒng)不僅有靜態(tài)的條件查詢(xún),也有動(dòng)態(tài)生成的條件查詢(xún),其目的差不多上為了方便用戶(hù)使用。系統(tǒng)有完整的用戶(hù)添加、刪除和密碼修改功能,并具備報(bào)表打印功能。系統(tǒng)采納Microsoft Office中的

2、Access 2000來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),并使用當(dāng)前優(yōu)秀的開(kāi)發(fā)工具Delphi 6.0 ,它有著最為靈活的數(shù)據(jù)庫(kù)結(jié)構(gòu),對(duì)數(shù)據(jù)庫(kù)應(yīng)用有著良好的支持。論文要緊介紹了本課題的開(kāi)發(fā)背景,所要完成的功能和開(kāi)發(fā)的過(guò)程。重點(diǎn)的講明了系統(tǒng)設(shè)計(jì)的重點(diǎn)、設(shè)計(jì)思想、難點(diǎn)技術(shù)和解決方案。關(guān)鍵字:數(shù)據(jù)庫(kù),SQL語(yǔ)言,Delph 6,數(shù)據(jù)庫(kù)組件,倉(cāng)庫(kù)治理目 錄第一章 引言 11.1 課題來(lái)源 11.2 開(kāi)發(fā)工具的選擇 21.3 所做的要緊工作 3第二章 數(shù)據(jù)庫(kù)概論 42.1 數(shù)據(jù)庫(kù)的進(jìn)展 4 2.1.1 數(shù)據(jù)庫(kù)的進(jìn)展 4 2.1.2 數(shù)據(jù)庫(kù)時(shí)期的特點(diǎn) 5 2.1.3 數(shù)據(jù)庫(kù)技術(shù) 62.2 數(shù)據(jù)庫(kù)理論基礎(chǔ) 7 2.2.1 數(shù)據(jù)庫(kù)

3、模型 7 2.2.2 數(shù)據(jù)庫(kù)體系結(jié)構(gòu) 10 2.2.3 數(shù)據(jù)的獨(dú)立性 11 2.2.4 范式 112.3 SQL語(yǔ)言基礎(chǔ) 13 2.3.1 SQL簡(jiǎn)介 13 2.3.2 SQL查詢(xún) 13 2.3.3 SQL數(shù)據(jù)更新 14第三章數(shù)據(jù)庫(kù)開(kāi)發(fā)工具 163.1 Delphi 6.0 簡(jiǎn)介 163.2 Delphi 6.0 控件 173.2.1 ADO數(shù)據(jù)訪問(wèn)組件 17 3.2.2 數(shù)據(jù)操縱類(lèi)DataControl 18 3.2.3 數(shù)據(jù)訪問(wèn)類(lèi)DataAccess 18 3.2.4 SQL語(yǔ)言在Delphi中的應(yīng)用 193.3 Access 簡(jiǎn)介 21第四章 系統(tǒng)總體設(shè)計(jì) 234.1 系統(tǒng)需求分析 23

4、4.2 系統(tǒng)概要設(shè)計(jì) 25 4.2.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 25 4.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 27 ER圖設(shè)計(jì) 27 數(shù)據(jù)庫(kù)表格設(shè)計(jì)294.3系統(tǒng)詳細(xì)設(shè)計(jì)34第五章 系統(tǒng)應(yīng)用程序設(shè)計(jì) 375.1 系統(tǒng)窗體模塊組成375.2 數(shù)據(jù)模塊窗體設(shè)置385.3 主窗體功能模塊的實(shí)現(xiàn)395.4 入庫(kù)、出庫(kù)窗體模塊的實(shí)現(xiàn)435.5 查詢(xún)功能的實(shí)現(xiàn)515.6 系統(tǒng)登陸窗體模塊的實(shí)現(xiàn)525.7 用戶(hù)治理功能的實(shí)現(xiàn)54 5.7.1 用戶(hù)治理主窗體 545.7.2 密碼修改窗體模塊的實(shí)現(xiàn) 54 5.7.3 用戶(hù)注冊(cè)窗體模塊的實(shí)現(xiàn) 55 5.7.4 用戶(hù)注銷(xiāo)窗體模塊的實(shí)現(xiàn) 57結(jié)束語(yǔ) 59致謝 60參考文獻(xiàn) 61 第一章 引

5、言 1.1 課題來(lái)源隨著社會(huì)經(jīng)濟(jì)的迅速進(jìn)展和科學(xué)技術(shù)的全面進(jìn)步,計(jì)算機(jī)事業(yè)的飛速進(jìn)展,以計(jì)算機(jī)與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃進(jìn)展的時(shí)期。隨著經(jīng)濟(jì)文化水平的顯著提高,人們對(duì)生活質(zhì)量及工作環(huán)境的要求也越來(lái)越高。書(shū)籍做為人類(lèi)的精神食糧,在現(xiàn)代社會(huì)中越來(lái)越受到重視,大量的書(shū)籍出現(xiàn)在市場(chǎng)上,人們有了各種各樣不同的選擇。與此同時(shí),為了治理大量的圖書(shū),圖書(shū)倉(cāng)庫(kù)也大量的出現(xiàn),倉(cāng)庫(kù)的治理問(wèn)題也就提上了日程。隨著圖書(shū)的大量增加,其治理難度也越來(lái)越大,如何優(yōu)化倉(cāng)庫(kù)的日常治理也就成為了一個(gè)大眾化的課題。在計(jì)算機(jī)飛速進(jìn)展的今天,將計(jì)算機(jī)這一信息處理利器應(yīng)用于倉(cāng)庫(kù)的日常治理已是勢(shì)必所然,而且這也將為倉(cāng)庫(kù)治理帶來(lái)前所

6、未有的改變,它能夠帶來(lái)意想不到的效益,同時(shí)也會(huì)為企業(yè)的飛速進(jìn)展提供無(wú)限潛力。采納計(jì)算機(jī)治理信息系統(tǒng)已成為倉(cāng)庫(kù)治理科學(xué)化和現(xiàn)代化的重要標(biāo)志,它給企業(yè)治理來(lái)了明顯的經(jīng)濟(jì)效益和社會(huì)效益。要緊體現(xiàn)在:極大提高了倉(cāng)庫(kù)工作人員的工作效率,大大減少了以往入出存流程繁瑣,雜亂,周期長(zhǎng)的弊端。基于倉(cāng)庫(kù)治理的全面自動(dòng)化,能夠減少入庫(kù)治理、出庫(kù)治理及庫(kù)存治理中的漏洞,能夠節(jié)約許多治理開(kāi)支,增加企業(yè)收入。倉(cāng)庫(kù)的治理的操作自動(dòng)化和信息的電子化,全面提高了倉(cāng)庫(kù)的治理水平。隨著我國(guó)改革開(kāi)放的不斷深入,經(jīng)濟(jì)飛速的進(jìn)展,企業(yè)要想生存、進(jìn)展,要想在激烈的市場(chǎng)競(jìng)爭(zhēng)中立于不敗之地,沒(méi)有現(xiàn)代化的治理是萬(wàn)萬(wàn)不行的,倉(cāng)庫(kù)治理的全面自動(dòng)化、

7、信息化則是其中極其重要的部分。為了加快倉(cāng)庫(kù)治理自動(dòng)化的步伐,提高倉(cāng)庫(kù)的治理業(yè)務(wù)處理效率,建立倉(cāng)庫(kù)治理系統(tǒng)已變得十分心要。入庫(kù)、庫(kù)存、出庫(kù)依舊現(xiàn)在企業(yè)圖書(shū)倉(cāng)庫(kù)治理的常規(guī)差不多模式,盡管,最近又出現(xiàn)了專(zhuān)門(mén)多新的治理模式,如:基于零庫(kù)存思想的沃爾瑪特治理方式,但這些新的思想在中國(guó)大部分企業(yè)的治理中依舊難以實(shí)現(xiàn)的。因此如何設(shè)計(jì)好倉(cāng)庫(kù)治理系統(tǒng),盡可能地減少倉(cāng)庫(kù)治理的重復(fù)性和低效性就成為當(dāng)前最為重要的問(wèn)題。圖書(shū)倉(cāng)庫(kù)治理的核心是入庫(kù)、庫(kù)存和出庫(kù)之間的聯(lián)系,如何處理好三者之間的關(guān)系是系統(tǒng)最為關(guān)鍵的部分。另外,職員信息和供應(yīng)商信息治理也是倉(cāng)庫(kù)治理中一個(gè)必不可少的部分,它提供著與入庫(kù)和出庫(kù)相關(guān)的地一些信息,使得整

8、個(gè)系統(tǒng)更加完整,更加有用。通過(guò)對(duì)倉(cāng)庫(kù)治理日常工作的詳細(xì)調(diào)查,搜集了大量的資料,從系統(tǒng)結(jié)構(gòu)的組織,功能的實(shí)現(xiàn),技術(shù)的要求以及可行性等多方面進(jìn)行考慮,認(rèn)為本課題是一個(gè)適應(yīng)現(xiàn)今圖書(shū)倉(cāng)庫(kù)治理需求的計(jì)算機(jī)信息治理系統(tǒng),具有一定的實(shí)際開(kāi)發(fā)價(jià)值和使用價(jià)值。1.2 開(kāi)發(fā)工具的選擇自Java誕生以來(lái),隨著Internet技術(shù)的普及和應(yīng)用需求的變化,以第四代語(yǔ)言為主的應(yīng)用開(kāi)發(fā)產(chǎn)品發(fā)生了較大的變化,它們不僅已成為人們開(kāi)發(fā)應(yīng)用的開(kāi)發(fā)工具,而且專(zhuān)門(mén)多產(chǎn)品已進(jìn)展成為一種強(qiáng)有力的應(yīng)用開(kāi)發(fā)環(huán)境。這些新型的開(kāi)發(fā)工具通常以一種集成軟件包的形式提供給開(kāi)發(fā)人員,被稱(chēng)為Studio(工作室)或Suite(程序組)。例如,微軟的Visu

9、al Studio 6.0,Borland公司的Delphi 6.0等數(shù)據(jù)庫(kù)輔助開(kāi)發(fā)工具。 現(xiàn)在,市場(chǎng)上能夠選購(gòu)的應(yīng)用開(kāi)發(fā)產(chǎn)品專(zhuān)門(mén)多,流行的也有數(shù)十種。目前在我國(guó)市場(chǎng)上最為流行、使用最多、最為先進(jìn)的可用作企業(yè)級(jí)開(kāi)發(fā)工具的產(chǎn)品有:Microsoft公司的Visual Basic 6.0版Microsoft公司的Visual C+6.0版Borland公司的Delphi 6.0版在目前市場(chǎng)上這些眾多的程序開(kāi)發(fā)工具中,有些強(qiáng)調(diào)程語(yǔ)言的彈性與執(zhí)行效率;有些則偏重于可視化程序開(kāi)發(fā)工具所帶來(lái)的便利性與效率的得高,各有各的優(yōu)點(diǎn)和特色,也滿(mǎn)足了不同用戶(hù)的需求。然而,語(yǔ)言的彈性和工具的便利性是密不可分的,只有便

10、利的工具,卻沒(méi)有彈性的語(yǔ)言作支持,許多專(zhuān)門(mén)化的處理動(dòng)作必需要耗費(fèi)數(shù)倍的工夫來(lái)處理,使得原來(lái)所標(biāo)榜的效率提高的優(yōu)點(diǎn)失去了作用;相反,假如只強(qiáng)調(diào)程語(yǔ)言的彈性,卻沒(méi)有便利的工具作配合,會(huì)使一些即使特不簡(jiǎn)單的界面處理動(dòng)作,也會(huì)嚴(yán)峻地白費(fèi)程序設(shè)計(jì)師的寶貴時(shí)刻。而Delphi是一個(gè)特不理想選擇。Delphi 6 是操作系統(tǒng)中快速應(yīng)用開(kāi)發(fā)環(huán)境的最新版本。它也是當(dāng)前Windows平臺(tái)上第一個(gè)全面支持最新Web服務(wù)的快速開(kāi)發(fā)工具。不管是企業(yè)級(jí)用戶(hù),依舊個(gè)人開(kāi)發(fā)者,都能夠利用Delphi 6 輕松、快捷地構(gòu)建新一代電子商務(wù)應(yīng)用。Delphi 6 是惟一支持所有新出現(xiàn)的工業(yè)標(biāo)準(zhǔn)的RAD環(huán)境,包括XML(擴(kuò)展標(biāo)記語(yǔ)言

11、)/XSL(可擴(kuò)展樣式語(yǔ)言),SOAP(簡(jiǎn)單對(duì)象存取協(xié)議)和WSDL(Web服務(wù)器描述語(yǔ)言)等。Delphi 6 是可視化的快速應(yīng)用程序開(kāi)發(fā)語(yǔ)言,它提供了可視化的集成開(kāi)發(fā)環(huán)境,這一環(huán)境為應(yīng)用程序設(shè)計(jì)人員提供了一系列靈活而先進(jìn)的工具,能夠廣泛地用于種類(lèi)應(yīng)用程序設(shè)計(jì)。在Delphi 6 的集成開(kāi)發(fā)環(huán)境中,用戶(hù)能夠設(shè)計(jì)程序代碼、運(yùn)行程序、進(jìn)行程序錯(cuò)誤的調(diào)試等,可視化的開(kāi)發(fā)方法降低了應(yīng)用程序開(kāi)發(fā)的難度。Delphi的基礎(chǔ)編程語(yǔ)言是具有面向?qū)ο筇匦缘腜ascal語(yǔ)言,即Object Pascal 。Object Pascal具有代碼穩(wěn)定、可讀性好、編譯速度快等優(yōu)點(diǎn),并將面向?qū)ο蟮母拍钜浦驳搅薖ascal

12、語(yǔ)言中,使這種基礎(chǔ)語(yǔ)言有了新的進(jìn)展空間。使用Delphi 6.0 ,我們幾乎能夠作任何情況,還能夠撰寫(xiě)種各種類(lèi)型的應(yīng)用程序,動(dòng)態(tài)鏈接庫(kù)(DLL)、CON、或CORBA對(duì)象,CGI/ISAPI程序,Microsoft Back Office應(yīng)用程序。程序的規(guī)模小到簡(jiǎn)單的個(gè)人數(shù)據(jù)庫(kù)應(yīng)用,大到復(fù)雜的企業(yè)的多層次分布式系統(tǒng),都能夠使用Delphi進(jìn)行開(kāi)發(fā),其友好的集成開(kāi)發(fā)界面,可視化的雙向開(kāi)發(fā)模式,良好的數(shù)據(jù)庫(kù)應(yīng)用支持高效的程序開(kāi)發(fā)和程序運(yùn)行,備受寬敞程序開(kāi)發(fā)人員的好評(píng)。尤其是Delphi對(duì)數(shù)據(jù)庫(kù)應(yīng)用的強(qiáng)大支持,大大提高了數(shù)據(jù)庫(kù)應(yīng)用軟件開(kāi)發(fā)的效率,縮短了開(kāi)發(fā)周期,深受寬敞數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)人員的喜愛(ài)。

13、Delphi為數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員提供了豐富的數(shù)據(jù)庫(kù)開(kāi)發(fā)組件,使數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)功能更強(qiáng)大,操縱更靈活,編譯后的程序運(yùn)行速度更快。1.3 本文所做工作引言部分介紹了本系統(tǒng)的課題來(lái)源以及對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)工具的選擇。第二章介紹了數(shù)據(jù)庫(kù)的進(jìn)展,關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)體系結(jié)構(gòu),并系統(tǒng)介紹了SQL語(yǔ)言,為設(shè)計(jì)和理解應(yīng)用程序做了鋪墊。第三章系統(tǒng)介紹了Delphi 6.0及其部分控件,SQL語(yǔ)言在Delphi 6.0中的應(yīng)用,以及Access等。第四章是本文的主體,按照軟件工程的要求,從需求分析開(kāi)始,通過(guò)概要設(shè)計(jì)最后到詳細(xì)設(shè)計(jì),完成對(duì)整個(gè)系統(tǒng)的設(shè)計(jì)。第五章依照第四章的設(shè)計(jì)結(jié)果利用Access 2000和Delphi 6

14、.0進(jìn)行了具體的窗體和應(yīng)用程序設(shè)計(jì)。總結(jié)部分介紹了設(shè)計(jì)體會(huì)和編程體會(huì),并指出了系統(tǒng)設(shè)計(jì)中的不足和改進(jìn)的方向 第二章 數(shù)據(jù)庫(kù)概論2.1 數(shù)據(jù)庫(kù)的進(jìn)展數(shù)據(jù)庫(kù)處理在信息系統(tǒng)的研究中一直是特不重要的主題,然而,近年來(lái),隨著World Wide Web(WWW)的猛增及Internet技術(shù)的迅速進(jìn)展,使得數(shù)據(jù)庫(kù)技術(shù)之時(shí)成為最熱門(mén)技術(shù)之一。數(shù)據(jù)庫(kù)技術(shù)能使Internet應(yīng)用超越具有早期應(yīng)用特點(diǎn)的簡(jiǎn)單的公布。同時(shí),Internet技術(shù)提供了一種向用戶(hù)公布數(shù)據(jù)庫(kù)內(nèi)容的標(biāo)準(zhǔn)化的訪問(wèn)方法。這些技術(shù)沒(méi)有脫離經(jīng)典數(shù)據(jù)庫(kù)技術(shù)的要求。它們只是加重了數(shù)據(jù)庫(kù)技術(shù)的重要性。數(shù)據(jù)庫(kù)的設(shè)計(jì)和開(kāi)發(fā)及包括藝術(shù)有包括工程。理解用戶(hù)的需求

15、,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫(kù)設(shè)計(jì)是一個(gè)藝術(shù)過(guò)程。把設(shè)計(jì)轉(zhuǎn)變?yōu)閷?shí)際的數(shù)據(jù)庫(kù),同時(shí)這些數(shù)據(jù)庫(kù)帶有功能完備、高效能的應(yīng)用,是一個(gè)工程過(guò)程。數(shù)據(jù)庫(kù)的目的是關(guān)心人們跟蹤事務(wù)。經(jīng)典的數(shù)據(jù)庫(kù)應(yīng)用涉及諸如訂單、顧客、工作、職員、學(xué)生、電話(huà)之類(lèi)的項(xiàng),或其它數(shù)據(jù)量較大、需要密起關(guān)注的事務(wù)。最近,由于數(shù)據(jù)庫(kù)的普及,數(shù)據(jù)庫(kù)技術(shù)差不多被應(yīng)用到了新的領(lǐng)域,諸如用于Internet的數(shù)據(jù)庫(kù)或用于公司內(nèi)聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)也被越來(lái)越多地應(yīng)用于生成和維護(hù)多媒體應(yīng)用程序上。計(jì)算機(jī)的數(shù)據(jù)處理應(yīng)用,首先要把大量的信息以數(shù)據(jù)形式存放在存儲(chǔ)器中。存儲(chǔ)器的容量、存儲(chǔ)速率直接阻礙到數(shù)據(jù)治理技術(shù)的進(jìn)展。從1956年生產(chǎn)出第一臺(tái)計(jì)算機(jī)到現(xiàn)在

16、,存儲(chǔ)器的進(jìn)展,為數(shù)據(jù)庫(kù)技術(shù)提供了良好的物質(zhì)基礎(chǔ)。使用計(jì)算機(jī)以后,數(shù)據(jù)處理的速度和規(guī)模,不管是相關(guān)于手工方式,依舊機(jī)械方式,都有無(wú)可比擬的優(yōu)勢(shì)。通常在數(shù)據(jù)處理中,計(jì)確實(shí)是比較簡(jiǎn)單的而數(shù)據(jù)的治理卻比較復(fù)雜。數(shù)據(jù)治理是指數(shù)據(jù)的收集、整理、組織、存儲(chǔ)、維護(hù)、檢索、傳送等操作,這部分操作是數(shù)據(jù)處理業(yè)務(wù)的差不多環(huán)節(jié),而且是任何數(shù)據(jù)處理業(yè)務(wù)中必不可少的共有部分。數(shù)據(jù)治理技術(shù)的優(yōu)劣,將直接阻礙數(shù)據(jù)處理的效率。2.1.1 數(shù)據(jù)庫(kù)的進(jìn)展數(shù)據(jù)治理技術(shù)的進(jìn)展,與硬件(要緊是外存)、軟件、計(jì)算機(jī)應(yīng)用的范圍有緊密的聯(lián)系。數(shù)據(jù)治理技術(shù)的進(jìn)展通過(guò)三個(gè)時(shí)期:人工治理時(shí)期、文件系統(tǒng)時(shí)期和數(shù)據(jù)庫(kù)時(shí)期。人工治理時(shí)期和文件系統(tǒng)時(shí)期都

17、有著相當(dāng)多的缺陷,諸如數(shù)據(jù)冗余性 ,數(shù)據(jù)不一致性以及數(shù)據(jù)聯(lián)系弱等等。也正是由于這些緣故,促使人們研究新的數(shù)據(jù)治理技術(shù),從而產(chǎn)生了數(shù)據(jù)庫(kù)技術(shù)。20世紀(jì)60年代末發(fā)生的三件大事,層次模型IMS系統(tǒng)的推出、關(guān)于網(wǎng)狀模型DBTG報(bào)告的發(fā)表以及關(guān)于關(guān)系模型論文的連續(xù)發(fā)表標(biāo)志著數(shù)據(jù)治理技術(shù)進(jìn)入數(shù)據(jù)庫(kù)時(shí)期。進(jìn)入70年代以后,數(shù)據(jù)庫(kù)技術(shù)得到迅速進(jìn)展,開(kāi)發(fā)了許多有效的產(chǎn)品并投入運(yùn)行。數(shù)據(jù)庫(kù)系統(tǒng)克服了文件系統(tǒng)的缺陷,提供了對(duì)數(shù)據(jù)更高級(jí)更有效的治理。當(dāng)進(jìn)入數(shù)據(jù)庫(kù)時(shí)期后,隨著數(shù)據(jù)治理規(guī)模一再擴(kuò)大,數(shù)據(jù)量急劇增加,為了提高效率,開(kāi)始時(shí),人們只是對(duì)文件系統(tǒng)加以擴(kuò)充,在應(yīng)用文件中建立了許多輔助索引,形成倒排文件系統(tǒng)。但這并

18、不能最終解決問(wèn)題。在20世紀(jì)60年代末,磁盤(pán)技術(shù)取得重要進(jìn)展,具有數(shù)百兆容量和快速存取的磁盤(pán)陸續(xù)進(jìn)入市場(chǎng),成本也不高,為數(shù)據(jù)庫(kù)技術(shù)的產(chǎn)生提供了良好的物質(zhì)條件。2.1.2 數(shù)據(jù)庫(kù)時(shí)期的特點(diǎn)(1)減少數(shù)據(jù)的重復(fù)(Redundancy can be reduced)當(dāng)在一個(gè)非數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)中,每一個(gè)應(yīng)用程序都有屬于他們自己的文件,由于無(wú)法有系統(tǒng)建立的數(shù)據(jù),因此常常會(huì)造成存儲(chǔ)數(shù)據(jù)的重復(fù)與白費(fèi)。例如:在一家公司當(dāng)中,人事治理程序與工資治理程序或許都會(huì)使用到職員與部門(mén)的信息或文件,而我們能夠運(yùn)用數(shù)據(jù)庫(kù)的方法,把這兩個(gè)文件整理起來(lái),以減少多余的數(shù)據(jù),過(guò)度地占用存儲(chǔ)空間。(2)幸免數(shù)據(jù)的不一致(Inconsis

19、tency can avoid)本項(xiàng)的特色,能夠講是延伸前項(xiàng)的一個(gè)特點(diǎn),要講明如此的一個(gè)現(xiàn)象,我們能夠從下面那個(gè)實(shí)例來(lái)看:若是在同一家公司當(dāng)中,職員甲在策劃部門(mén)工作,且職員甲的記錄同時(shí)被存放在數(shù)據(jù)庫(kù)的兩個(gè)地點(diǎn),而數(shù)據(jù)庫(kù)治理系統(tǒng)卻沒(méi)有對(duì)如此重要的情況加以操縱,當(dāng)其中一條數(shù)據(jù)庫(kù)被修改時(shí),便會(huì)造成數(shù)據(jù)的不一致,然而,關(guān)于一個(gè)健全的數(shù)據(jù)庫(kù)治理系統(tǒng)而言,將會(huì)對(duì)如此的情況加以操縱,但有時(shí)并不需要刻意消除這種情形,應(yīng)當(dāng)視該數(shù)據(jù)庫(kù)的需求與效率來(lái)決定。 (3)數(shù)據(jù)共享(Data shared)關(guān)于數(shù)據(jù)共享的意義,并不是只有針對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)的應(yīng)用程序,能夠使用數(shù)據(jù)庫(kù)中的數(shù)據(jù),關(guān)于其他撰寫(xiě)好的應(yīng)用程序,同樣能夠?qū)ο嗤?/p>

20、數(shù)據(jù)庫(kù)當(dāng)中的數(shù)據(jù)進(jìn)行處理,進(jìn)而達(dá)到數(shù)據(jù)共享的目的。(4)強(qiáng)化數(shù)據(jù)的標(biāo)準(zhǔn)化(Standard can be enforced)由數(shù)據(jù)庫(kù)治理系統(tǒng),對(duì)數(shù)據(jù)做出統(tǒng)籌性的治理,關(guān)于數(shù)據(jù)的格式與一些存儲(chǔ)上的標(biāo)準(zhǔn)進(jìn)行操縱,如此一來(lái),關(guān)于不同的環(huán)境的數(shù)據(jù)交換(Data Interchange)上將有專(zhuān)門(mén)大的關(guān)心,也能提高數(shù)據(jù)處理的效率。(5)實(shí)踐安全性的治理(Security restriction can be applied)通過(guò)對(duì)數(shù)據(jù)庫(kù)完整的權(quán)限操縱,數(shù)據(jù)庫(kù)治理者能夠確認(rèn)所有可供用戶(hù)存取數(shù)據(jù)的合法途徑渠道,同時(shí)能夠事先對(duì)一些較重要或關(guān)鍵性的數(shù)據(jù)進(jìn)行安全檢查,以確保數(shù)據(jù)存取時(shí),能夠?qū)⑷魏尾划?dāng)損毀的情形降至

21、最低。(6)完整性的維護(hù)(Integrity can be maintained)所謂完整性的問(wèn)題,確實(shí)是要確認(rèn)某條數(shù)據(jù)在數(shù)據(jù)庫(kù)當(dāng)中,是正確無(wú)誤的。正如(2)所述,若是無(wú)法操縱數(shù)據(jù)的不一致性,便會(huì)產(chǎn)生完整性不足的問(wèn)題,因此,我們會(huì)發(fā)覺(jué),當(dāng)數(shù)據(jù)重復(fù)性高的時(shí)候,數(shù)據(jù)不完整的情形也會(huì)增加,因此,若是數(shù)據(jù)庫(kù)的功能完整,將會(huì)大大地提高數(shù)據(jù)完整性,也會(huì)增加數(shù)據(jù)庫(kù)的維護(hù)能力與維護(hù)簡(jiǎn)便性。(7)需求沖突會(huì)獲得平衡(Conflicting requirements can be balance)在一個(gè)較大型的企業(yè)當(dāng)中,用戶(hù)不同的需求,往往會(huì)造成系統(tǒng)或數(shù)據(jù)庫(kù)在設(shè)計(jì)上的困擾,然而一個(gè)合適的數(shù)據(jù)庫(kù)系統(tǒng),能夠通過(guò)數(shù)據(jù)庫(kù)

22、治理員的治理,將會(huì)有效地整理各方面的信息,關(guān)于一些較重要的應(yīng)用程序,能夠適時(shí)地提供較快速的數(shù)據(jù)存取方法與格式,以平衡多個(gè)用戶(hù)在需求上的沖突。上述七個(gè)方面構(gòu)成了數(shù)據(jù)庫(kù)系統(tǒng)的要緊特征。那個(gè)時(shí)期的程序和數(shù)據(jù)間的聯(lián)系可用下圖表示: 2.1.3 數(shù)據(jù)庫(kù)技術(shù)從文件系統(tǒng)進(jìn)展到數(shù)據(jù)庫(kù)系統(tǒng)是信息處理領(lǐng)域的一個(gè)重大變化。在文件系統(tǒng)時(shí)期,人們關(guān)注的中心問(wèn)題是系統(tǒng)功能的設(shè)計(jì),因而程序設(shè)計(jì)處于主導(dǎo)地位,數(shù)據(jù)只起著服從程序需要的作用。在數(shù)據(jù)庫(kù)方式下,信息處理觀念已為新體系所取代,數(shù)據(jù)占據(jù)了中心位置。數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)成為信息系統(tǒng)首先關(guān)懷的問(wèn)題,而利用這些數(shù)據(jù)的應(yīng)用程序設(shè)計(jì)則退居到以既定的數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的外圍地位。目前世界上已

23、有數(shù)百萬(wàn)個(gè)數(shù)據(jù)庫(kù)系統(tǒng)在運(yùn)行,其應(yīng)用差不多深入到人類(lèi)社會(huì)生活的各個(gè)領(lǐng)域,從企業(yè)治理、銀行業(yè)務(wù)、資源分配、經(jīng)濟(jì)預(yù)測(cè)一直到信息檢索、檔案治理、普查統(tǒng)計(jì)等。并在通信網(wǎng)絡(luò)基礎(chǔ)上,建立了許多國(guó)際性的聯(lián)機(jī)檢索系統(tǒng)。我國(guó)20世紀(jì)90年代初在全國(guó)范圍內(nèi)裝備了12個(gè)以數(shù)據(jù)庫(kù)技術(shù)為基礎(chǔ)的大型計(jì)算機(jī)系統(tǒng),這些系分布在郵電、計(jì)委、銀行、電力、鐵路、氣象、民航、情報(bào)、公安、軍事、航天和財(cái)稅等行業(yè)。數(shù)據(jù)庫(kù)技術(shù)還在不斷的進(jìn)展,同時(shí)不斷地與其它計(jì)算機(jī)技術(shù)相互滲透。數(shù)據(jù)庫(kù)技術(shù)與網(wǎng)絡(luò)通信技術(shù)相結(jié)合,產(chǎn)生了分布式數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)技術(shù)與面向?qū)ο蠹夹g(shù)相結(jié)合,產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)。在數(shù)據(jù)庫(kù)技術(shù)中有四個(gè)名詞,其概念應(yīng)該分清。(1)數(shù)據(jù)

24、庫(kù)(database,DB):DB是統(tǒng)一治理的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶(hù)共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系緊密,而又有較高的數(shù)據(jù)獨(dú)立性。(2)數(shù)據(jù)庫(kù)治理系統(tǒng)(Database Management System,DBMS):DBMS是位于用戶(hù)與操作系統(tǒng)之間的一層數(shù)據(jù)治理軟件,為用戶(hù)或應(yīng)用程序提供訪問(wèn)DB的方法,包括DB的建立、查詢(xún)、更新及各種數(shù)據(jù)操縱。DBMS總是基于某種數(shù)據(jù)模型,能夠分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮虳BMS。(3)數(shù)據(jù)庫(kù)系統(tǒng)(Database System,DBS):DBS是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便多用戶(hù)訪問(wèn)的計(jì)算機(jī)軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),

25、即采納了數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng)。(4)數(shù)據(jù)庫(kù)技術(shù):這是一門(mén)研究數(shù)據(jù)庫(kù)的結(jié)構(gòu)、存儲(chǔ)、治理和使用的軟件學(xué)科。數(shù)據(jù)庫(kù)技術(shù)是操作系統(tǒng)的文件系統(tǒng)基礎(chǔ)上進(jìn)展起來(lái)的。而DBMS本身要在操作系統(tǒng)的支持下才能工作。數(shù)據(jù)庫(kù)不僅用到數(shù)據(jù)結(jié)構(gòu)的知識(shí),而且豐富了數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。在關(guān)系數(shù)據(jù)庫(kù)中要用到集合論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫(kù)技術(shù)是一門(mén)綜合性較強(qiáng)的學(xué)科。2.2數(shù)據(jù)庫(kù)理論基礎(chǔ)2.2.1 數(shù)據(jù)庫(kù)模型從20世紀(jì)50年代中期開(kāi)始,計(jì)算機(jī)的應(yīng)用由科學(xué)研究部門(mén)逐步擴(kuò)展到企業(yè)、行政部門(mén)。至60年代,數(shù)據(jù)處理成為計(jì)算機(jī)的要緊應(yīng)用。數(shù)據(jù)庫(kù)技術(shù)作為數(shù)據(jù)治理技術(shù),是計(jì)算機(jī)軟件領(lǐng)域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論

26、體系和有用技術(shù)。模型是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫(kù)技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)與語(yǔ)義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象,表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的模型稱(chēng)為“數(shù)據(jù)模型” 。目前廣泛作用的數(shù)據(jù)模型可分為兩種類(lèi)型。一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在系統(tǒng)中的表示,只是用來(lái)描述某個(gè)特定組織所關(guān)懷的信息結(jié)構(gòu),這類(lèi)模型稱(chēng)為“概念數(shù)據(jù)模型” 。要領(lǐng)模型用于建立信息世界的數(shù)據(jù)模型,強(qiáng)調(diào)其語(yǔ)義表達(dá)功能,應(yīng)該概念簡(jiǎn)單、清晰,易于用戶(hù)理解,它是現(xiàn)實(shí)世界的第一層抽象,是用戶(hù)和數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的工具。這一其中聞名的模型是“實(shí)體聯(lián)系模型” 。另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),它是現(xiàn)實(shí)世界的第二層抽

27、象。 這類(lèi)模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫(kù)治理系統(tǒng),又稱(chēng)為“結(jié)構(gòu)數(shù)據(jù)模型” 。例如,層次、網(wǎng)狀、關(guān)系、面向?qū)ο蟮饶P?。這類(lèi)模型有嚴(yán)格的形式化定義,以便于在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)。(1)層次模型。用樹(shù)型結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。樹(shù)的結(jié)點(diǎn)是記錄類(lèi)型,每個(gè)非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類(lèi)型和下一層記錄類(lèi)型間聯(lián)系是1N聯(lián)系。層次模型的特點(diǎn)是記錄之間的聯(lián)系通過(guò)指針實(shí)現(xiàn),查詢(xún)效率較高。但層次模型有兩個(gè)缺點(diǎn):一是只能表示1N聯(lián)系,盡管有多種輔助手段實(shí)現(xiàn)了MN聯(lián)系,但都較復(fù)雜,用戶(hù)不易掌握,二是由于樹(shù)型結(jié)構(gòu)層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢(xún)和更新操作也專(zhuān)門(mén)復(fù)雜,因此,編寫(xiě)應(yīng)用程序也專(zhuān)門(mén)復(fù)雜。(2

28、)網(wǎng)狀模型。用有向圖結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。1969年DBTG報(bào)告提出的數(shù)據(jù)模型是網(wǎng)狀模型的要緊代表。有向圖中的結(jié)點(diǎn)是記錄類(lèi)型,有向邊表示從箭尾一端的記錄類(lèi)型到箭頭一端的記錄類(lèi)型間聯(lián)系是1N聯(lián)系。網(wǎng)狀模型的特點(diǎn):記錄之間聯(lián)系通過(guò)指針實(shí)現(xiàn),MN聯(lián)系也容易實(shí)現(xiàn)(每個(gè)MN聯(lián)系可拆成兩個(gè)1N聯(lián)系),查詢(xún)效率較高。網(wǎng)狀模型的缺點(diǎn)是編寫(xiě)應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制比較復(fù)雜,因此,從20世紀(jì)80年代中期起,其市場(chǎng)已被關(guān)系系統(tǒng)所取代。然而使用這兩種模型建立起的許多數(shù)據(jù)庫(kù)仍然在正常運(yùn)轉(zhuǎn),只是在外層加了個(gè)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的接口。網(wǎng)狀模型有許多

29、成功的產(chǎn)品,20世紀(jì)70年代的產(chǎn)品大部分網(wǎng)狀系統(tǒng),例如,Honeywell公司的IDS/、HP公司的IMAGE/3000、Burroughs公司的DMS、Umivac公司的DMS1100、Cullinet公司的IDMS、Cimcom公司的TOTAL等(3)關(guān)系模型。關(guān)系模型的要緊是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類(lèi)型,它的實(shí)例稱(chēng)為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格。關(guān)系模型和層次、網(wǎng)狀模型的最大判不是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡(jiǎn)單用戶(hù)易明白,編程時(shí)并不涉及存儲(chǔ)結(jié)構(gòu),訪問(wèn)技術(shù)等細(xì)節(jié)。關(guān)系模型是數(shù)學(xué)化模型。S

30、QL語(yǔ)言是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)化語(yǔ)言,已得到了廣泛的應(yīng)用。20世紀(jì)70年代對(duì)關(guān)系數(shù)據(jù)庫(kù)的研究要緊集中在理論和實(shí)驗(yàn)系統(tǒng)的開(kāi)發(fā)方面。80年代初才形成產(chǎn)品,但專(zhuān)門(mén)快得到廣泛的應(yīng)用和普及,并最終取代了層次、網(wǎng)狀數(shù)據(jù)庫(kù)產(chǎn)品?,F(xiàn)在市場(chǎng)上典型的關(guān)系DBMS產(chǎn)品有DB2、ORACLE、SYBASE、INFORMIX和微機(jī)型產(chǎn)品Foxpro、Access等。關(guān)系模型和網(wǎng)狀、層次模型的最大區(qū)不是:關(guān)系模型用表格數(shù)據(jù)而不是通過(guò)指針鏈來(lái)表示和實(shí)現(xiàn)實(shí)體間聯(lián)系。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、易明白。只需用簡(jiǎn)單的查詢(xún)語(yǔ)句就可對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。關(guān)系模型是數(shù)學(xué)化的模型,可把表格看成一個(gè)集合,因此集合論、數(shù)理邏輯等知識(shí)可引入到關(guān)系模型中來(lái)

31、。關(guān)系模型已是一個(gè)成熟的有前途的模型,已得到廣泛應(yīng)用。(4)面向?qū)ο竽P?。目前,關(guān)系數(shù)據(jù)庫(kù)的使用已相當(dāng)普遍,然而,現(xiàn)實(shí)世界中仍然存在著許多含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用領(lǐng)域,例如,CAD數(shù)據(jù)、圖形數(shù)據(jù)等,而關(guān)系模型在這方面的處理能力就顯得力不從心。因此,人們需要更高級(jí)的數(shù)據(jù)庫(kù)技術(shù)來(lái)表達(dá)這類(lèi)信息。面向?qū)ο蟮母拍钭钤绯霈F(xiàn)在程序設(shè)計(jì)語(yǔ)言中,隨后迅速滲透到計(jì)算機(jī)領(lǐng)域的每一個(gè)分支。面向?qū)ο髷?shù)據(jù)庫(kù)是面向?qū)ο蟾拍钆c數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的產(chǎn)物。面向?qū)ο竽P湍芡暾孛枋霈F(xiàn)實(shí)世界的數(shù)據(jù)結(jié)構(gòu),具有豐富的表達(dá)能力,但模型相對(duì)較復(fù)雜,涉及的知識(shí)面也廣,因此面向?qū)ο髷?shù)據(jù)庫(kù)尚未達(dá)到關(guān)系數(shù)據(jù)庫(kù)那樣的普及程度。2.2.2 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)數(shù)

32、據(jù)庫(kù)的體系結(jié)構(gòu)分三級(jí):內(nèi)部級(jí)(internal),概念級(jí)(conceptual)和外部級(jí)(external)。那個(gè)三級(jí)結(jié)構(gòu)有時(shí)也稱(chēng)為“三級(jí)模式結(jié)構(gòu)”,或“數(shù)據(jù)抽象的三個(gè)級(jí)不”,最早是在1971年通過(guò)的DBTG報(bào)告中提出,后來(lái)收入在1975年的美國(guó)ANSI/SPARC報(bào)告中。盡管現(xiàn)在DBMS的產(chǎn)品多種多樣,在不同的操作系統(tǒng)支持下工作,然而大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級(jí)模式的結(jié)構(gòu)特征。從某個(gè)角度看到的數(shù)據(jù)特性稱(chēng)為“數(shù)據(jù)視圖”(data view)。外部級(jí)最接近用戶(hù),是單個(gè)用戶(hù)所能看到的數(shù)據(jù)特性。單個(gè)用戶(hù)使用的數(shù)據(jù)視圖的描述稱(chēng)為“外模式”。概念級(jí)涉及到所有用戶(hù)的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局

33、數(shù)據(jù)視圖的描述稱(chēng)為“概念模式”。內(nèi)部級(jí)最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)。物理存儲(chǔ)數(shù)據(jù)視圖的描述稱(chēng)為“內(nèi)模式”。數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)不。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶(hù)只要抽象地處理數(shù)據(jù),而不必關(guān)懷數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ),如此就減輕了用戶(hù)使用系統(tǒng)的負(fù)擔(dān)。三級(jí)結(jié)構(gòu)之間往往差不專(zhuān)門(mén)大,為了實(shí)現(xiàn)這三個(gè)抽象級(jí)不的聯(lián)系和轉(zhuǎn)換,DBMS在三級(jí)結(jié)構(gòu)之間提供兩個(gè)層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡(jiǎn)稱(chēng)。2.2.3 數(shù)據(jù)的獨(dú)立性由于數(shù)據(jù)庫(kù)系統(tǒng)采納三級(jí)模式結(jié)構(gòu),因此系統(tǒng)具有數(shù)據(jù)獨(dú)立性的特點(diǎn)。在數(shù)據(jù)庫(kù)技術(shù)中,數(shù)據(jù)獨(dú)立性是指

34、應(yīng)用程序和數(shù)據(jù)之間相互獨(dú)立,不受阻礙。數(shù)據(jù)獨(dú)立性分成物理數(shù)據(jù)獨(dú)立性和邏輯數(shù)據(jù)獨(dú)立性?xún)杉?jí)。(1)物理數(shù)據(jù)獨(dú)立性假如數(shù)據(jù)庫(kù)的內(nèi)模式要進(jìn)行修改,即數(shù)據(jù)庫(kù)的存儲(chǔ)設(shè)備和存儲(chǔ)方法有所變化,那么模式/內(nèi)模式映象也要進(jìn)行相當(dāng)?shù)男薷?,使概念模式盡可能保持不變。也確實(shí)是對(duì)內(nèi)模式的修改盡量不阻礙概念模式,因此,關(guān)于外模式和應(yīng)用程序的阻礙更小,如此,我們稱(chēng)數(shù)據(jù)庫(kù)達(dá)到了物理數(shù)據(jù)獨(dú)立性。(2)邏輯數(shù)據(jù)獨(dú)立性假如數(shù)據(jù)庫(kù)的概念模式要進(jìn)行修改,譬如增加記錄類(lèi)型或增加數(shù)據(jù)項(xiàng),那么外模式/模式映象也要進(jìn)行相應(yīng)的修改,使外模式盡可能保持不變。也確實(shí)是對(duì)概念模式的修改盡量不阻礙外模式和應(yīng)用程序,如此,我們稱(chēng)數(shù)據(jù)庫(kù)達(dá)到了邏輯數(shù)據(jù)獨(dú)立性。

35、現(xiàn)有關(guān)系系統(tǒng)產(chǎn)品均提供了較高的物理獨(dú)立性,而對(duì)邏輯獨(dú)立性的支持尚有欠缺,例如,對(duì)外模式的數(shù)據(jù)更新受到限制等。2.2.4 范式建立起一個(gè)良好的數(shù)據(jù)指標(biāo)體系,是建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)的最重要的一環(huán)。一個(gè)良好的數(shù)據(jù)指標(biāo)體系是建立DB的必要條件,但不是充分條件。我們完全能夠認(rèn)為所建指標(biāo)體系中的一個(gè)指標(biāo)類(lèi)確實(shí)是關(guān)系數(shù)據(jù)庫(kù)中的一個(gè)差不多表,而那個(gè)指標(biāo)類(lèi)下面的一個(gè)個(gè)具體指標(biāo)確實(shí)是那個(gè)差不多表中的一個(gè)字段。但假如直接按照這種方式建庫(kù)顯然還不能算最佳。關(guān)于指標(biāo)體系中數(shù)據(jù)的結(jié)構(gòu)在建庫(kù)前還必須進(jìn)行規(guī)范化的重新組織。在數(shù)據(jù)的規(guī)范化表達(dá)中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱(chēng)為一個(gè)關(guān)系(relation),而在那個(gè)關(guān)系下的每個(gè)數(shù)據(jù)

36、指標(biāo)項(xiàng)則被稱(chēng)為數(shù)據(jù)元素(data element),這種關(guān)系落實(shí)到具體數(shù)據(jù)庫(kù)上確實(shí)是差不多表,而數(shù)據(jù)元素確實(shí)是差不多表中的一個(gè)字段(field)。規(guī)范化表達(dá)還規(guī)定在每一個(gè)差不多表中必須定義一個(gè)數(shù)據(jù)元素為關(guān)鍵字(key),它能夠唯一地標(biāo)識(shí)出該表中其它相關(guān)的數(shù)據(jù)元素。在規(guī)范化理論中表是二維的,它有如下四個(gè)性質(zhì):在表中的任意一列上,數(shù)據(jù)項(xiàng)應(yīng)屬于同一個(gè)屬性(如圖中每一列都存放著不同合同記錄的同一屬性數(shù)據(jù))。 表中所有行差不多上不相同的,不同意有重復(fù)組項(xiàng)出現(xiàn)(如圖中每一行差不多上一個(gè)不同的合同記錄)。在表中,行的順序無(wú)關(guān)緊要(如圖中每行存的差不多上合同記錄,至于先放哪一個(gè)合同都沒(méi)關(guān)系)。 在表中,列的順

37、序無(wú)關(guān)緊要,但不能重復(fù)(如圖中合同號(hào)和合同名誰(shuí)先誰(shuí)后都沒(méi)關(guān)系,但二者不可重復(fù)或同名)。 在對(duì)表的形式進(jìn)行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱(chēng)為范式。在這五種范式中,一般只用前三種,關(guān)于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿(mǎn)足第五范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿(mǎn)足一、二、三、四范式,滿(mǎn)足第四范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿(mǎn)足第一、二、三范式,依此類(lèi)推。第一范式(first normal form,簡(jiǎn)稱(chēng)1st NF)確實(shí)是指在同一表中沒(méi)有重復(fù)項(xiàng)出現(xiàn),假如有則應(yīng)將重復(fù)項(xiàng)去掉。那個(gè)去掉重復(fù)項(xiàng)的過(guò)程就稱(chēng)之為規(guī)范化處理。在本文所討論的開(kāi)發(fā)方法里,1st NF實(shí)際上是沒(méi)有什么意義的。因?yàn)?/p>

38、我們按規(guī)范化建立的指標(biāo)體系和表的過(guò)程都自動(dòng)保證了所有表都滿(mǎn)足1st NF。 第二范式(second normal form,簡(jiǎn)稱(chēng) 2nd NF)是指每個(gè)表必須有一個(gè)(而且僅一個(gè))數(shù)據(jù)元素為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵字一一對(duì)應(yīng)。例如,在圖l9.7中假如我們將合同號(hào)定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要明白了一個(gè)合同記錄的合同號(hào),就能夠唯一地在同一行中找到該合同的任何一項(xiàng)具體信息。通常我們稱(chēng)這種關(guān)系為函數(shù)依靠(functional depEndence)關(guān)系。即表中其它數(shù)據(jù)元素都依靠于主關(guān)鍵字,或稱(chēng)該數(shù)據(jù)元素唯一地被主關(guān)鍵字

39、所標(biāo)識(shí)。第三范式(third normal form,簡(jiǎn)稱(chēng) 3rd NF)確實(shí)是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主關(guān)鍵字所標(biāo)識(shí),而且它們之間還必須相互獨(dú)立,不存在其它的函數(shù)關(guān)系。也確實(shí)是講關(guān)于一個(gè)滿(mǎn)足了 2nd NF的數(shù)據(jù)結(jié)構(gòu)來(lái)講,表中有可能存在某些數(shù)據(jù)元素依靠于其它非關(guān)鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。為防止數(shù)據(jù)庫(kù)出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫(kù)要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。2.3 SQL語(yǔ)言基礎(chǔ)2.3.1 SQL簡(jiǎn)介用戶(hù)對(duì)數(shù)據(jù)庫(kù)的使用,是通過(guò)數(shù)據(jù)庫(kù)治理系統(tǒng)提供的語(yǔ)言來(lái)實(shí)現(xiàn)的。不同的數(shù)據(jù)庫(kù)治理系統(tǒng)提供不同的數(shù)據(jù)庫(kù)語(yǔ)言。關(guān)系數(shù)據(jù)庫(kù)治理系統(tǒng)幾乎都提

40、供關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL。SQL 的全稱(chēng)是Structured Query Language,即結(jié)構(gòu)化查詢(xún)語(yǔ)言。SQL語(yǔ)句能夠從關(guān)系數(shù)據(jù)庫(kù)中獲得數(shù)據(jù),也能夠建立數(shù)據(jù)庫(kù)、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采納SQL語(yǔ)言作為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言,后被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為國(guó)際標(biāo)準(zhǔn)。SQL語(yǔ)言使用方便、功能豐富、簡(jiǎn)潔易學(xué),是操作數(shù)據(jù)庫(kù)的工業(yè)標(biāo)準(zhǔn)語(yǔ)言,得到廣泛地應(yīng)用。例如關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品DB2、ORACLE等都實(shí)現(xiàn)了SQL語(yǔ)言。同時(shí),其它數(shù)據(jù)庫(kù)產(chǎn)品廠家也紛紛推出各自的支持SQL的軟件或者與SQL的接口軟件。如此SQL語(yǔ)言專(zhuān)門(mén)快被整個(gè)計(jì)算機(jī)界認(rèn)可。SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言,它一次處理

41、一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL語(yǔ)言同意用戶(hù)在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。SQL語(yǔ)言不要求用戶(hù)指定數(shù)據(jù)的存取方法,而是使用查詢(xún)優(yōu)化器,由系統(tǒng)決定對(duì)指定數(shù)據(jù)存取的最快速手段。當(dāng)設(shè)計(jì)者在關(guān)系表上定義了索引時(shí),系統(tǒng)會(huì)自動(dòng)利用索引進(jìn)行快速檢索,用戶(hù)不需明白表上是否有索引或者有什么類(lèi)型的索引等細(xì)節(jié)。SQL語(yǔ)言能夠完成許多功能,例如: 查詢(xún)數(shù)據(jù) 在數(shù)據(jù)庫(kù)表格中插入、修改和刪除記錄 建立、修改和刪除數(shù)據(jù)對(duì)象 操縱對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取 確保數(shù)據(jù)庫(kù)的一致性和完整性等2.3.2 SQL查詢(xún)數(shù)據(jù)查詢(xún)是關(guān)系運(yùn)算理論在SQL語(yǔ)言中的要緊體現(xiàn),SELECT 語(yǔ)句是SQL查詢(xún)的差不多語(yǔ)句,當(dāng)我們

42、在對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)各種各樣的操作時(shí),使用的最多的確實(shí)是數(shù)據(jù)查詢(xún),在以SQL為基礎(chǔ)的關(guān)系數(shù)據(jù)庫(kù)中,使用的最多的確實(shí)是SELECT查詢(xún)語(yǔ)句。SELECT語(yǔ)句的完整句法如下:SELECT 目標(biāo)表的列名或列表達(dá)式序列FROM 差不多表和(或)視圖序列WHERE 行條件表達(dá)式GROUP BY 列名序列HAVING 組條件表達(dá)式ORDER BY列名 ASCDEAC我在SELECT語(yǔ)句中還使用了大量的保留字和通配符以進(jìn)行各種各樣的條件查詢(xún)。在系統(tǒng)中有大量的查詢(xún)按鈕,其使用了大量的查詢(xún)語(yǔ)句,而且這些查詢(xún)語(yǔ)句大部分使用的是模糊查詢(xún),因此大量的使用了模式匹配符LIKE(推斷值是否與指定的字符通配格式相符)。在包含L

43、IKE的查詢(xún)語(yǔ)句中能夠使用兩個(gè)通配符:%(百分號(hào)):與零個(gè)或多個(gè)字符組成的字符串匹配;_(下劃線(xiàn)):與單個(gè)字符匹配。系統(tǒng)中的條件推斷往往包含多個(gè)條件,這時(shí)就需要使用邏輯運(yùn)算符NOT、AND、OR(用于多條件的邏輯連接),謂詞ALL以及保留字DISTINCT等等。做為SELECT語(yǔ)句還有專(zhuān)門(mén)多的使用方法,那個(gè)地點(diǎn)就不再敘述。2.3.3 SQL數(shù)據(jù)更新使用數(shù)據(jù)庫(kù)的目的是為了有效地治理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個(gè)功能。在本系統(tǒng)中就大量地使用了數(shù)據(jù)插入、刪除和修改這三種操作,現(xiàn)做一個(gè)簡(jiǎn)單地介紹。數(shù)據(jù)插入往數(shù)據(jù)庫(kù)的差不多表中插入數(shù)據(jù)使用的是INSERT語(yǔ)句,其方式有兩種:一種是元組值

44、的插入,另一種是查詢(xún)結(jié)果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:INSERT INTO 差不多表名(列表名)VALUES(元組值)數(shù)據(jù)刪除往數(shù)據(jù)庫(kù)的差不多表中刪除數(shù)據(jù)使用的是DELETE語(yǔ)句,其句法如下:DELETE FROM 差不多表名 WHERE 條件表達(dá)式在些作一點(diǎn)講明,刪除語(yǔ)句實(shí)際上是“SELECT * FROM 差不多表名 WHERE 條件表達(dá)式”和DELETE操作的結(jié)合,每找到一個(gè)元組,就把它刪除。此外,DELETE語(yǔ)句只能從一個(gè)差不多表中刪除元組,WHERE子句中條件能夠嵌套,也能夠是來(lái)自幾個(gè)差不多表的復(fù)合條件。數(shù)據(jù)修改當(dāng)需要修改差不多表中元組的某些列值時(shí),能夠用UPD

45、ATE語(yǔ)句實(shí)現(xiàn),其句法如下:UPDATE差不多表名SET列名=值表達(dá)式,列名=值表達(dá)式WHERE條件表達(dá)式在Delphi中使用SQL語(yǔ)句是專(zhuān)門(mén)方便的,一般來(lái)講,差不多上通過(guò)TQuery組件來(lái)使用SQL語(yǔ)言的。有一點(diǎn)要進(jìn)行講明,盡管通過(guò)TQuery組件來(lái)使用SQL語(yǔ)言專(zhuān)門(mén)方便,但考慮到自己對(duì)不同組件的理解程度、個(gè)人適應(yīng)以及其它各個(gè)方面,在本系統(tǒng)中我采納的是ADO組件來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。最簡(jiǎn)單的方法比如在TADOQuery組件的SQL屬性中就能夠鍵入SQL語(yǔ)句,至于詳細(xì)的使用方法在后面進(jìn)行介紹。第三章 數(shù)據(jù)庫(kù)開(kāi)發(fā)工具3.1 Delphi 6.0 簡(jiǎn)介Delphi類(lèi)能夠粗略地分成兩部分:一部分是組件

46、類(lèi),這些組件類(lèi)通常以某種方式出現(xiàn)在組件面板上,當(dāng)用戶(hù)從組件面板上點(diǎn)取一個(gè)類(lèi)的圖標(biāo)后,在程序中就自動(dòng)生成了該類(lèi)的對(duì)象(非可視組件除外);另一部分是功能類(lèi),這此功能類(lèi)的對(duì)象通常出現(xiàn)在程序代碼中,起著不可代替的作用,然而這些功能類(lèi)在組件面板上是找不到的。在Delphi中,每一個(gè)類(lèi)的祖先差不多上Tobject類(lèi),整個(gè)類(lèi)的層次結(jié)構(gòu)就像一棵倒掛的樹(shù),在最頂層的樹(shù)根即為T(mén)object類(lèi)。如此,按照面向?qū)ο缶幊痰牟畈欢嗨枷?,就使得用?hù)可用Tobject類(lèi)那個(gè)類(lèi)型代替任何其它類(lèi)的數(shù)據(jù)類(lèi)型。實(shí)際上在Delphi的類(lèi)庫(kù)中,Tobject類(lèi)派生出了為數(shù)相當(dāng)眾多的子類(lèi),它們形成了一個(gè)龐大的體系,通常情況下,假如不自行開(kāi)

47、發(fā)組件,就不必了解整個(gè)類(lèi)的體系結(jié)構(gòu),只用到類(lèi)層次樹(shù)的葉結(jié)點(diǎn)就足夠了。凡是做過(guò)程序開(kāi)發(fā)的人都明白從來(lái)沒(méi)有單純的數(shù)據(jù)應(yīng)用程序,也確實(shí)是講,數(shù)據(jù)庫(kù)應(yīng)用程序必須和用戶(hù)界面(能夠是圖形界面,也能夠是命令接口)元素相結(jié)合,只講界面或只講數(shù)據(jù)庫(kù)本身都構(gòu)不成數(shù)據(jù)庫(kù)應(yīng)用程序,因而用Delphi 6.0開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序就隱含著界面開(kāi)發(fā)。Delphi6中的VCL組件可用圖3-1來(lái)講明。組件在Delphi程序的開(kāi)發(fā)中是最顯眼的角色。大伙兒明白,在編寫(xiě)程序時(shí)一般都開(kāi)始于在組件面板上選擇組件并定義組件間的相互作用。但也有一些組件不在組件面板上,例如Tform和Tapplication(典型的非可視組件)。組件是Tcom

48、ponents派生出來(lái)的子類(lèi),能夠流的形式存放在DFM文件中,具有事件和Publish屬性。窗口組件類(lèi)是窗口化的可視化組件類(lèi),在Delphi的類(lèi)庫(kù)中占有最大的份額。在實(shí)際編程中,窗口組件類(lèi)的對(duì)象都有句柄,能夠同意輸入焦點(diǎn)和包含其它組件。圖形組件與窗口組件并列,是另一大類(lèi)組件。圖形組件不是基于窗口的,因而不能有窗口句柄,不能同意輸入焦點(diǎn)和包含其它組件。從圖8-43中能夠看出,圖形組件的基類(lèi)是TgraphicControl,在實(shí)際編程中,它們必須寄生于它們的宿主窗口組件類(lèi)的對(duì)象,由它們的擁有者負(fù)責(zé)其顯示,而且它們還能觸發(fā)一些和鼠標(biāo)活動(dòng)相關(guān)的事件。圖形控件最典型的例子是Tlabel和TspeedBu

49、tton。由此能夠看出圖形組件的功能專(zhuān)門(mén)弱,有讀者會(huì)問(wèn)圖形組件的用處何在呢?事實(shí)上使用圖形組件的最大好處在于節(jié)約資源,正是因?yàn)樗鼈兊墓δ茌^弱,因此使用的系統(tǒng)資源就要少。在一個(gè)應(yīng)用程序中,假如能在不阻礙其功能的前提下合理大量地使用圖形組件,將會(huì)大減少程序?qū)ο到y(tǒng)資源的消耗。非可視組件是與可視組件相并列的另一類(lèi)組件,非可視組件在程序運(yùn)行中是不可見(jiàn)的(除各種對(duì)話(huà)框組件之外,事實(shí)上有人認(rèn)為對(duì)話(huà)框組件不能歸入非可視組件,應(yīng)該是另一種介于可視與非可視之間的組件)。3.2 Delphi 6.0 控件用Delphi6開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫(kù)組件打交道,因此也要使用其它的一些組件,現(xiàn)在就我在系統(tǒng)設(shè)計(jì)中所

50、使用的重要組件給與簡(jiǎn)單介紹。3.2.1 ADO數(shù)據(jù)訪問(wèn)組件ADO數(shù)據(jù)對(duì)象(Active Data Objects)實(shí)際是一種提供訪問(wèn)各種數(shù)據(jù)類(lèi)型的鏈接機(jī)制。ADO設(shè)計(jì)為一種極簡(jiǎn)單的格式,通過(guò)ODBC的方法同數(shù)據(jù)庫(kù)接口中,能夠使用任何一種ODBC數(shù)據(jù)源,即不止適合于SQL Server、Oracle、Access等數(shù)據(jù)庫(kù)應(yīng)用程序,也適合于Excel表格、文本文件、圖形文件和無(wú)格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過(guò)其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問(wèn)接口方法。ADO使您的客戶(hù)端應(yīng)用程序能夠通過(guò)OLE DB提供訪問(wèn)和操作在數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)。ADO支持用于建立C/S和W

51、eb的應(yīng)用程序的要緊功能。其要緊優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤(pán)空間較少。ADO同時(shí)具有遠(yuǎn)程數(shù)據(jù)服務(wù)(RDS)功能,通過(guò)RDS能夠在一次往返過(guò)程中實(shí)現(xiàn)將數(shù)據(jù)從服務(wù)器移動(dòng)到客戶(hù)端應(yīng)用程序和Web頁(yè)、在客戶(hù)端對(duì)數(shù)據(jù)進(jìn)行處然后將更新結(jié)果返回服務(wù)器的操作。Delphi 6.0接著對(duì)Microsoft的ADO訪問(wèn)能力的支持。這種能力是通過(guò)一組新組件實(shí)現(xiàn)的,這些組件是在企業(yè)版的ADO組件頁(yè)中,在組件面版的ADO頁(yè)上能夠找到這些組件。利用在前面章節(jié)提到的TdataSet抽象類(lèi),ADO組件能夠不通過(guò)BDE而直接實(shí)現(xiàn)ADO連接。這意味著只需要專(zhuān)門(mén)少的代碼就能夠?qū)崿F(xiàn)該連接同時(shí)性能得到提高。利用ADO數(shù)

52、據(jù)訪問(wèn)組件,能夠只使用ADO結(jié)構(gòu)與數(shù)據(jù)庫(kù)取得聯(lián)系并對(duì)其中的數(shù)據(jù)進(jìn)行操作,而在這些過(guò)程中完全不需要使用BDE。大多數(shù)的ADO連接和數(shù)據(jù)集組件差不多上與基于BDE的連接和數(shù)據(jù)集組件相類(lèi)似的。TADOConnection組件與基于BDE的應(yīng)用程序中的Tdatabase組件類(lèi)似。TADOTable與Ttable,TADOQuery與Tquery,以及TADOStoreProc和TstoredProc之間都具有這種類(lèi)似的對(duì)應(yīng)關(guān)系。使用這些ADO組件的方式與我們常使用的數(shù)據(jù)訪問(wèn)組件(基于BDE)都有許多相同之處。TTADODataSet沒(méi)有直接的BDE對(duì)應(yīng)組件,但它提供了許多與Ttable和Tquery相

53、同的功能。同樣,TADOCommand也沒(méi)有相對(duì)應(yīng)的BDE組件,它是在Delphi/ADO環(huán)境中完成特定功能的組件。Delphi 6.0通過(guò)ADO數(shù)據(jù)集訪問(wèn)組件,能夠不借助BDE數(shù)據(jù)引擎而是通過(guò)微軟的OLEDB來(lái)訪問(wèn)更為廣泛的數(shù)據(jù)庫(kù)中的數(shù)據(jù)。ADO數(shù)據(jù)集訪問(wèn)組件與常用的數(shù)據(jù)訪問(wèn)組件是并列的關(guān)系。在系統(tǒng)中我要緊使用的是ADOTablet和ADOQuery兩個(gè)組件。3.2.2 數(shù)據(jù)操縱類(lèi)DataControl數(shù)據(jù)操縱類(lèi)負(fù)責(zé)數(shù)據(jù)庫(kù)數(shù)據(jù)的顯示,并把用戶(hù)對(duì)數(shù)據(jù)的修改傳回。那個(gè)地點(diǎn)的絕大多數(shù)組件,如DBText, DBEdit, DBMemo, DBImage, DBListBox, DBComboBox

54、, DBCheckBox, DBRadioGroup, DBLookupListBox, DBLookupCombox, DBCtrGrid的功能和對(duì)應(yīng)的非數(shù)據(jù)感知組件相同,如TEdit框,TRadioGroups單選按鈕組等,只只是在顯示數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí)要用而已。在系統(tǒng)中要緊使用數(shù)據(jù)網(wǎng)格控件DBGrid和數(shù)據(jù)庫(kù)導(dǎo)航器控件DBNavigator。3.2.3 數(shù)據(jù)訪問(wèn)類(lèi)DataAccess數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中數(shù)據(jù)訪問(wèn)是一個(gè)首要問(wèn)題,包括單用戶(hù)和 C/S系統(tǒng),都必須聯(lián)系一些數(shù)據(jù)庫(kù)和數(shù)據(jù)表文件。Delphi 6 提供了專(zhuān)門(mén)用于數(shù)據(jù)訪問(wèn)的基類(lèi)控件。要緊包括數(shù)據(jù)源控件DataSource、客戶(hù)數(shù)據(jù)集控件Clie

55、ntDataSet、數(shù)據(jù)集提供器控件DataSetProvider等等。Tdatabase:當(dāng)一個(gè)基于BDE的數(shù)據(jù)庫(kù)應(yīng)用程序需要一個(gè)永久數(shù)據(jù)庫(kù)連接時(shí),需要定制向一個(gè)數(shù)據(jù)庫(kù)服務(wù)器的連接時(shí),需要事務(wù)操縱和專(zhuān)門(mén)的數(shù)據(jù)庫(kù)不名時(shí)就得用到Tdatabase對(duì)象。特不是當(dāng)連接到一個(gè)遠(yuǎn)程的SQL數(shù)據(jù)庫(kù)服務(wù)器時(shí),假如要利用BDE進(jìn)行數(shù)據(jù)庫(kù)事務(wù)處理,那么,TDatabase對(duì)象的威力就體現(xiàn)出來(lái)了。在一個(gè)應(yīng)用程序中為每一個(gè)數(shù)據(jù)庫(kù)連接顯示的聲明Tdatabase對(duì)象要依照需要而定,不是必需的。對(duì)一個(gè)數(shù)據(jù)庫(kù)連接,假如沒(méi)有顯示的聲明并實(shí)例化TDatabase對(duì)象,系統(tǒng)就會(huì)產(chǎn)生一個(gè)帶有默認(rèn)屬性的TDatabase對(duì)象。Td

56、ataSource對(duì)象用于在DataSet對(duì)象(包括Tquery,TstoredProc,Ttable等)和數(shù)據(jù)感知組件之間提供一個(gè)連接的紐帶,以便在窗體上顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù),在數(shù)據(jù)庫(kù)中導(dǎo)航定位與編輯數(shù)據(jù)集中的數(shù)據(jù)。假如一個(gè)DataSet對(duì)象中的數(shù)據(jù)想在數(shù)據(jù)感知組件中顯示和修改,它就必須和TdataSource對(duì)象相聯(lián)系。同樣,一個(gè)數(shù)據(jù)感知組件假如想和數(shù)據(jù)源相聯(lián)系以便顯示和操縱數(shù)據(jù),就必須以TDataSource對(duì)象為中介。用Delphi6作數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)概括來(lái)講如下:先利用數(shù)據(jù)存取組件和實(shí)際的數(shù)據(jù)庫(kù)建立連接,并用Tsession對(duì)象和Tdatabase對(duì)象治理這些連接。然后以Tdatasou

57、rce對(duì)象為中介,用數(shù)據(jù)感知組件向用戶(hù)顯示數(shù)據(jù)庫(kù)的內(nèi)容并同意用戶(hù)的查詢(xún)和修改等操作。3.2.4 SQL語(yǔ)言在Delphi中的應(yīng)用在Delphi中使用SQL語(yǔ)言特不方便,一般來(lái)講,差不多上通過(guò)Tquery組件來(lái)使用SQL語(yǔ)言的。能夠在TQuery組件的SQL屬性中設(shè)置SQL語(yǔ)句。設(shè)計(jì)程序時(shí),在該組件的屬性對(duì)話(huà)框中選擇SQL屬性,單擊帶省略號(hào)的按鈕,就能夠打開(kāi)String List Editor對(duì)話(huà)框,然后我們就能夠在對(duì)話(huà)框中添加SQL語(yǔ)句。還能夠使用Delphi的SQL Builder來(lái)自動(dòng)生成SQL語(yǔ)句,如此能夠幸免手工編寫(xiě)SQL而可能造成的語(yǔ)法錯(cuò)誤。靜態(tài)SQL語(yǔ)句在程序設(shè)計(jì)時(shí)便已固定下來(lái),它

58、不包含任何參數(shù)和變量。動(dòng)態(tài)SQL語(yǔ)句,也被稱(chēng)作參數(shù)化的語(yǔ)句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語(yǔ)句是一條動(dòng)態(tài)SQL語(yǔ)句: Select * From Students Where StudentCode =: StudentCode;其中的變量StudentCode便是一個(gè)參數(shù)變量,它由一個(gè)冒號(hào)引導(dǎo),在程序運(yùn)行過(guò)程中,必須要為該參數(shù)賦值,該條SQL語(yǔ)句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)能夠?yàn)樵搮?shù)變量給予不同的值。為參數(shù)賦值有三種方法:依照參數(shù)在SQL語(yǔ)句中出現(xiàn)的順序,設(shè)置TQuery部件的Params屬性值為參數(shù)賦值。直接依照SQL語(yǔ)句中各參數(shù)的名字,調(diào)用ParamByName方

59、法來(lái)為各參數(shù)賦值。將TQuery部件的DataSource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,如此將另一個(gè)數(shù)據(jù)源中與當(dāng)前TQuery部件的SQL語(yǔ)句中的參數(shù)名相匹配的字段值賦給其對(duì)應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢(xún),創(chuàng)建要緊明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用。在程序運(yùn)行過(guò)程中,要想設(shè)置TQuery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語(yǔ)句, 最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語(yǔ)句。例如:Query1.Close 關(guān)閉Query1)Query1.SQL.Clear 清除SQL屬性中的SQL命令語(yǔ)句Query1.SQ

60、L.Add(Select * From Students);Query1.SQL.Add( Where Name =Lucy );在為T(mén)Query部件設(shè)置SQL屬性時(shí)調(diào)用Close方法總是專(zhuān)門(mén)安全的,假如TQuery部件差不多被關(guān)閉了,調(diào)用Close方法時(shí)可不能產(chǎn)生任何阻礙。在應(yīng)用程序中為SQL屬性設(shè)置新的SQL 命令語(yǔ)句時(shí),必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語(yǔ)句,假如不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語(yǔ)句,那么新設(shè)置的SQL命令語(yǔ)句會(huì)追加在現(xiàn)存SQL命令語(yǔ)句后面, 在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢(xún)結(jié)果甚至程序無(wú)法運(yùn)行下去。在那個(gè)地點(diǎn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論