




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、圖書館管理系統(tǒng)摘要圖書管理系統(tǒng)是典型的信息管理系統(tǒng)(IS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完好性強、數(shù)據(jù)平安性好的庫。而對于后者那么5.3啟動畫面的實現(xiàn)385.4用戶登錄窗體的的實現(xiàn)395.5用戶密碼認(rèn)證窗體的的實現(xiàn)395.6借閱者效勞第一章緒論1.1數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的根本概念應(yīng)當(dāng)理解,對數(shù)據(jù)庫的構(gòu)造、開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)明晰的理解和認(rèn)識。數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目的是建立一個滿足用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行?/p>
2、的數(shù)據(jù)庫設(shè)計。把設(shè)計轉(zhuǎn)變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應(yīng)用。數(shù)據(jù)庫技術(shù)在計算機軟件鄰域研究中一直是非常重要的主題,產(chǎn)生于60年代,30多年來數(shù)據(jù)庫技術(shù)得到了迅速開展,并已形成較為完好的理論體系和一大批實用系統(tǒng)。并且,近年來,隨著rldideeb()的猛增及Internet技術(shù)的迅速開展數(shù)據(jù)庫管理系統(tǒng)處理,DBS那么由開發(fā)人員和用戶通過應(yīng)用程序直接或間接地使用。它主要包括四個要素:用戶數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。標(biāo)準(zhǔn)化。為了比照構(gòu)造差的關(guān)系和構(gòu)造好的關(guān)系之間的差異,以本文所設(shè)計的圖書管理系統(tǒng)中的圖書和圖書借閱者關(guān)系為例來說明,假假設(shè)設(shè)計關(guān)系R1借書證號,姓名,性別,身份
3、編號,身份證,聯(lián)絡(luò) ,圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數(shù)量;這個關(guān)系的問題出在它有關(guān)于兩個不同主題的數(shù)據(jù),就是圖書借閱者和圖書。用這種方式構(gòu)成的關(guān)系在進展修改時,會出現(xiàn)問題。因為一個圖書借閱者可能借閱多本書,假如某個圖書借閱者的某個字段如聯(lián)絡(luò) 出現(xiàn)變更,它所借閱的圖書記錄可能多個也就必須變化,這是不好的。因此數(shù)據(jù)用兩個關(guān)系表示更好。如今假如某圖書借閱者改變了它的聯(lián)絡(luò) ,只有關(guān)系表user的對應(yīng)行需要改變。當(dāng)然,要想產(chǎn)生一個,顯示圖書名稱及其借閱者聯(lián)絡(luò) 的報表,就需要將這兩個表的行結(jié)合起來。結(jié)果說明,將關(guān)系分別存儲,在生成報表的時候?qū)⑺鼈兘Y(jié)合起來,比把它們存儲在
4、一個合成的表中更好。user借書證號,姓名,性別,身份編號,身份證,聯(lián)絡(luò) ,bk圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數(shù)量那么和數(shù)據(jù)庫構(gòu)造的其他部分改良了數(shù)據(jù)庫的性能和可訪問性,這種數(shù)據(jù)經(jīng)常稱作開銷數(shù)據(jù),盡管有時也采用其他類型的數(shù)據(jù)構(gòu)造,如鏈表,但它主要還是索引。索引可以用來排序和快速訪問數(shù)據(jù)。下面以本人的圖書管理信息系統(tǒng)中的bk表為例來說明。假定數(shù)據(jù)在磁盤上是按圖書編號的遞增順序排列的,用戶想打印一個按圖書名稱排序的圖書數(shù)據(jù)報表。為此,所有的數(shù)據(jù)都需要從源表中提取出來并排序,除非表很小,否那么這是一個很費時的過程。或者,可以在圖書名稱字段上創(chuàng)立一個索引,該索引的條
5、目按照圖書名稱排序,這樣,該索引的條目可以讀出來,并用來按順序訪問bk數(shù)據(jù)。索引用于快速訪問數(shù)據(jù)。例如,一個用戶只想訪問bk表中圖書類別值為01的那些學(xué)生。假如沒有索引,那么必須搜索整個源表;但有了索引之后,可以找到索引條目,并使用它來挑選所有適宜部分DBS是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過DBS進展的。DBS總是基于某種數(shù)據(jù)模型,可以把DBS看成是某種數(shù)據(jù)模型在計算機系統(tǒng)上的詳細(xì)實現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。SSQLServer2000就是一種關(guān)系型數(shù)據(jù)庫
6、管理系統(tǒng)。關(guān)系模型。關(guān)系模型主要是用二維表格構(gòu)造表達實體集,用外鍵表示實體間聯(lián)絡(luò)。關(guān)系模型是由假設(shè)干個關(guān)系形式組成的集合。關(guān)系形式相當(dāng)于前面提到的記錄類型,它的實例稱為關(guān)系,每個關(guān)系實際上是一張二維表格。關(guān)系模型和層次、網(wǎng)狀模型的最大判別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡單用戶易懂,編程時并不涉及存儲構(gòu)造,訪問技術(shù)等細(xì)節(jié)。關(guān)系模型是數(shù)學(xué)化模型。SQL語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)化語言,已得到了廣泛的應(yīng)用。如圖1.1所示,DBS的特點和功能可以分為三個子系統(tǒng):設(shè)計工具子系統(tǒng)、運行子系統(tǒng)和DBS引擎。設(shè)計子系統(tǒng)有一個方便數(shù)據(jù)庫及其應(yīng)用創(chuàng)立的工具集。它典型地包含產(chǎn)生表、窗體、查詢和報表的工具。DBS產(chǎn)
7、品還提供編程語言和對編程語言的接口。運行子系統(tǒng)處理用設(shè)計子系統(tǒng)開發(fā)的應(yīng)用組件。它所包含的運行處理器用來處理窗體和數(shù)據(jù)庫的數(shù)據(jù)交互,以及答復(fù)查詢和打印報表等。DBS引擎從其他兩個組件承受懇求,并把它們翻譯成對操作系統(tǒng)的命令,以便讀寫物理介質(zhì)上的數(shù)據(jù)。DBS引擎還涉及事務(wù)管理、鎖、備份和恢復(fù)。創(chuàng)立那么。數(shù)據(jù)庫形式是一種設(shè)計,數(shù)據(jù)庫和應(yīng)用正是建立在此根底上的。域是一列可能擁有的值的集合。必須為每一個表的每一列確定域。除了數(shù)據(jù)的物理格式外,還需要確定是否有些域?qū)Ρ韥碚f是唯一的。數(shù)據(jù)庫形式的最后一個要素是業(yè)務(wù)規(guī)那么,它是對需要反映在數(shù)據(jù)庫和數(shù)據(jù)庫應(yīng)用程序中的業(yè)務(wù)活動的約束。業(yè)務(wù)規(guī)那么是形式的一個重要部分
8、,因為他們指定了無論什么數(shù)據(jù)變化到達DBS引擎,允許的數(shù)據(jù)值必須滿足的約束。不管無效的數(shù)據(jù)變化懇求是來自窗體的用戶、查詢/修改懇求還是應(yīng)用程序,DBS都應(yīng)該回絕。遺憾的是,不同的DBS產(chǎn)品用不同的方法施行業(yè)務(wù)規(guī)那么。在某些情況下,DBS產(chǎn)品不具備施行必要業(yè)務(wù)規(guī)那么創(chuàng)立開展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它可以進展信息管理。使用計算機進展信息控制,不僅進步了工作效率,而且大大的進步了其平安性。尤其對于復(fù)雜的信息管理,計算機可以充分發(fā)揮它的優(yōu)越性。計算機進展信息管理與信息管理系統(tǒng)的開發(fā)親密相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。
9、本系統(tǒng)就是為了管理好圖書館信息而設(shè)計的。圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開場使用,甚至尚未使用計算機進展信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況如借書天數(shù)、超過限定借書時間的天數(shù)的統(tǒng)計和核實等往往采用對借書卡的人工檢查進展,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計算、手抄進展。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易喪失,且不易查找??偟膩碚f,缺乏系統(tǒng),標(biāo)準(zhǔn)的信息管理手段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑
10、置比擬突出,這就是管理信息系統(tǒng)的開發(fā)的根本環(huán)境。數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工方式對圖書借閱情況進展人工管理,由于信息比擬多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時對它比擬清楚,時間一長,如再要進展查詢,就得在眾多的資料中翻閱、查找了,造成查詢費時、費力。如要對很長時間以前的圖書進展更改就更加困難了?;谶@此問題,我認(rèn)為有必要建立一個圖書管理系統(tǒng),使圖書管理工作標(biāo)準(zhǔn)化,系統(tǒng)化,程序化,防止圖書管理的隨意性,進步信息處理的速度和準(zhǔn)確性,可以及時、準(zhǔn)確、有效的查詢和修改
11、圖書情況。1.1系統(tǒng)所做工作1)理解應(yīng)用開發(fā)工具的現(xiàn)狀2)DelPHi6.0編程根底3)SSQLServer根底4)設(shè)計數(shù)據(jù)庫;設(shè)計界面5)開發(fā)數(shù)據(jù)庫。數(shù)據(jù)庫實現(xiàn)的一些功能有l(wèi)數(shù)據(jù)和數(shù)據(jù)說明的醒目顯示;l多條件的查詢、多條記錄的檢索、模糊查詢;l數(shù)據(jù)文件某種存儲格式導(dǎo)入數(shù)據(jù)窗體,經(jīng)過數(shù)據(jù)完好性校驗存入數(shù)據(jù)庫;l數(shù)據(jù)庫平安性的設(shè)計;l數(shù)據(jù)庫的設(shè)計、數(shù)據(jù)接口、界面的設(shè)計。1.3本文所作工作緒論部分對數(shù)據(jù)庫應(yīng)用系統(tǒng)的構(gòu)造、開發(fā)進展了簡要介紹,分析了圖書管理信息系統(tǒng)設(shè)計的特點和任務(wù)。第二章介紹了數(shù)據(jù)庫的設(shè)計和范式分析,并系統(tǒng)介紹了SQL語言,為設(shè)計和理解應(yīng)用程序做了鋪墊。第三章對系統(tǒng)介紹了Delphi
12、6.0的數(shù)據(jù)庫編程技術(shù)、SQL語言在Delphi6.0中的應(yīng)用、SSQLServer基矗第四章分析了圖書管理系統(tǒng)的應(yīng)用需求,設(shè)計了系統(tǒng)的數(shù)據(jù)庫構(gòu)造,并根據(jù)需求對系統(tǒng)功能進展了劃分和細(xì)化。第五章根據(jù)第四章的設(shè)計結(jié)果利用SSQLServer2000和Delphi6.0進展了詳細(xì)的應(yīng)用程序設(shè)計。總結(jié)部分介紹了設(shè)計體會和編程體會,并指出了系統(tǒng)設(shè)計中的缺乏和改良的方向。第二章數(shù)據(jù)庫理論根底一個成功的信息管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫是其中一個非常重要的條件和關(guān)鍵技術(shù)。信息管理系統(tǒng)所涉及的數(shù)據(jù)庫設(shè)計分五個步驟:數(shù)據(jù)庫需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計與加載測試。1數(shù)據(jù)庫需求分析的任務(wù)是將業(yè)
13、務(wù)管理單證流化為數(shù)據(jù)流,劃分主題之間的邊界,繪制出DFD圖,并完成相應(yīng)的數(shù)據(jù)字典。2概念設(shè)計的任務(wù)是從DFD出發(fā),繪制出本主題的實體關(guān)系圖,并列出各個實體與關(guān)系的綱要表。3邏輯設(shè)計的任務(wù)是從E-R圖與對應(yīng)的綱要表出發(fā),確定各個實體及關(guān)系的表名屬性。4物理設(shè)計的任務(wù)是確定所有屬性的類型、寬度與取值范圍,設(shè)計出根本表的主鍵,將所有的表名與字段名英文化如今很多軟件能支持中文字段,如SSQLServer,我就是用的中文字段名,實現(xiàn)物理建庫,完成數(shù)據(jù)庫物理設(shè)計字典。5加載測試工作貫穿于程序測試工作的全過程,整個錄入、修改、查詢、處理工作均可視為對數(shù)據(jù)庫的加載測試工作。要設(shè)計出一個好的信息管理系統(tǒng)數(shù)據(jù)庫,
14、除滿足系統(tǒng)所要求的功能外,還必須遵守以下原那么:根本表的個數(shù)越少越好。主鍵的個數(shù)越少越好。鍵是表間連接的工具,主鍵越少,表間的連接就越簡單。字段的個數(shù)越少越好。所有根本表的設(shè)計均應(yīng)盡量符合第三范式。數(shù)據(jù)庫的設(shè)計中,如何處理多對多的關(guān)系和如何設(shè)計主鍵,是兩個有著較大難度、需要重點考慮的問題。下面我們著重從SQL應(yīng)用、數(shù)據(jù)庫設(shè)計范式和查詢優(yōu)化等方面來分析本課題的系統(tǒng)關(guān)鍵技術(shù)和實現(xiàn)難點并加以解決。1數(shù)據(jù)庫構(gòu)造定義:目前的數(shù)據(jù)庫管理系統(tǒng)DBS有的是支持聯(lián)機事務(wù)處理LTP負(fù)責(zé)對事務(wù)數(shù)據(jù)進展采集、處理、存儲的操作型DBS,有的可支持?jǐn)?shù)據(jù)倉庫、有聯(lián)機分析處理LAP指為支持決策的制定對數(shù)據(jù)的一種加工操作功能的
15、大型DBS,有的數(shù)據(jù)庫是關(guān)系型的、有的可支持面向?qū)ο髷?shù)據(jù)庫。針對選擇的DBS,進展數(shù)據(jù)庫構(gòu)造定義。2數(shù)據(jù)表定義:數(shù)據(jù)表定義指定義數(shù)據(jù)庫中數(shù)據(jù)表的構(gòu)造,數(shù)據(jù)表的邏輯構(gòu)造包括:屬性名稱、類型、表示形式、缺省值、校驗規(guī)那么、是否關(guān)鍵字、可否為空等。關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系標(biāo)準(zhǔn)化要求進展數(shù)據(jù)庫設(shè)計,但為使效率高,標(biāo)準(zhǔn)化程度應(yīng)根據(jù)應(yīng)用環(huán)境和條件來決定。數(shù)據(jù)表設(shè)計不僅要滿足數(shù)據(jù)存儲的要求,還要增加一些如反映有關(guān)信息、操作責(zé)任、中間數(shù)據(jù)的字段或臨時數(shù)據(jù)表。3存儲設(shè)備和存儲空間組織:確定數(shù)據(jù)的存放地點、存儲途徑、存儲設(shè)備等,備份方案,對多版本如何保證一致性和數(shù)據(jù)的完好性。4數(shù)據(jù)使用權(quán)限設(shè)置:針對用戶的不同使用
16、要求,確定數(shù)據(jù)的用戶使用權(quán)限,確保數(shù)據(jù)平安。5數(shù)據(jù)字典設(shè)計:用數(shù)據(jù)字典描繪數(shù)據(jù)庫的設(shè)計,便于維護和修改。為了更好地組織數(shù)據(jù)和設(shè)計出實際應(yīng)用數(shù)據(jù)庫,應(yīng)該注意如下問題:標(biāo)準(zhǔn)化地重組數(shù)據(jù)構(gòu)造:對數(shù)據(jù)進展標(biāo)準(zhǔn)化表達,這在后面將會詳細(xì)討論。關(guān)系數(shù)據(jù)構(gòu)造的建立:在進展了數(shù)據(jù)根本構(gòu)造的標(biāo)準(zhǔn)化重組后,還必須建立整體數(shù)據(jù)的關(guān)系構(gòu)造。這一步設(shè)計完成后數(shù)據(jù)庫和數(shù)據(jù)構(gòu)造設(shè)計工作根本完成,只待系統(tǒng)實現(xiàn)時將數(shù)據(jù)分析和數(shù)據(jù)字典的內(nèi)容代入到所設(shè)計的數(shù)據(jù)整體關(guān)系構(gòu)造中,一個標(biāo)準(zhǔn)化數(shù)據(jù)庫系統(tǒng)構(gòu)造就建立起來了。建立關(guān)系數(shù)據(jù)構(gòu)造涉及三方面內(nèi)容:確定關(guān)聯(lián)的關(guān)鍵指標(biāo)項并建立關(guān)聯(lián)表;確定單一的父系記錄構(gòu)造;建立整個數(shù)據(jù)庫的關(guān)系構(gòu)造。1鏈接
17、關(guān)系確實定在進展了上述數(shù)據(jù)標(biāo)準(zhǔn)化重組后,已經(jīng)可以確保每一個根本數(shù)據(jù)表(我們簡稱為表)是標(biāo)準(zhǔn)的,但是這些單獨的表并不能完好地反映事物,通常需要通過指標(biāo)體系整體指標(biāo)數(shù)據(jù)才能完好全面地反映問題。也就是說在這些根本表的各宇段中,所存儲的是同一事物不同側(cè)面的屬性。那么計算機系統(tǒng)如何能知道哪些表中的哪些記錄應(yīng)與其它表中的哪些記錄相對應(yīng),它們表示的是同一個事物呢?這就需要在設(shè)計數(shù)據(jù)構(gòu)造時將這種各表之間的數(shù)據(jù)記錄關(guān)系確定下來。這種表與表之間的數(shù)據(jù)關(guān)系一般都是通過主或輔關(guān)鍵詞之間的連接來實現(xiàn)的。因為在每個表中只有主關(guān)鍵詞才能唯一地標(biāo)識表中的這一個記錄值(因為根據(jù)第三范式的要求,表中其它數(shù)據(jù)字段函數(shù)都依賴于主關(guān)鍵
18、詞),所以將表通過關(guān)鍵詞連接就可以唯一地標(biāo)識出某一事物不同屬性在不同表中的存放位置。2確定單一的父子關(guān)系構(gòu)造所謂確定單一的父系關(guān)系構(gòu)造就是要在所建立的各種表中消除多對多以下用:N來表示的現(xiàn)象,即設(shè)法使得所有表中記錄之間的關(guān)系呈樹狀構(gòu)造(只能由一個主干發(fā)出假設(shè)干條分支,而不能有假設(shè)干條主干交織發(fā)出假設(shè)干條分支狀況)。所謂的“父系就是指表的上一級關(guān)系表。消除多對多關(guān)系可以借助于E-R圖的方法來解決,也可以在系統(tǒng)分析時予以注意,防止這種情況的發(fā)生。消除這種:N情況的方法也很簡單,只需在二表之間增加一個表,那么原來:N的關(guān)系就改成了:1,1:N的關(guān)系了。確定數(shù)據(jù)資源的平安保密屬性:一般DBS都提供應(yīng)我
19、們自己定義數(shù)據(jù)平安保密性的功能。系統(tǒng)所提供的平安保密功能一般有8個等級(0-7級),4種不同方式(只讀、只寫、刪除、修改),而且允許用戶利用這8個等級的4種方式對每一個表自由地進展定義。定義平安保密性的方法一般有如下幾種:a原那么上所有文件都定義為4級,個別優(yōu)先級特別高的辦公室(終端或微機的入網(wǎng)賬號)可定義高于4級的級別,反之那么定義為低于4的級別。b統(tǒng)計文件(表)和數(shù)據(jù)錄入文件一般只對本工作站定義為只寫方式,對其它工作站那么定義為只讀方式。財務(wù)等保密文件一般只對中工作站(如財務(wù)科等)定義為可寫、可改、可刪除方式,對其它工作站那么根本表,而這個指標(biāo)類下面的一個個詳細(xì)指標(biāo)就是這個根本表中的一個字
20、段。但假如直接按照這種方式建庫顯然還不能算最正確。對于指標(biāo)體系中數(shù)據(jù)的構(gòu)造在建庫前還必須進展標(biāo)準(zhǔn)化的重新組織。a.數(shù)據(jù)組織的標(biāo)準(zhǔn)化形式在數(shù)據(jù)的標(biāo)準(zhǔn)化表達中,一般將一組互相關(guān)聯(lián)的數(shù)據(jù)稱為一個關(guān)系(relatin),而在這個關(guān)系下的每個數(shù)據(jù)指標(biāo)項那么被稱為數(shù)據(jù)元素(dataeleent),這種關(guān)系落實到詳細(xì)數(shù)據(jù)庫上就是根本表,而數(shù)據(jù)元素就是根本表中的一個字段(field)。標(biāo)準(zhǔn)化表達還規(guī)定在每一個根本表中必須定義一個數(shù)據(jù)元素為關(guān)鍵字(key),它可以唯一地標(biāo)識出該表中其它相關(guān)的數(shù)據(jù)元素。在標(biāo)準(zhǔn)化理論中表是二維的,它有如下四個性質(zhì):l在表中的任意一列上,數(shù)據(jù)項應(yīng)屬于同一個屬性(如圖中每一列都存放著不
21、同合同記錄的同一屬性數(shù)據(jù))。l表中所有行都是不一樣的,不允許有重復(fù)組項出現(xiàn)(如圖中每一行都是一個不同的合同記錄)。l在表中,行的順序無關(guān)緊要(如圖中每行存的都是合同記錄,至于先放哪一個合同都沒關(guān)系)。l在表中,列的順序無關(guān)緊要,但不能重復(fù)(如圖中合同號和合同名誰先誰后都沒關(guān)系,但二者不可重復(fù)或同名)。在對表的形式進展了標(biāo)準(zhǔn)化定義后,數(shù)據(jù)構(gòu)造還有五種標(biāo)準(zhǔn)化定義,定名為標(biāo)準(zhǔn)化形式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容的,即滿足第五范式的數(shù)據(jù)構(gòu)造自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)構(gòu)造自動滿足第一、二、三范式,依此類推。第一范式(fir
22、stnralfr,簡稱1stNF)就是指在同一表中沒有重復(fù)項出現(xiàn),假如有那么應(yīng)將重復(fù)項去掉。這個去掉重復(fù)項的過程就稱之為標(biāo)準(zhǔn)化處理。在本文所討論的開發(fā)方法里,1stNF實際上是沒有什么意義的。因為我們按標(biāo)準(zhǔn)化建立的指標(biāo)體系和表的過程都自動保證了所有表都滿足1stNF。第二范式(sendnralfr,簡稱2ndNF)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素為主關(guān)鍵字(priarykey),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應(yīng)。例如,在圖l9.7中假如我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合
23、同的任何一項詳細(xì)信息。通常我們稱這種關(guān)系為函數(shù)依賴(funtinaldepEndene)關(guān)系。即表中其它數(shù)據(jù)元素都依賴于主關(guān)鍵字,或稱該數(shù)據(jù)元素唯一地被主關(guān)鍵字所標(biāo)識。第三范式(thirdnralfr,簡稱3rdNF)就是指表中的所有數(shù)據(jù)元素不但要可以唯一地被主關(guān)鍵字所標(biāo)識,而且它們之間還必須互相獨立,不存在其它的函數(shù)關(guān)系。也就是說對于一個滿足了2ndNF的數(shù)據(jù)構(gòu)造來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關(guān)鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系標(biāo)準(zhǔn)根底SQL(StruturedQueryLanguage,
24、構(gòu)造查詢語言)是一個功能強大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI美國國家標(biāo)準(zhǔn)學(xué)會聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比方在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:rale、Sybase、irsftSQLServer、Aess、Ingres等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比方Selet、Insert、Update、Delete、reate和Drp常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。SSQLServer
25、就是用的Transat-SQL。SQL語言有著非常突出的優(yōu)點,主要是:n非過程化語言n統(tǒng)一的語言n是所有關(guān)系數(shù)據(jù)庫的公共語言非過程化語言:SQL是一個非過程化的語言,因為它一次處理一個記錄,對數(shù)據(jù)提供自動導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)構(gòu)造上工作,而不對單個記錄進展操作,可操作記錄集,所有SQL語句承受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。SQL不要求用戶指定對數(shù)據(jù)的存放方法,這種特性使用戶更易集中精力于要得到的結(jié)果;所有SQL語句使用查詢優(yōu)化器,它是RDBS的一部分,由它決定對指定數(shù)據(jù)存取的最快速度的手段,查詢優(yōu)化器知道存在什么索
26、引,在哪兒使用索引適宜,而用戶那么從不需要知道表是否有索引、有什么類型的索引。統(tǒng)一的語言:SQL可用于所有用戶的DB活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。DataanipulatinLanguage,數(shù)據(jù)操作語言:用于檢索或者修改數(shù)據(jù);DDLDataDefinitinLanguage,數(shù)據(jù)定義語言:用于定義數(shù)據(jù)的構(gòu)造,比方創(chuàng)立、修改或者刪除數(shù)據(jù)庫對象;DLDatantrlLanguage,數(shù)據(jù)控制語言:用于定義數(shù)據(jù)庫用戶的權(quán)限。DL組可以細(xì)分為以下的幾個語句:SELET:用于檢索數(shù)據(jù);INSERT:用于增加數(shù)據(jù)到數(shù)據(jù)庫;UPDATE:用于
27、從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù);DELETE:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。DDL語句可以用于創(chuàng)立創(chuàng)立和修改數(shù)據(jù)庫構(gòu)造的一種語句,包括reate、Alter和Drp語句。數(shù)據(jù)操作語言DL:包括數(shù)據(jù)查詢與數(shù)據(jù)更新。數(shù)據(jù)查詢主要是由Selet語句完成,這一點不再贅述。而數(shù)據(jù)更新所造成的風(fēng)險大大超過數(shù)據(jù)查詢。數(shù)據(jù)庫管理系統(tǒng)必須在更改期內(nèi)保護所存儲的數(shù)據(jù)的一致性,確保有效的數(shù)據(jù)進入數(shù)據(jù)庫,數(shù)據(jù)庫必須保持一致性,DBS還必須協(xié)調(diào)多用戶的并行更新,以確保用戶和它們的更改不至于影響其它用戶的作業(yè)。用于修改數(shù)據(jù)庫內(nèi)容的SQL語句主要有以下三個:(1)Insert,向一個表中參加新的數(shù)據(jù)行(2)Delete,從一個表中刪除
28、數(shù)據(jù)行(3)Update,更改數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù)Insert標(biāo)準(zhǔn)語法:INSERTINTtable_nae(l1,l2.)VALUES(value1,value2.)下例要將借書證號為000001作為一個新的借書情況參加借書情況表NER中InsertIntner(借書證號,圖書編號,借書日期)values(000001,00000001,2002-9-12)Insert語句還可以將多行數(shù)據(jù)添加到目的表中去,在這種形式的Insert語句中,新行的數(shù)據(jù)值不是在語句正文中明確地指定的,而是語句中指定的一個數(shù)據(jù)庫查詢。添加的值來自數(shù)據(jù)庫自身的行,在某些特定的狀態(tài)下,這是非常有用的。多行Insert
29、語句為拷貝數(shù)據(jù)提供了一種緊湊而高效的方法,但我在自已做的圖書管理系統(tǒng)中沒有使用這種方法,我在系統(tǒng)中是使用循環(huán)按照上面的用法來完成多個記錄的插入。Update語句用于更新單表中選定行的一列或多列的值。要更新的目的表在語句中定義,Set子句那么指定要更新哪些列并計算它們的值。Update語句總是包含here語句,而且Update語句比擬FRlist-f-tablesGRUPBYlun-list;這個GRUPBY子句將集中所有的行在一起,它包含了指定列的數(shù)據(jù)以及允許合計函數(shù)來計算一個或者多個列。在本人的系統(tǒng)中在顯示數(shù)據(jù)時用到了此語句來對查詢所得的內(nèi)容排序然后再顯示。u組合條件和布爾運算符以下的SQL
30、語句中就含有組合條件:SELETlun1,SU(lun2)FRlist-f-tablesHEREnditin1ANDnditin2;下面是一個例如部分:一部分是組件類,這些組件類通常以某種方式出如今組件面板上,當(dāng)用戶從組件面板上點取一個類的圖標(biāo)后,在程序中就自動生成了該類的對象非可視組件除外;另一部分是功能類,這此功能類的對象通常出如今程序代碼中,起著不可代替的作用,但是這些功能類在組件面板上是找不到的。在Delphi中,每一個類的祖先都是Tbjet類,整個類的層次構(gòu)造就像一棵倒掛的樹,在最頂層的樹根即為Tbjet類。這樣,按照面向?qū)ο缶幊痰母舅枷?,就使得用戶可用Tbjet類這個類型代替任何
31、其它類的數(shù)據(jù)類型。實際上在Delphi的類庫中,Tbjet類派生出了為數(shù)相當(dāng)眾多的子類,它們形成了一個龐大的體系,通常情況下,假如不自行開發(fā)組件,就不必理解整個類的體系構(gòu)造,只用到類層次樹的葉結(jié)點就足夠了。這一小節(jié)簡單介紹一下Delphi6.0中VL可視化組件庫組件的體系構(gòu)造。但凡做過程序開發(fā)的人都知道從來沒有單純的數(shù)據(jù)應(yīng)用程序,也就是說,數(shù)據(jù)庫應(yīng)用程序必須和用戶界面可以是圖形界面,也可以是命令接口元素相結(jié)合,只講界面或只講數(shù)據(jù)庫本身都構(gòu)不成數(shù)據(jù)庫應(yīng)用程序,因此用Delphi6.0開發(fā)數(shù)據(jù)庫應(yīng)用程序就隱含著界面開發(fā)。Delphi6中的VL組件可用圖3-1來說明。組件在Delphi程序的開發(fā)中是
32、最顯眼的角色。大家知道,在編寫程序時一般都開場于在組件面板上選擇組件并定義組件間的互相作用。但也有一些組件不在組件面板上,例如Tfr和Tappliatin典型的非可視組件。組件是Tpnents派生出來的子類,可以流的形式存放在DF文件中,具有事件和Publish屬性。窗口組件類是窗口化的可視化組件類,在Delphi的類庫中占有最大的份額。在實際編程中,窗口組件類的對象都有句柄,可以承受輸入焦點和包含其它組件。圖形組件與窗口組件并列,是另一大類組件。圖形組件不是基于窗口的,因此不能有窗口句柄,不能承受輸入焦點和包含其它組件。從圖8-43中可以看出,圖形組件的基類是Tgraphintrl,在實際編
33、程中,它們必須寄生于它們的宿主窗口組件類的對象,由它們的擁有者負(fù)責(zé)其顯示,而且它們還能觸發(fā)一些和鼠標(biāo)活動相關(guān)的事件。圖形控件最典型的例子是Tlabel和TspeedButtn。由此可以看出圖形組件的功能很弱,圖形組件的用途何在呢?其實使用圖形組件的最大好處在于節(jié)省資源,正是因為它們的功能較弱,所以使用的系統(tǒng)資源就要少。在一個應(yīng)用程序中,假如能在不影響其功能的前提下合理大量地使用圖形組件,將會大減少程序?qū)ο到y(tǒng)資源的消耗。非可視組件是與可視組件相并列的另一類組件,非可視組件在程序運行中是不可見的除各種對話框組件之外,事實上有人認(rèn)為對話框組件不能歸入非可視組件,應(yīng)該是另一種介于可視與非可視之間的組件
34、。最后要說明一下,常說的控件實際上是一種組件。也就是說組件這個概念要大于控件,控件在內(nèi)涵上包含于組件中??丶蒳nds系列操作系統(tǒng)提出并使用,而組件是Brland和其它廠商在對inds控件做了必要的擴展之后提出來的概念,它們是在不同時期由不同的廠商提出的概念。3.2數(shù)據(jù)庫組件介紹用Delphi6開發(fā)數(shù)據(jù)庫應(yīng)用,重點是和各種數(shù)據(jù)庫組件打交道,能和數(shù)據(jù)庫掛鉤的組件對象有5種,它們是:Sessin數(shù)據(jù)庫會話、Database數(shù)據(jù)庫、Dataset數(shù)據(jù)集、DataSure數(shù)據(jù)源、Datantrl數(shù)據(jù)控制組件,也叫data-ntrls即數(shù)據(jù)感知組件。其中前面4種統(tǒng)稱為數(shù)據(jù)訪問DataAess組件。這些組
35、件的互相關(guān)系如圖3-2所示。AD組件Delphi6.0包含了可以用來訪問irsft公司的AtiveXDatabjetsAD格式數(shù)據(jù)庫的組件。AD是irsft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完好解決方法。AD的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。irsft公司用來訪問AD數(shù)據(jù)的應(yīng)用程序界面技術(shù)是LEDB。LEDB是一種底層編程接口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。LEDB是一個由pnentbjetdel接口組成的集合,用來隱藏創(chuàng)立數(shù)據(jù)訪問效勞過程中的細(xì)節(jié)。LEDB提供了訪問任何數(shù)據(jù)資源的方法,包括互
36、相關(guān)聯(lián)的數(shù)據(jù)庫和互相不關(guān)聯(lián)的數(shù)據(jù)庫、Eail和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對象。Delphi的AD組件無需依靠BDE而是使用AD技術(shù),提供了可以通過數(shù)據(jù)控制組件訪問數(shù)據(jù)的新方法。唯一的要求是在使用AD組件時必須運行AD/LEDB。AD組件的使用使得DELPHI在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的打破。數(shù)據(jù)模塊設(shè)計窗口數(shù)據(jù)模塊設(shè)計窗口是用來設(shè)計和維護數(shù)據(jù)模塊的。數(shù)據(jù)模塊設(shè)計窗口中包含了所有以.DTI作為文件擴展名的DataDiagra文件的信息。DTI文件在編譯時不起任何作用。3.3SQL語言在Delphi中的應(yīng)用在Delphi中使用SQL語言非常方便,一般來說,都是通過Tqu
37、ery或TADquery組件來使用SQL語言的??梢栽赥query或TADquery組件的SQL屬性中設(shè)置SQL語句。設(shè)計程序時,在該組件的屬性對話框中選擇SQL屬性,單擊帶省略號的按鈕,就可以翻開StringListEditr對話框,然后我們就可以在對話框中添加SQL語句。還可以使用Delphi的SQLBuilder來自動生成SQL語句,這樣可以防止手工編寫SQL而可能造成的語法錯誤。靜態(tài)SQL語句在程序設(shè)計時便已固定下來,它不包含任何參數(shù)和變量。動態(tài)SQL語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語句是一條動態(tài)SQL語句:Selet*FrBkhere圖書編
38、號=:bkde;其中的變量bkde便是一個參數(shù)變量,它由一個冒號引導(dǎo),在程序運行過程中,必需要為該參數(shù)賦值,該條SQL語句才能正確執(zhí)行,每次運行應(yīng)用程序時可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:根據(jù)參數(shù)在SQL語句中出現(xiàn)的順序,設(shè)置TADQuery組件的paraeters屬性值為參數(shù)賦值。直接根據(jù)SQL語句中各參數(shù)的名字,調(diào)用ParaByNae方法來為各參數(shù)賦值。將TADQuery組件的DataSure屬性設(shè)置為另一個數(shù)據(jù)源,這樣將另一個數(shù)據(jù)源中與當(dāng)前TADQuery組件的SQL語句中的參數(shù)名相匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也能實現(xiàn)所謂的連接查詢,創(chuàng)立主要明細(xì)型數(shù)據(jù)庫應(yīng)
39、用。在使用動態(tài)SQL語句編程時,常常用到一個很重要的方法Prepare,調(diào)用Prepare方法之后,Delphi會將帶參數(shù)的SQL語句傳送給與其對應(yīng)的數(shù)據(jù)庫引擎,對動態(tài)SQL語句進展語法分析和優(yōu)化。雖然在用動態(tài)SQL語句編程時,調(diào)用Prepare方法并不是必須的,但是調(diào)用Prepare方法后,會極大地進步動態(tài)SQL語句的執(zhí)行性能,特別是當(dāng)要反復(fù)屢次執(zhí)行同一條動態(tài)SQL語句時,其優(yōu)越性會更加明顯。假如在應(yīng)用程序中執(zhí)行一條SQL語句之前并沒有顯式地調(diào)用Prepare方法,每次在執(zhí)行SQL語句時,Delphi會隱含地調(diào)用Prepare方法以準(zhǔn)備這個查詢。TadQuery部件還有一個Prepare屬性
40、,這是一個布爾型屬性,當(dāng)其屬性值為True時,說明該查詢已被準(zhǔn)備好了(SQL語句已被傳送到數(shù)據(jù)庫引擎中),當(dāng)我們使用參數(shù)編輯器ParaetersEditr來為動態(tài)SQL語句中的參數(shù)賦值時,當(dāng)設(shè)置完相應(yīng)的參數(shù)值并退出參數(shù)編輯器時,Delphi會隱含地調(diào)用Prepare方法以準(zhǔn)備好查詢。當(dāng)SQL語句執(zhí)行完之后,要想準(zhǔn)備下一個查詢,首先必須調(diào)用lse方法,然后才能調(diào)用Prepare方法準(zhǔn)備下一個查詢。一般來說,在一個應(yīng)用程序中應(yīng)該調(diào)用一次Prepare方法,常常在窗體的nreate事件處理過程中調(diào)用Prepare方法,然后用上述介紹的方法為參數(shù)賦值,最后調(diào)用pen方法或ExeSQL方法執(zhí)行SQL語句
41、,以完成查詢。當(dāng)然在調(diào)用Prepare方法準(zhǔn)備好一個查詢時,會消耗一些數(shù)據(jù)庫資源,因此每當(dāng)一個查詢執(zhí)行完畢之后,要養(yǎng)成調(diào)用UnPrepare方法以撤消查詢的好習(xí)慣。在運行程序過程中,通過程序改變TQuery或TADquery部件的SQL屬性值時,Delphi會自動地調(diào)用lse方法和UnPrepare方法,以撤消查詢。在程序運行過程中,要想設(shè)置Tquery或TADquery部件的SQL屬性,必須首先調(diào)用lse方法,關(guān)閉TQuery或TADquery部件,然后再調(diào)用lear方法去除平安的,假如TQuery或TADquery部件已經(jīng)被關(guān)閉了,調(diào)用lse方法時不會產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性
42、設(shè)置新的SQL命令語句時,必需要調(diào)用lear方法以去除SQL屬性中現(xiàn)存的SQL命令語句,假如不調(diào)用lear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語句,那么新設(shè)置的SQL命令語句會追加在現(xiàn)存SQL命令語句后面,在程序運行時常常會出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運行下去。在這里要特別注意的,一般情況下TQuery或TADquery部件的SQL屬性只能包含一條完好的SQL語句,它不允許被設(shè)置成多條SQL語句。當(dāng)然有些數(shù)據(jù)庫效勞器也支持在TQuery或TADquery部件的SQL屬性中設(shè)置多條SQL語句,只要數(shù)據(jù)庫效勞器允許這樣,我們在編程時可以為SQL屬性設(shè)置多條SQL語句。在為TQu
43、ery或TADquery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。在設(shè)計過程中,設(shè)置完TQuery或TADquery部件的SQL屬性之后將其Ative屬性的值置為True,這樣便可以執(zhí)行SQL屬性中的SQL程序,假如應(yīng)用中有與TQuery或TADquery部件相連的數(shù)據(jù)閱讀部件(如TDDGridTDBEdit等)那么在這些數(shù)據(jù)閱讀部件中會顯示SQL程序的執(zhí)行結(jié)果。在應(yīng)用程序運行過程中,通過程序調(diào)用TQuery或TADquery組件的pen方法或ExeSQL方法可以執(zhí)行其SQL屬性中的SQL程序。pen方法和ExeSQL方法是不一樣的。pe
44、n方法只能用來執(zhí)行SQL語言的查詢語句(Selet命令),并返回一個查詢結(jié)果集,而ExeSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:Query1.pen(這樣會返回一個查詢結(jié)果集)假如調(diào)用pen方法,而沒有查詢結(jié)果時,會出錯。此時應(yīng)該調(diào)用ExeSQL方法來代替pen方法。如:Query1.ExeSQL(沒有返回結(jié)果)當(dāng)然在設(shè)計應(yīng)用程序時,程序設(shè)計人員是無法確定TQuery或TADquery組件中的SQL語句是否會返回一個查詢結(jié)果的。對于這種情況應(yīng)當(dāng)用TryExept模塊來設(shè)計程序。在Try部分調(diào)用pen方法,而在Exept部分的數(shù)據(jù)這
45、種數(shù)據(jù)就跟通過TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過數(shù)據(jù)閱讀部件來編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Pst方法或當(dāng)焦點分開當(dāng)前的數(shù)據(jù)閱讀部件時,用戶對數(shù)據(jù)的修改自動地被寫回到數(shù)據(jù)庫中。u非活動的數(shù)據(jù)(只讀數(shù)據(jù))用戶通過數(shù)據(jù)閱讀部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動的數(shù)據(jù),在應(yīng)用程序中必需要設(shè)置Tquery或TADquery組件的RequestLive屬性值為True,然而并不是在任何情況下(通過設(shè)置RequestLive的屬值True)都可以獲得“活動的數(shù)據(jù)的,要想獲得“活動的數(shù)據(jù),除了將TQuery部件的RequestLive
46、屬性設(shè)置為True外,相應(yīng)的SQL命令還要滿足以下條件。本地SQL語句查詢情況下,要得到可更新的數(shù)據(jù)集,SQL語句的限制為:n查詢只能涉及到一個單獨的表nSQL語句中不能包含RDERBY命令nSQL語句中不能含聚集運算符SU或AVGn在Selet后的字段列表中不能有計算字段n在Selet語句HERE部分只能包含字段值與常量的比擬運算,這些比擬運算符是:Like,=,=。各比擬運算之間可以有并和交運算:AND和R當(dāng)通過SQL語句查詢數(shù)據(jù)庫效勞器中的數(shù)據(jù)庫表:n查詢只能涉及到一個單獨的表nSQL語句中不能包含RDERBY命令nSQL語句中不能含聚集運算符SU或AVG運算另外,假如是查詢Sybase
47、數(shù)據(jù)庫中的表,那么被查詢的表中只能有一個索引。假如在應(yīng)用程序中要求TQuery或TADquery組件返回一個“活動的查詢結(jié)果數(shù)據(jù)集,但是SQL命令語句不滿足上述約束條件時,對于本地數(shù)據(jù)庫的SQL查詢,BDE只能返回只讀的數(shù)據(jù)集。對于數(shù)據(jù)庫效勞器中的SQL查詢,只能返回錯誤的代碼。當(dāng)Tquery或TADquery組件返回一個“活動的查詢結(jié)果數(shù)據(jù)集時,它的andIfy屬性的值會被設(shè)置成True。3.4SSQLServer簡述SQLServer是一個后臺數(shù)據(jù)庫管理系統(tǒng),它功能強大操作簡便,日益為廣闊數(shù)據(jù)庫用戶所喜歡。越來越多的開發(fā)工具提供了與SQLServer的接口。SQLServer是一個關(guān)系數(shù)據(jù)
48、庫管理系統(tǒng),它最初是由irsft、Sybase和Ashtn-Tate三家公司共同開發(fā)的。于1988年推出了第一個S/2版本,在indsNT推出后,irsft與Sybase在SQLServer的開發(fā)上就分道揚鑣了,irsft將SQLServer移植到indsNT系統(tǒng)上,專注于開發(fā)推廣SQLServer的indsNT版本。SQLServer2000是irsft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的最新版本,該版本繼承了SQLServer7.0版本的優(yōu)點,同時又比它增加了許多更先進的功能、具有使用方便、可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點??煽缭綇倪\行irsftinds98的膝上型電腦到運行i
49、rsftinds2000的大型多處理器的效勞器等多種平臺使用。SSQLServer不但可以應(yīng)用于大中型數(shù)據(jù)庫管理中,建立分布式關(guān)系數(shù)據(jù)庫,并且也可以開發(fā)桌面數(shù)據(jù)庫。事實上,SQLServer數(shù)據(jù)庫處理的根本構(gòu)造,采取關(guān)系型數(shù)據(jù)庫形式,盡管如此,相信大家都可以輕易的發(fā)現(xiàn),在SQLServer的數(shù)據(jù)庫處理方式,那么是使用面向?qū)ο蟮牟僮鞣绞脚c精神,也就是說,SQLServer的所有功能,都可以基于系統(tǒng)已經(jīng)建立好的一些對象來達成,是相當(dāng)面向?qū)ο蟮囊粋€系統(tǒng)構(gòu)造。SQLServer企業(yè)管理器是SQLServer的主要管理工具,它提供了一個遵從標(biāo)準(zhǔn)的用戶界面,使用戶得以:定義SQLServer實例組。將個別
50、效勞器注冊到組中。為每個已注冊的效勞器配置所有SQLServer選項。在每個已注冊的效勞器中創(chuàng)立并管理所有SQLServer數(shù)據(jù)庫、對象、登錄、用戶和權(quán)限。在每個已注冊的效勞器上定義并執(zhí)行所有SQLServer管理任務(wù)。通過喚醒調(diào)用SQL查詢分析器,交互地設(shè)計并測試SQL語句、批處理和腳本。喚醒調(diào)用為SQLServer定義的各種向?qū)А5谌聢D書管理系統(tǒng)設(shè)計分析4.1應(yīng)用需求分析圖書管理系統(tǒng)需要滿足來自三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進展操作,
51、同時形成借書或還書報表給借閱者查看確認(rèn);圖書館管理人員的功能最為復(fù)雜,包括對工作人員、圖書借閱者、圖書進展管理和維護,及系統(tǒng)狀態(tài)的查看、維護并生成催還圖書報表。圖書借閱者可直接查看圖書館圖書情況,假如圖書借閱者根據(jù)本人借書證號和密碼登錄系統(tǒng),還可以進展本人借書情況的查詢和維護部分個人信息。一般情況下,圖書借閱者只應(yīng)該查詢和維護本人的借書情況和個人信息,假設(shè)查詢和維護其他借閱者的借書情況和個人信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。圖書館工作人員有修改圖書借閱者借書和還書記錄的權(quán)限,所以需對工作人員
52、登陸本模塊進展更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者參加借書記錄或是還書記錄,并打印生成相應(yīng)的報表給用戶查看和確認(rèn)。圖書館管理人員功能的信息量大,數(shù)據(jù)平安性和保密性要求最高。本功能實現(xiàn)對圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計、工作人員和管理人員信息查看及維護。圖書館管理員可以閱讀、查詢、添加、刪除、修改、統(tǒng)計圖書的根本信息;閱讀、查詢、統(tǒng)計、添加、刪除和修改圖書借閱者的根本信息,閱讀、查詢、統(tǒng)計圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應(yīng)該由圖書館工作人員執(zhí)行,但是,刪除某條圖書借閱者根本信息記錄時,應(yīng)實現(xiàn)對該圖書借閱者借閱記錄的級聯(lián)刪除。并且還應(yīng)
53、具有生成催還圖書報表,并打印輸出的功能。在本系統(tǒng)中由于沒有打印機設(shè)備供試驗,所以預(yù)先把報表打印改成報表預(yù)覽。設(shè)計不同用戶的操作權(quán)限和登陸方法對所有用戶開放的圖書查詢借閱者維護借閱者個人部分信息借閱者查看個人借閱情況信息維護借閱者個人密碼根據(jù)借閱情況對數(shù)據(jù)庫進展操作并生成報表根據(jù)還書情況對數(shù)據(jù)庫進展操作并生成報表查詢及統(tǒng)計各種信息維護圖書信息維護工作人員和管理員信息維護借閱者信息處理信息的完好性對借閱過期的圖書生成報表圖4-2圖書管理系統(tǒng)數(shù)據(jù)庫應(yīng)用需求的總結(jié)根據(jù)以上所做的需求分析,并略掉一些細(xì)節(jié)如不考慮用戶的登錄;對記錄的維護,得出以下的三層數(shù)據(jù)流圖。4.2系統(tǒng)功能模塊劃分系統(tǒng)功能框圖如圖4-1
54、0所示。1設(shè)計部分ER形式實體和屬性的定義:圖書圖書編號,圖書名稱,作者,出版社,出版日期,備注,價格,數(shù)量,借閱者借書證號,姓名,性別,身份證,聯(lián)絡(luò) ,密碼身份身份編號,身份描繪,最大借閱數(shù)圖書類別圖書類別編號,類別描繪ER模型的“聯(lián)絡(luò)用于刻畫實體之間的關(guān)聯(lián)。一種完好的方式是對部分構(gòu)造中任意兩個實體類型,根據(jù)需求分析的結(jié)果,考察部分構(gòu)造中任意兩個實體類型之間是否存在聯(lián)絡(luò)。假設(shè)有聯(lián)絡(luò),進一步確定是1:N,:N,還是1:1等。還要考察一個實體類型內(nèi)部是否存在聯(lián)絡(luò),兩個實體類型之間是否存在聯(lián)絡(luò),多個實體類型之間是否存在聯(lián)絡(luò),等等。聯(lián)絡(luò)定義如圖4-5所示。解釋如下:u一個借閱者用戶只能具有一種身份,
55、而一種身份可被多個借閱者所具有;u一本圖書只能屬于一種圖書類別類別,而一種圖書類別可以包含多本圖書;u一個用戶可以借閱多本不同的書,而一本書也可以被多個不同的用戶所借閱。2設(shè)計全局ER形式所有部分ER形式都設(shè)計好了后,接下來就是把它們綜合成單一的全局概念構(gòu)造。全局概念構(gòu)造不僅要支持所有部分ER形式,而且必須合理地表示一個完好、一致的數(shù)據(jù)庫概念構(gòu)造。1)確定公共實體類型為了給多個部分ER形式的合并提供開場合并的根底,首先要確定各部分構(gòu)造中的公共實體類型。在這一步中我們僅根據(jù)實體類型名和鍵來認(rèn)定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有一樣鍵的實體類型作為公共實體類型的另一
56、類候眩2)部分ER形式的合并合并的原那么是:首先進展兩兩合并;先和合并那些現(xiàn)實世界中有聯(lián)絡(luò)的部分構(gòu)造;合并從公共實體類型開場,最后再參加獨立的部分構(gòu)造。3)消除沖突沖突分為三類:屬性沖突、構(gòu)造沖突、命名沖突。設(shè)計全局ER形式的目的不在于把假設(shè)干部分ER形式形式上合并為一個ER形式,而在于消除沖突,使之成為可以被所有用戶共同理解和承受的同一的概念模型。3)全局ER形式的優(yōu)化在得到全局ER形式后,為了進步數(shù)據(jù)庫系統(tǒng)的效率,還應(yīng)進一步根據(jù)處理需求對ER形式進展優(yōu)化。一個好的全局ER形式,除能準(zhǔn)確、全面地反映用戶功能需求外,還應(yīng)滿足以下條件:實體類型的個數(shù)要盡可能的少;實體類型所含屬性個數(shù)盡可能少;實
57、體類型間聯(lián)絡(luò)無冗余。綜上所述,“圖書管理系統(tǒng)的全局ER形式如圖4-13所示。本人所使用的SSQLServer就是關(guān)系型的DBS,因此數(shù)據(jù)庫的邏輯設(shè)計過程就是把ER圖轉(zhuǎn)化為關(guān)系形式的過程。由于關(guān)系模型所具有的優(yōu)點,邏輯設(shè)計可以充分運用關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)化理論,使設(shè)計過程形式化地進展。設(shè)計結(jié)果是一組關(guān)系形式的定義。1導(dǎo)出初始關(guān)系形式bk圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數(shù)量lass圖書類別#,類別名user借書證號,姓名,性別,身份編號,身份證,聯(lián)絡(luò) ,密碼ID身份編號#,身份描繪,最大借閱數(shù)ner借書證號#,圖書編號#,借書日期圖4-14關(guān)系形式集2產(chǎn)生子形式子形式是用戶所用到的那部分?jǐn)?shù)據(jù)的描繪。除了指出用戶用到的數(shù)據(jù)外,還應(yīng)指出數(shù)據(jù)與概念形式中相應(yīng)數(shù)據(jù)的聯(lián)絡(luò),即指出概念形式與子形式之間的對應(yīng)性。借書子形式借書證號#,姓名,圖書編號,圖書名稱,借書日期圖4-15部分子形式3根據(jù)設(shè)計中出現(xiàn)的問題本人在寫系統(tǒng)時還參加創(chuàng)立七個根本數(shù)據(jù)庫表如表4-14-7所示,然后根據(jù)全局ER圖,建立各個表之間的聯(lián)絡(luò),如圖4-8所示。表4-1借閱者根本信息表的構(gòu)造(User)表4-2
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購房合同補充協(xié)議范本
- 財務(wù)管理系統(tǒng)實施合同
- 農(nóng)業(yè)訂單合同樣本
- 材料供應(yīng)合同書樣本
- 度室內(nèi)裝飾壁畫合同:手繪墻畫服務(wù)協(xié)議
- 農(nóng)業(yè)灌溉合同轉(zhuǎn)讓協(xié)議
- 農(nóng)業(yè)機械租賃合同(范本7)
- 期貨市場算法交易策略定制服務(wù)考核試卷
- 家禽飼養(yǎng)業(yè)產(chǎn)品質(zhì)量安全追溯體系構(gòu)建考核試卷
- 工業(yè)控制計算機在印刷機械控制中的實踐考核試卷
- 贏的思考與態(tài)度課件
- 2024年2月國考海關(guān)面試題目及參考答案
- TZSA 158-2023 雙引擎分布式視頻處理器技術(shù)規(guī)范
- 2型糖尿病科普講座課件
- 術(shù)中物品清點不清時應(yīng)急預(yù)案及流程課件
- 第1課《生存的家園》課件
- 選礦廠三級安全教育課件
- 《座社交恐懼癥》課件
- 豆角綠色防控技術(shù)方案
- 顱腦創(chuàng)傷后顱內(nèi)壓變化規(guī)律分析
- 河北省普通高校??粕究平逃x拔考試英語真題及答案解析
評論
0/150
提交評論