已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
封面 畢業(yè)論文畢業(yè)論文( (設(shè)計設(shè)計) ) 圖圖 書書 管管 理理 系系 統(tǒng)統(tǒng) 畢業(yè)設(shè)計(論文) 前言 摘摘 要要 圖書管理系統(tǒng)是典型的信息管理系統(tǒng)(mis),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前 端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的庫。 而對于后者則要求應(yīng)用程序功能完備,易使用等特點。 因此本人結(jié)合開入式圖書館的要求,對 ms sql server2000 數(shù)據(jù)庫管理系統(tǒng)、sql 語言原理、 vb 應(yīng)用程序設(shè)計,vb 數(shù)據(jù)庫技術(shù)進行了較深入的學(xué)習(xí)和應(yīng)用,主要完成對圖書管理系統(tǒng)的需 求分析、功能模塊劃分、數(shù)據(jù)庫模式分析,并由此設(shè)計了數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序。系統(tǒng)運行結(jié) 果證明,本文所設(shè)計的圖書管理系統(tǒng)可以滿足借閱者、圖書館工作人員和高級管理員三方面的 需要。 第一章對數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)和圖書管理系統(tǒng)進行了簡明的介紹,并分析了開發(fā)圖書管理系統(tǒng) 所應(yīng)進行的工作。 第二章對數(shù)據(jù)庫的設(shè)計和 sql 語言的使用進行了系統(tǒng)分析,為深入理解數(shù)據(jù)庫應(yīng)用打下了 基礎(chǔ)。 第三章學(xué)習(xí)了具體的開發(fā)工具 vb 6.0,對其數(shù)據(jù)庫組件,sql 語言在 vb 中的應(yīng)用等數(shù)據(jù) 庫編程關(guān)鍵技術(shù)進行了系統(tǒng)的介紹。 第四章分析了圖書管理信息系統(tǒng)的應(yīng)用需求,按照數(shù)據(jù)庫設(shè)計理論一步一步地給出了系統(tǒng)需求 說明書、局部 er 圖、全局 er 圖、系統(tǒng)關(guān)系模式,子模式,利用 ms sql server2000 建立 了數(shù)據(jù)庫 第五章進行了具體的程序設(shè)計,具體劃分了三類用戶的操作權(quán)限,設(shè)計了了三個操作界面。 實現(xiàn)了數(shù)據(jù)庫表的瀏覽,記錄的添加、刪除和修改,報表的生成,實現(xiàn)了多數(shù)據(jù)庫表的連接操 作,實現(xiàn)了多條件查詢和模糊查詢,并靈活實現(xiàn)了對不可更新查詢結(jié)果集的更新操作,實現(xiàn)了 主從表操作,實現(xiàn)了密碼維護功能,最后,系統(tǒng)還可以導(dǎo)入數(shù)據(jù)庫以對任意同結(jié)構(gòu)的數(shù)據(jù)庫進 行操作。 設(shè)計充分利用 vb 6、ms sql server2000 數(shù)據(jù)庫技術(shù)的強大力量,提高了編程效率和可靠性。 關(guān)鍵詞:數(shù)據(jù)庫,關(guān)鍵詞:數(shù)據(jù)庫,sql 語言,語言,ms sql server,vb6,數(shù)據(jù)庫組件,圖書管理,窗體,數(shù)據(jù)庫組件,圖書管理,窗體,listview 組件。組件。 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 目錄 目目錄錄 第第 1 章章緒論緒論1 1.1數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介1 1.1.1數(shù)據(jù)庫1 1.1.2用戶數(shù)據(jù)1 1.1.3元數(shù)據(jù)2 1.1.4索引2 1.1.5應(yīng)用元數(shù)據(jù)2 1.1.6數(shù)據(jù)庫管理系統(tǒng)2 1.1.7創(chuàng)建數(shù)據(jù)庫3 數(shù)據(jù)庫模式3 創(chuàng)建表3 定義聯(lián)系3 1.2應(yīng)用組件3 1.2.1圖書管理系統(tǒng)3 1.2.2系統(tǒng)所做工作4 1.2.3本文所作工作4 1.2.4數(shù)據(jù)庫理論基礎(chǔ)5 1.2.5數(shù)據(jù)庫系統(tǒng)設(shè)計及范式分析5 1.2.6數(shù)據(jù)庫系統(tǒng)設(shè)計5 1.2.7數(shù)據(jù)庫設(shè)計范式分析7 1.2.8sql 語言介紹 .8 數(shù)據(jù)庫模式8 sql 語句 .8 1.2.9ddl 與 dml.9 復(fù)雜操作實現(xiàn)10 第第 2 章章應(yīng)用系統(tǒng)開發(fā)工具應(yīng)用系統(tǒng)開發(fā)工具11 2.1vb6.0 vcl 組件的體系結(jié)構(gòu).11 2.1.1數(shù)據(jù)庫組件介紹11 2.1.2sql 語言在 vb 中的應(yīng)用12 2.1.3ms sql server 簡述.15 第第 3 章章圖書管理系統(tǒng)設(shè)計分析圖書管理系統(tǒng)設(shè)計分析16 3.1應(yīng)用需求分析16 3.1.1系統(tǒng)功能模塊劃分16 3.1.2系統(tǒng)數(shù)據(jù)庫設(shè)計17 3.1.3關(guān)系數(shù)據(jù)庫的邏輯設(shè)計18 3.1.4確定公共實體類型 .19 3.2系統(tǒng)分析19 3.2.1軟件項目分析19 3.2.2程序系統(tǒng)的結(jié)構(gòu)20 啟動界面20 注冊新用戶窗口20 修改密碼窗口21 職員管理窗口21 用戶管理窗口21 學(xué)員管理窗口22 借還書窗口22 書籍操作窗口23 瀏覽書籍窗口24 3.2.3數(shù)據(jù)庫設(shè)計24 職員表:24 用戶表:24 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 目錄 學(xué)員信息表:25 書籍信息表:25 借書表:25 還書表:26 結(jié)結(jié) 論論.27 致致 謝謝.28 參考文獻參考文獻.29 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 1 頁 第第 1 1 章章緒論緒論 1.11.1 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介 在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的基本概念應(yīng)當(dāng)了解,對數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā) 數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)清晰的了解和認識。 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目標(biāo)是建立一個滿足用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用 戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?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ù)得到了迅速發(fā)展,并已形成較為完整的理論體系和一大批實用系統(tǒng)。并且,近年來,隨著 world wide web(www)的猛增及 internet 技術(shù)的迅速發(fā)展,使得數(shù)據(jù)庫技術(shù)之時成為最熱門技 術(shù)之一。 .1數(shù)據(jù)庫數(shù)據(jù)庫 數(shù)據(jù)庫由 dbms(數(shù)據(jù)庫管理系統(tǒng))處理,dbms 則由開發(fā)人員和用戶通過應(yīng)用程序直接 或間接地使用。它主要包括四個要素:用戶數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。 .2用戶數(shù)用戶數(shù)據(jù)據(jù) 目前,大多數(shù)主流數(shù)據(jù)庫管理系統(tǒng)把用戶數(shù)據(jù)表示為關(guān)系。現(xiàn)在把關(guān)系看作數(shù)據(jù)表。 表的列包含域或?qū)傩?,表的行包含對?yīng)業(yè)務(wù)環(huán)境中的實體的記錄。并非所有的關(guān)系都同樣符合 要求,有些關(guān)系比其它關(guān)系更結(jié)構(gòu)化一些。第二章描述了一個用以產(chǎn)生良好結(jié)構(gòu)關(guān)系的過程, 稱作規(guī)范化。 為了對比結(jié)構(gòu)差的關(guān)系和結(jié)構(gòu)好的關(guān)系之間的差別,以本文所設(shè)計的圖書管理系統(tǒng)中的圖書和 圖書借閱者關(guān)系為例來說明,假若設(shè)計關(guān)系 r1(借書證號,姓名,性別,身份編號,身份證, 聯(lián)系電話,圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數(shù)量) ;這 個關(guān)系的問題出在它有關(guān)于兩個不同主題的數(shù)據(jù),就是圖書借閱者和圖書。用這種方式構(gòu)成的 關(guān)系在進行修改時,會出現(xiàn)問題。因為一個圖書借閱者可能借閱多本書,如果某個圖書借閱者 的某個字段(如聯(lián)系電話)出現(xiàn)變更,它所借閱的圖書記錄(可能多個)也就必須變化,這是 不好的。因此數(shù)據(jù)用兩個關(guān)系表示更好?,F(xiàn)在如果某圖書借閱者改變了它的聯(lián)系電話,只有關(guān) 系(表)user 的對應(yīng)行需要改變。當(dāng)然,要想產(chǎn)生一個,顯示圖書名稱及其借閱者聯(lián)系電話的 報表,就需要將這兩個表的行結(jié)合起來。結(jié)果表明,將關(guān)系分別存儲,在生成報表的時候?qū)⑺?們結(jié)合起來,比把它們存儲在一個合成的表中更好。 user(借書證號,姓名,性別,身份編號,身份證,聯(lián)系電話, ) book(圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數(shù)量) 。 .3元數(shù)據(jù)元數(shù)據(jù) 數(shù)據(jù)庫是自描述的,這就意味著它自身包含了它的結(jié)構(gòu)的描述,這種結(jié)構(gòu)的描述稱作元數(shù) 據(jù)。因為 dbms 產(chǎn)品是用來存儲和操縱表的,所以大多數(shù)產(chǎn)品把元數(shù)據(jù)以表的形式存儲,有時 稱作系統(tǒng)表。這些系統(tǒng)表存儲了數(shù)據(jù)庫中表的情況,指出每一個表中有多少列,那一列是主關(guān) 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 2 頁 鍵字,每一列的數(shù)據(jù)類型的描述,它也存儲索引、關(guān)鍵字、規(guī)則和數(shù)據(jù)庫結(jié)構(gòu)的其他部分。 在表中存儲元數(shù)據(jù)不僅對 dbms 是有效的,對用戶也是方便的,因為他們可以使用與查詢 用戶數(shù)據(jù)同樣的查詢工具來查詢元數(shù)據(jù)。本文第二章所介紹的 sql 語言可以同時用于元數(shù)據(jù)和 用戶數(shù)據(jù)。 .4索引索引 第三種類型的數(shù)據(jù)改進了數(shù)據(jù)庫的性能和可訪問性,這種數(shù)據(jù)經(jīng)常稱作開銷數(shù)據(jù),盡管有 時也采用其他類型的數(shù)據(jù)結(jié)構(gòu),如鏈表,但它主要還是索引。索引可以用來排序和快速訪問數(shù) 據(jù)。下面以本人的圖書管理信息系統(tǒng)中的 book 表為例來說明。 假定數(shù)據(jù)在磁盤上是按圖書編號的遞增順序排列的,用戶想打印一個按圖書名稱排序的圖書 數(shù)據(jù)報表。為此,所有的數(shù)據(jù)都需要從源表中提取出來并排序,除非表很小,否則這是一個很 費時的過程?;蛘?,可以在圖書名稱字段上創(chuàng)建一個索引,該索引的條目按照圖書名稱排序, 這樣,該索引的條目可以讀出來,并用來按順序訪問 book 數(shù)據(jù)。 索引用于快速訪問數(shù)據(jù)。例如,一個用戶只想訪問 book 表中圖書類別值為01的那些學(xué)生。 如果沒有索引,則必須搜索整個源表;但有了索引之后,可以找到索引條目,并使用它來挑選 所有合適的行。 索引對排序和查找是有幫助的,但要付出代價。book 表中的行每次改變時,索引也必須改 變,這意味著索引并非隨意的,應(yīng)該在真正需要時保存。 .5應(yīng)用元數(shù)據(jù)應(yīng)用元數(shù)據(jù) 存儲在數(shù)據(jù)庫中的第四種數(shù)據(jù)是應(yīng)用元數(shù)據(jù),它用來存儲用戶窗體、報表、查詢和其他形 式的查詢組件。并非所有的 dbms 都支持應(yīng)用組件,支持組件的 dbms 也不一定把全部組件的 結(jié)構(gòu)作為應(yīng)用元數(shù)據(jù)存儲在數(shù)據(jù)庫中。然而,大多數(shù)現(xiàn)代的 dbms 產(chǎn)品存儲這種數(shù)據(jù)作為數(shù)據(jù) 庫的一部分。一般來說,數(shù)據(jù)庫開發(fā)人員和用戶都不直接訪問應(yīng)用元數(shù)據(jù),想反,他們通過 dbms 中的工具來處理這些數(shù)據(jù)。 ms sql server2000 中就支持窗體、存儲過程等應(yīng)用元數(shù)據(jù)。 .6數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng) 數(shù)據(jù)庫管理系統(tǒng)(dbms)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。dbms 是數(shù)據(jù)庫系統(tǒng) 的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過 dbms 進行的。 dbms 總是基于某種數(shù)據(jù)模型,可以把 dbms 看成是某種數(shù)據(jù)模型在計算機系統(tǒng)上的具體實現(xiàn)。 根據(jù)數(shù)據(jù)模型的不同,dbms 可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。ms sql server2000 就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。 關(guān)系模型。關(guān)系模型主要是用二維表格結(jié)構(gòu)表達實體集,用外鍵表示實體間聯(lián)系。關(guān)系模型是 由若干個關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類型,它的實例稱為關(guān)系,每 個關(guān)系實際上是一張二維表格。 關(guān)系模型和層次、網(wǎng)狀模型的最大判別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡單用戶易懂, 編程時并不涉及存儲結(jié)構(gòu),訪問技術(shù)等細節(jié)。關(guān)系模型是數(shù)學(xué)化模型。sql 語言是關(guān)系數(shù)據(jù)庫 的標(biāo)準(zhǔn)化語言,已得到了廣泛的應(yīng)用。 dbms 的特點和功能可以分為三個子系統(tǒng):設(shè)計工具子系統(tǒng)、運行子系統(tǒng)和 dbms 引擎。 設(shè)計子系統(tǒng)有一個方便數(shù)據(jù)庫及其應(yīng)用創(chuàng)建的工具集。它典型地包含產(chǎn)生表、窗體、查詢 和報表的工具。dbms 產(chǎn)品還提供編程語言和對編程語言的接口。 運行子系統(tǒng)處理用設(shè)計子系統(tǒng)開發(fā)的應(yīng)用組件。它所包含的運行處理器用來處理窗體和數(shù)據(jù)庫 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 3 頁 的數(shù)據(jù)交互,以及回答查詢和打印報表等。 dbms 引擎從其他兩個組件接受請求,并把它們翻譯成對操作系統(tǒng)的命令,以便讀寫物理 介質(zhì)上的數(shù)據(jù)。dbms 引擎還涉及事務(wù)管理、鎖、備份和恢復(fù)。 .7創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 數(shù)據(jù)庫模式數(shù)據(jù)庫模式 數(shù)據(jù)庫模式定義了數(shù)據(jù)庫的結(jié)構(gòu)、表、關(guān)系、域和業(yè)務(wù)規(guī)則。數(shù)據(jù)庫模式是一種設(shè)計,數(shù)據(jù) 庫和應(yīng)用正是建立在此基礎(chǔ)上的。 域是一列可能擁有的值的集合。必須為每一個表的每一列確定域。除了數(shù)據(jù)的物理格式外,還 需要確定是否有些域?qū)Ρ韥碚f是唯一的。 數(shù)據(jù)庫模式的最后一個要素是業(yè)務(wù)規(guī)則,它是對需要反映在數(shù)據(jù)庫和數(shù)據(jù)庫應(yīng)用程序中的業(yè)務(wù) 活動的約束。業(yè)務(wù)規(guī)則是模式的一個重要部分,因為他們指定了無論什么數(shù)據(jù)變化到達 dbms 引擎,允許的數(shù)據(jù)值必須滿足的約束。不管無效的數(shù)據(jù)變化請求是來自窗體的用戶、查詢/修改 請求還是應(yīng)用程序,dbms 都應(yīng)該拒絕。 遺憾的是,不同的 dbms 產(chǎn)品用不同的方法實施業(yè)務(wù)規(guī)則。在某些情況下,dbms 產(chǎn)品不具備 實施必要業(yè)務(wù)規(guī)則的能力,必須以代碼形式把它們編入應(yīng)用程序。 創(chuàng)建表創(chuàng)建表 定義聯(lián)系定義聯(lián)系 1.21.2 應(yīng)用組件應(yīng)用組件 數(shù)據(jù)庫應(yīng)用包括窗體、查詢、報表、菜單和應(yīng)用程序。 .1圖書管理系統(tǒng)圖書管理系統(tǒng) 當(dāng)今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng) 用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行 信息控制,不僅提高了工作效率,而且大大的提高了其安全性。 尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與信息管理 系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(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),規(guī)范的信息管理手 段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突 出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。 數(shù)據(jù)處理手工操作,工作量大,出錯率高,出錯后不易更改。圖書館采取手工方式對圖書 借閱情況進行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 4 頁 情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是 當(dāng)時對它比較清楚,時間一長,如再要進行查詢,就得在眾多的資料中翻閱、查找了,造成查 詢費時、費力。如要對很長時間以前的圖書進行更改就更加困難了。 基于這此問題,我認為有必要建立一個圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化, 程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查 詢和修改圖書情況。 .2系統(tǒng)所做工作系統(tǒng)所做工作 1) 了解應(yīng)用開發(fā)工具的現(xiàn)狀 2) vb6.0 編程基礎(chǔ) 3) ms sql server 基礎(chǔ) 4) 設(shè)計數(shù)據(jù)庫;設(shè)計界面 5) 開發(fā)數(shù)據(jù)庫。數(shù)據(jù)庫實現(xiàn)的一些功能有 數(shù)據(jù)和數(shù)據(jù)說明的醒目顯示; 多條件的查詢、多條記錄的檢索、模糊查詢; 數(shù)據(jù)文件某種存儲格式導(dǎo)入數(shù)據(jù)窗體,經(jīng)過數(shù)據(jù)完整性校驗存入數(shù)據(jù)庫; 數(shù)據(jù)庫安全性的設(shè)計; 數(shù)據(jù)庫的設(shè)計、數(shù)據(jù)接口、界面的設(shè)計。 .3本文所作工作本文所作工作 緒論部分對數(shù)據(jù)庫應(yīng)用系統(tǒng)的結(jié)構(gòu)、開發(fā)進行了簡要介紹,分析了圖書管理信息系統(tǒng)設(shè)計 的特點和任務(wù)。 第二章介紹了數(shù)據(jù)庫的設(shè)計和范式分析,并系統(tǒng)介紹了 sql 語言,為設(shè)計和理解應(yīng)用程序 做了鋪墊。 第三章對系統(tǒng)介紹了 vb 6.0 的數(shù)據(jù)庫編程技術(shù)、sql 語言在 vb 6.0 中的應(yīng)用、ms sql server 基礎(chǔ)。 第四章分析了圖書管理系統(tǒng)的應(yīng)用需求,設(shè)計了系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu),并根據(jù)需求對系統(tǒng)功 能進行了劃分和細化。 第五章根據(jù)第四章的設(shè)計結(jié)果利用 mssql server2000 和 vb 6.0 進行了具體的應(yīng)用程序設(shè) 計。 總結(jié)部分介紹了設(shè)計體會和編程體會,并指出了系統(tǒng)設(shè)計中的不足和改進的方向。 .4數(shù)據(jù)庫理論基礎(chǔ)數(shù)據(jù)庫理論基礎(chǔ) 一個成功的信息管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫是其中一個非常重要的條 件和關(guān)鍵技術(shù)。 信息管理系統(tǒng)所涉及的數(shù)據(jù)庫設(shè)計分五個步驟:數(shù)據(jù)庫需求分析、概念設(shè)計、邏輯設(shè)計、物理 設(shè)計與加載測試。 (1) 數(shù)據(jù)庫需求分析的任務(wù)是將業(yè)務(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è)計出基本表的主鍵,將所 有的表名與字段名英文化(現(xiàn)在很多軟件能支持中文字段,如 ms sql server,我就是用的中文 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 5 頁 字段名) ,實現(xiàn)物理建庫,完成數(shù)據(jù)庫物理設(shè)計字典。 (5) 加載測試工作貫穿于程序測試工作的全過程,整個錄入、修改、查詢、處理工作均可視 為對數(shù)據(jù)庫的加載測試工作。 要設(shè)計出一個好的信息管理系統(tǒng)數(shù)據(jù)庫,除滿足系統(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)難點并加以解決。 .5數(shù)據(jù)庫系統(tǒng)設(shè)計及范式分析數(shù)據(jù)庫系統(tǒng)設(shè)計及范式分析 信息系統(tǒng)的主要任務(wù)是通過大量的數(shù)據(jù)獲得管理所需要的信息,這就必須存儲和管理大量 的數(shù)據(jù)。因此建立一個良好的數(shù)據(jù)組織結(jié)構(gòu)和數(shù)據(jù)庫,使整個系統(tǒng)都可以迅速、方便、準(zhǔn)確地 調(diào)用和管理所需的數(shù)據(jù),是衡量信息系統(tǒng)開發(fā)工作好壞的主要指標(biāo)之一。 .6數(shù)據(jù)庫系統(tǒng)設(shè)計數(shù)據(jù)庫系統(tǒng)設(shè)計 數(shù)據(jù)庫設(shè)計主要是進行數(shù)據(jù)庫的邏輯設(shè)計,即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次 組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計時需要綜合企業(yè)各個部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析 各個數(shù)據(jù)之間的關(guān)系,按照 dbms 提供的功能和描述工具,設(shè)計出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān) 系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。 數(shù)據(jù)庫設(shè)計的步驟是: (1) 數(shù)據(jù)庫結(jié)構(gòu)定義:目前的數(shù)據(jù)庫管理系統(tǒng)(dbms)有的是支持聯(lián)機事務(wù)處理 cltp(負 責(zé)對事務(wù)數(shù)據(jù)進行采集、處理、存儲)的操作型 dbms,有的可支持?jǐn)?shù)據(jù)倉庫、有聯(lián)機分析處 理 clap(指為支持決策的制定對數(shù)據(jù)的一種加工操作)功能的大型 dbms,有的數(shù)據(jù)庫是關(guān) 系型的、有的可支持面向?qū)ο髷?shù)據(jù)庫。針對選擇的 dbms,進行數(shù)據(jù)庫結(jié)構(gòu)定義。 (2) 數(shù)據(jù)表定義:數(shù)據(jù)表定義指定義數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的邏輯結(jié)構(gòu)包括:屬性 名稱、類型、表示形式、缺省值、校驗規(guī)則、是否關(guān)鍵字、可否為空等。關(guān)系型數(shù)據(jù)庫要盡量 按關(guān)系規(guī)范化要求進行數(shù)據(jù)庫設(shè)計,但為使效率高,規(guī)范化程度應(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è)置:針對用戶的不同使用要求,確定數(shù)據(jù)的用戶使用權(quán)限,確保數(shù)據(jù)安 全。 (5) 數(shù)據(jù)字典設(shè)計:用數(shù)據(jù)字典描述數(shù)據(jù)庫的設(shè)計,便于維護和修改。 為了更好地組織數(shù)據(jù)和設(shè)計出實際應(yīng)用數(shù)據(jù)庫,應(yīng)該注意如下問題: 規(guī)范化地重組數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)進行規(guī)范化表達,這在后面將會具體討論。 關(guān)系數(shù)據(jù)結(jié)構(gòu)的建立:在進行了數(shù)據(jù)基本結(jié)構(gòu)的規(guī)范化重組后,還必須建立整體數(shù)據(jù)的關(guān)系結(jié) 構(gòu)。這一步設(shè)計完成后數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)設(shè)計工作基本完成,只待系統(tǒng)實現(xiàn)時將數(shù)據(jù)分析和數(shù) 據(jù)字典的內(nèi)容代入到所設(shè)計的數(shù)據(jù)整體關(guān)系結(jié)構(gòu)中,一個規(guī)范化數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)就建立起來了。 建立關(guān)系數(shù)據(jù)結(jié)構(gòu)涉及三方面內(nèi)容:確定關(guān)聯(lián)的關(guān)鍵指標(biāo)項并建立關(guān)聯(lián)表;確定單一的父系記 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 6 頁 錄結(jié)構(gòu);建立整個數(shù)據(jù)庫的關(guān)系結(jié)構(gòu)。 (1)鏈接關(guān)系的確定 在進行了上述數(shù)據(jù)規(guī)范化重組后,已經(jīng)可以確保每一個基本數(shù)據(jù)表(我們簡稱為表)是規(guī)范的,但 是這些單獨的表并不能完整地反映事物,通常需要通過指標(biāo)體系整體指標(biāo)數(shù)據(jù)才能完整全面地 反映問題。也就是說在這些基本表的各宇段中,所存儲的是同一事物不同側(cè)面的屬性。那么計 算機系統(tǒng)如何能知道哪些表中的哪些記錄應(yīng)與其它表中的哪些記錄相對應(yīng),它們表示的是同一 個事物呢?這就需要在設(shè)計數(shù)據(jù)結(jié)構(gòu)時將這種各表之間的數(shù)據(jù)記錄關(guān)系確定下來。這種表與表之 間的數(shù)據(jù)關(guān)系一般都是通過主或輔關(guān)鍵詞之間的連接來實現(xiàn)的。因為在每個表中只有主關(guān)鍵詞 才能唯一地標(biāo)識表中的這一個記錄值(因為根據(jù)第三范式的要求,表中其它數(shù)據(jù)字段函數(shù)都依賴 于主關(guān)鍵詞),所以將表通過關(guān)鍵詞連接就能夠唯一地標(biāo)識出某一事物不同屬性在不同表中的存 放位置。 (2)確定單一的父子關(guān)系結(jié)構(gòu) 所謂確定單一的父系關(guān)系結(jié)構(gòu)就是要在所建立的各種表中消除多對多(以下用 m:n 來表示)的 現(xiàn)象,即設(shè)法使得所有表中記錄之間的關(guān)系呈樹狀結(jié)構(gòu)(只能由一個主干發(fā)出若干條分支,而不 能有若干條主干交錯發(fā)出若干條分支狀況)。所謂的“父系”就是指表的上一級關(guān)系表。消除多對 多關(guān)系可以借助于 e-r 圖的方法來解決,也可以在系統(tǒng)分析時予以注意,避免這種情況的發(fā)生。 消除這種 m:n 情況的辦法也很簡單,只需在二表之間增加一個表,則原來 m:n 的關(guān)系就改成了 m:1,1:n 的關(guān)系了。 確定數(shù)據(jù)資源的安全保密屬性: 一般 dbms 都提供給我們自己定義數(shù)據(jù)安全保密性的功能。系統(tǒng)所提供的安全保密功能一般有 8 個等級(0-7 級),4 種不同方式(只讀、只寫、刪除、修改),而且允許用戶利用這 8 個等級的 4 種方式對每一個表自由地進行定義。 定義安全保密性的方法一般有如下幾種: a原則上所有文件都定義為 4 級,個別優(yōu)先級特別高的辦公室(終端或微機的入網(wǎng)賬號)可定義 高于 4 級的級別,反之則定義為低于 4 的級別。 b統(tǒng)計文件(表)和數(shù)據(jù)錄入文件一般只對本工作站定義為只寫方式,對其它工作站則定義為只 讀方式。 c財務(wù)等保密文件一般只對中工作站(如財務(wù)科等)定義為可寫、可改、可刪除方式,對其它工 作站則定義為只讀方式,而且不是每個人都能讀,只有級別相同和高級別者才能讀。 .7數(shù)據(jù)庫設(shè)計范式分析數(shù)據(jù)庫設(shè)計范式分析 建立起一個良好的數(shù)據(jù)指標(biāo)體系,是建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫的最重要的一環(huán)。一個良好的 數(shù)據(jù)指標(biāo)體系是建立 db 的必要條件,但不是充分條件。我們完全可以認為所建指標(biāo)體系中的 一個指標(biāo)類就是關(guān)系數(shù)據(jù)庫中的一個基本表,而這個指標(biāo)類下面的一個個具體指標(biāo)就是這個基 本表中的一個字段。但如果直接按照這種方式建庫顯然還不能算最佳。對于指標(biāo)體系中數(shù)據(jù)的 結(jié)構(gòu)在建庫前還必須進行規(guī)范化的重新組織。 a. 數(shù)據(jù)組織的規(guī)范化形式 在數(shù)據(jù)的規(guī)范化表達中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱為一個關(guān)系(relation),而在這個關(guān)系下的 每個數(shù)據(jù)指標(biāo)項則被稱為數(shù)據(jù)元素(data element),這種關(guān)系落實到具體數(shù)據(jù)庫上就是基本表,而 數(shù)據(jù)元素就是基本表中的一個字段(field)。規(guī)范化表達還規(guī)定在每一個基本表中必須定義一個數(shù) 據(jù)元素為關(guān)鍵字(key),它可以唯一地標(biāo)識出該表中其它相關(guān)的數(shù)據(jù)元素。在規(guī)范化理論中表是 二維的,它有如下四個性質(zhì): 在表中的任意一列上,數(shù)據(jù)項應(yīng)屬于同一個屬性(如圖中每一列都存放著不同合同記錄的同 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 7 頁 一屬性數(shù)據(jù))。 表中所有行都是不相同的,不允許有重復(fù)組項出現(xiàn)(如圖中每一行都是一個不同的合同記錄)。 在表中,行的順序無關(guān)緊要(如圖中每行存的都是合同記錄,至于先放哪一個合同都沒關(guān)系)。 在表中,列的順序無關(guān)緊要,但不能重復(fù)(如圖中合同號和合同名誰先誰后都沒關(guān)系,但二 者不可重復(fù)或同名)。 在對表的形式進行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為 范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼 容”的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結(jié)構(gòu)自 動滿足第一、二、三范式,依此類推。 第一范式(first normal form,簡稱 1st nf)就是指在同一表中沒有重復(fù)項出現(xiàn),如果有則應(yīng)將 重復(fù)項去掉。這個去掉重復(fù)項的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1st nf 實際上是沒有什么意義的。因為我們按規(guī)范化建立的指標(biāo)體系和表的過程都自動保證了所有表 都滿足 1st nf。 第二范式(second normal form,簡稱 2nd nf)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素 為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應(yīng)。例如,在圖 l9.7 中如果我們將合 同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要 知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項具體信息。通 常我們稱這種關(guān)系為函數(shù)依賴(functional dependence)關(guān)系。即表中其它數(shù)據(jù)元素都依賴于主關(guān) 鍵字,或稱該數(shù)據(jù)元素唯一地 被主關(guān)鍵字所標(biāo)識。 第三范式(third normal form,簡稱 3rd nf)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被 主關(guān)鍵字所標(biāo)識,而且它們之間還必須相互獨立,不存在其它的函數(shù)關(guān)系。也就是說對于一個 滿足了 2nd nf 的數(shù)據(jù)結(jié)構(gòu)來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關(guān)鍵宇數(shù)據(jù)元素的 現(xiàn)象,必須加以消除。 為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫要盡 量按關(guān)系規(guī)范化要求進行數(shù)據(jù)庫設(shè)計。 .8sqlsql 語言介紹語言介紹 數(shù)據(jù)庫模式數(shù)據(jù)庫模式 sql(structured query language,結(jié)構(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)有:oracle、 sybase、 microsoft sql server、 access、 ingres 等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用 sql,但是它們同樣有它們自立另外的 專有擴展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的 sql 命令,比如“select“、 “insert“、 “update“、 “delete“、 “create“和 “drop“常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。ms sql server 就是用的 transact- sql。 sql 語言有著非常突出的優(yōu)點,主要是: 非過程化語言 統(tǒng)一的語言 是所有關(guān)系數(shù)據(jù)庫的公共語言 非過程化語言:sql 是一個非過程化的語言,因為它一次處理一個記錄,對數(shù)據(jù)提供自動 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 8 頁 導(dǎo)航。sql 允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個記錄進行操作,可操作記錄集,所 有 sql 語句接受集合作為輸入,返回集合作為輸出。sql 的集合特性允許一條 sql 語句的結(jié) 果作為另一條 sql 語句的輸入。 sql 不要求用戶指定對數(shù)據(jù)的存放方法, 這種特性使用戶更易集中精力于要得到的結(jié)果;所有 sql 語句使用查詢優(yōu)化器,它是 rdbms 的一部分,由它決定對指定數(shù)據(jù)存取的最快速度的手 段,查詢優(yōu)化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索 引、有什么類型的索引。 統(tǒng)一的語言:sql 可用于所有用戶的 db 活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、 應(yīng)用程 序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。 sql 為許多任務(wù)提供了命令,其中包括: 查詢數(shù)據(jù) 在表中插入、修改和刪除記錄 建立、修改和刪除數(shù)據(jù)對象 控制對數(shù)據(jù)和數(shù)據(jù)對象的存取 保證數(shù)據(jù)庫一致性和完整性 以前的數(shù)據(jù)庫管理系統(tǒng)為上述各類操作提供單獨的語言,而 sql 將全部任務(wù)統(tǒng)一在一種語言中。 所有關(guān)系數(shù)據(jù)庫的公共語言:由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持 sql 語言,用戶 可將使用 sql 的技能從一個 rdbms(關(guān)系數(shù)據(jù)庫管理系統(tǒng))轉(zhuǎn)到另一個,所有用 sql 編寫的程 序都是可以移植的。 sqlsql 語句語句 sql 功能強大,是一種完備的數(shù)據(jù)處理語言,不僅用于數(shù)據(jù)庫查詢,而且用于數(shù)據(jù)庫中的 數(shù)據(jù)修改和更新,概括起來,它可以分成以下幾組: dml(data manipulation language,數(shù)據(jù)操作語言):用于檢索或者修改數(shù)據(jù); ddl(data definition language,數(shù)據(jù)定義語言): 用于定義數(shù)據(jù)的結(jié)構(gòu),比如 創(chuàng)建、修改或 者刪除數(shù)據(jù)庫對象; dcl(data control language,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶的權(quán)限。 dml 組可以細分為以下的幾個語句: select:用于檢索數(shù)據(jù); insert:用于增加數(shù)據(jù)到數(shù)據(jù)庫; update:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù); delete:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。 ddl 語句可以用于創(chuàng)建用戶和重建數(shù)據(jù)庫對象。下面是 ddl 命令: create table,alter table,drop table,create index,drop index 下面是一個簡單 sql 語句的例子: 我們使用 sql 語句來從 book 中檢索借書證號為000001的借閱者姓名: select 姓名 from book where 借書證號 = 000001 .9ddlddl 與與 dmldml 數(shù)據(jù)定義語言 ddl:它是用來創(chuàng)建和修改數(shù)據(jù)庫結(jié)構(gòu)的一種語句,包括 create、alter 和 drop 語句。 數(shù)據(jù)操作語言 dml:包括數(shù)據(jù)查詢與數(shù)據(jù)更新。數(shù)據(jù)查詢主要是由 select 語句完成,這一點不 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 9 頁 再贅述。而數(shù)據(jù)更新所造成的風(fēng)險大大超過數(shù)據(jù)查詢。數(shù)據(jù)庫管理系統(tǒng)必須在更改期內(nèi)保護所 存儲的數(shù)據(jù)的一致性,確保有效的數(shù)據(jù)進入數(shù)據(jù)庫,數(shù)據(jù)庫必須保持一致性,dbms 還必須協(xié) 調(diào)多用戶的并行更新,以確保用戶和它們的更改不至于影響其它用戶的作業(yè)。 用于修改數(shù)據(jù)庫內(nèi)容的 sql 語句主要有以下三個: (1) insert,向一個表中加入新的數(shù)據(jù)行 (2) delete,從一個表中刪除數(shù)據(jù)行 (3) update,更改數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù) insert 標(biāo)準(zhǔn)語法: insert into table_name (col1, col2.) values(value1, value2.) 下例要將借書證號為000001作為一個新的借書情況加入借書情況表 owner 中 insert into owner (借書證號,圖書編號,借書日期) values (000001, 00000001, 2002-9-12) insert 語句還可以將多行數(shù)據(jù)添加到目標(biāo)表中去,在這種形式的 insert 語句中,新行的數(shù)據(jù)值 不是在語句正文中明確地指定的,而是語句中指定的一個數(shù)據(jù)庫查詢。添加的值來自數(shù)據(jù)庫自 身的行,在某些特定的狀態(tài)下,這是非常有用的。多行 insert 語句為拷貝數(shù)據(jù)提供了一種緊湊 而高效的方法,但我在自已做的圖書管理系統(tǒng)中沒有使用這種方法,我在系統(tǒng)中是使用循環(huán)依 照上面的用法來完成多個記錄的插入。 update 語句用于更新單表中選定行的一列或多列的值。要更新的目標(biāo)表在語句中定義,set 子句 則指定要更新哪些列并計算它們的值。update 語句總是包含 where 語句,而且 update 語句比較 危險,所以您必須明確地認識到 where 語句的重要性,where 語句被用來指定需要更新的行。 標(biāo)準(zhǔn)語法: update table_name set columnname1 = value1 , columname2 = value2. where search_condition delete 語句標(biāo)準(zhǔn)語法: delete from tablename where condition 復(fù)雜操作實現(xiàn)復(fù)雜操作實現(xiàn) 在信息管理系統(tǒng)中,我們往往會遇到歸類、匯總、映射、索引、子查詢等復(fù)雜操作,相應(yīng) 的支持與實現(xiàn)如下: group by 方法 group by 子句語法為: select column1, sum(column2) from “l(fā)ist-of-tables“ group by “column-list“; 這個 group by 子句將集中所有的行在一起,它包含了指定列的數(shù)據(jù)以及允許合計函數(shù)來 計算一個或者多個列。 在本人的系統(tǒng)中在顯示數(shù)據(jù)時用到了此語句來對查詢所得的內(nèi)容排序然后再顯示。 組合條件和布爾運算符 以下的 sql 語句中就含有組合條件: select column1, sum(column2) 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 1 章 緒論 第 10 頁 from “l(fā)ist-of-tables“ where “condition1“ and “condition2“; 下面是一個示例: select 身份描述 from id,user where id.身份編號=user.身份編號 and user.借書證號=000001; 這條 sql 語句是從 user、id 表中查找借閱證號為 000001 的借閱者的身份描述,第三條語句中如 果其中有一個條件為假,那么就什么都沒有顯示。 union 子句 有些時候,需要一起瀏覽多個查詢的結(jié)果、組合它們的輸出,我們可以使用 union 關(guān)鍵字。 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 2 章 多媒體農(nóng)業(yè)智能應(yīng)用系統(tǒng)平臺的系統(tǒng)設(shè)計模型 第 11 頁 第第 2 2 章章應(yīng)用系統(tǒng)開發(fā)工具應(yīng)用系統(tǒng)開發(fā)工具 2.12.1 vb6.0vb6.0 vclvcl 組件的體系結(jié)構(gòu)組件的體系結(jié)構(gòu) vb 類可以粗略地分成兩部分:一部分是組件類,這些組件類通常以某種方式出 現(xiàn)在組件面板上,當(dāng)用戶從組件面板上點取一個類的圖標(biāo)后,在程序中就自動生成 了該類的對象(非可視組件除外);另一部分是功能類,這此功能類的對象通常出 現(xiàn)在程序代碼中,起著不可代替的作用,但是這些功能類在組件面板上是找不到的。 在 delphi 中,每一個類的祖先都是 tobject 類,整個類的層次結(jié)構(gòu)就像一棵倒掛的 樹,在最頂層的樹根即為 tobject 類。這樣,按照面向?qū)ο缶幊痰幕舅枷?,就?得用戶可用 tobject 類這個類型代替任何其它類的數(shù)據(jù)類型。實際上在 delphi 的類 庫中,tobject 類派生出了為數(shù)相當(dāng)眾多的子類,它們形成了一個龐大的體系,通 常情況下,如果不自行開發(fā)組件,就不必了解整個類的體系結(jié)構(gòu),只用到類層次樹 的葉結(jié)點就足夠了。 這一小節(jié)簡略介紹一下 vb 6.0 中 vcl(可視化組件庫)組件的體系結(jié)構(gòu)。凡是 做過程序開發(fā)的人都知道從來沒有單純的數(shù)據(jù)應(yīng)用程序,也就是說,數(shù)據(jù)庫應(yīng)用程 序必須和用戶界面(可以是圖形界面,也可以是命令接口)元素相結(jié)合,只講界面 或只講數(shù)據(jù)庫本身都構(gòu)不成數(shù)據(jù)庫應(yīng)用程序,因而用 vb 6.0 開發(fā)數(shù)據(jù)庫應(yīng)用程序就 隱含著界面開發(fā)。 組件在 vb 程序的開發(fā)中是最顯眼的角色。大家知道,在編寫程序時一般都開始于在組件 面板上選擇組件并定義組件間的相互作用。但也有一些組件不在組件面板上,例如 tform 和 tapplication(典型的非可視組件) 。組件是 tcomponents 派生出來的子類,可以流的形式存放在 dfm 文件中,具有事件和 publish 屬性。 窗口組件類是窗口化的可視化組件類,在 vb 的類庫中占有最大的份額。在實際編程中,窗口 組件類的對象都有句柄,可以接受輸入焦點和包含其它組件。 圖形組件與窗口組件并列,是另一大類組件。圖形組件不是基于窗口的,因而不能有窗口句柄, 不能接受輸入焦點和包含其它組件??梢钥闯鰣D形組件的基類是 tgraphiccontrol,在實際編程中, 它們必須寄生于它們的宿主窗口組件類的對象,由它們的擁有者負責(zé)其顯示,而且它們還 能觸發(fā)一些和鼠標(biāo)活動相關(guān)的事件。圖形控件最典型的例子是 tlabel 和 tspeedbutton。由此可 以看出圖形組件的功能很弱,圖形組件的用處何在呢?其實使用圖形組件的最大好處在于節(jié)省 資源,正是因為它們的功能較弱,所以使用的系統(tǒng)資源就要少。在一個應(yīng)用程序中,如果能在 不影響其功能的前提下合理大量地使用圖形組件,將會大減少程序?qū)ο到y(tǒng)資源的消耗。 非可視組件是與可視組件相并列的另一類組件,非可視組件在程序運行中是不可見的(除各種 對話框組件之外,事實上有人認為對話框組件不能歸入非可視組件,應(yīng)該是另一種介于可視與 非可視之間的組件) 。 最后要說明一下,常說的控件實際上是一種組件。也就是說組件這個概念要大于控件,控 件在內(nèi)涵上包含于組件中??丶?windows 系列操作系統(tǒng)提出并使用,而組件是 microsoft 和其 它廠商在對 windows 控件做了必要的擴展之后提出來的概念,它們是在不同時期由不同的廠商 提出的概念。 .1數(shù)據(jù)庫組件介紹數(shù)據(jù)庫組件介紹 用 vb6.0 開發(fā)數(shù)據(jù)庫應(yīng)用,重點是和各種數(shù)據(jù)庫組件打交道,能和數(shù)據(jù)庫掛鉤的組件對象 有 5 種,它們是:session(數(shù)據(jù)庫會話) 、database(數(shù)據(jù)庫) 、dataset(數(shù)據(jù)集) 、 datasource(數(shù)據(jù)源) 、data control(數(shù)據(jù)控制組件,也叫 data-controls 即數(shù)據(jù)感知組件) 。其中 湖南文理學(xué)院畢業(yè)設(shè)計(論文) 第 2 章 多媒體農(nóng)業(yè)智能應(yīng)用系統(tǒng)平臺的系統(tǒng)設(shè)計模型 第 12 頁 前面 4 種統(tǒng)稱為數(shù)據(jù)訪問(data access)組件。 ado 組件 vb6.0 包含了可以用來訪問 microsoft 公司的 activex data objects(ado)格式數(shù)據(jù) 庫的組件。ado 是 micrsoft 公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù) 訪問需要的完整解決辦法。ado 的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。 microsoft 公司用來訪問 ado 數(shù)據(jù)的應(yīng)用程序界面技術(shù)是 ole db。ole db 是一種底層編程接 口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。 ole db 是一個由 component object model(com)接口組成的集合,用來隱藏創(chuàng)建數(shù)據(jù)訪問服 務(wù)過程中的細節(jié)。oledb 提供了訪問任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫和相互不關(guān) 聯(lián)的數(shù)據(jù)庫、email 和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對象。 delphi 的 ado 組件無需依靠 bde 而是使用 ado 技術(shù),提供了可以通過數(shù)據(jù)控制組件訪問數(shù)據(jù) 的新方法。唯一的要求是在使用 ado 組件時必須運行 ado/oledb。ado 組件的使用使得 delphi 在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。 數(shù)據(jù)模塊設(shè)計窗口 數(shù)據(jù)模塊設(shè)計窗口是用來設(shè)計和維護數(shù)據(jù)模塊的。數(shù)據(jù)模塊設(shè)計窗口中包含 了所有以.dti 作為文件擴展名的 data diagram 文件的信息。dti 文件在編譯時不起任何作用。 .2sqlsql 語言在語言在 vbvb 中的應(yīng)用中的應(yīng)用 在 vb 中使用 sql 語言非常方便,一般來說,都是通過 tquery 或 tadoquery 組件來使用 sql 語言的??梢栽?tquery 或 tadoquery 組件的 sql 屬性中設(shè)置 sql 語句。設(shè)計程序時, 在該組件的屬性對話框中選擇 sql 屬性,單擊帶省略號的按鈕,就可以打開 string list editor 對話框,然后我們就可以在對話框中添加 sql 語句。還可以使用 delphi 的 sql builder 來自動 生成 sql 語句,這樣可以避免手工編寫 sql 而可能造成的語法錯誤。 靜態(tài) sql 語句在程序設(shè)計時便已固定下來,它不包含任何參數(shù)和變量。 動態(tài) sql 語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面 的語句是一條動態(tài) sql 語句: select * from book where 圖書編號 =:bookcode; 其中的變量 bookcode 便是一個參數(shù)變量,它由一個冒號引導(dǎo),在程序運行過程中,必須要為該 參數(shù)賦值,該條 sql 語句才能正確執(zhí)行,每次運行應(yīng)用程序時可以為該參數(shù)變量賦予不同的值。 為參數(shù)賦值有三種方法: 根據(jù)參數(shù)在 sql 語句中出現(xiàn)的順序,設(shè)置 tadoquery 組件的 parameters 屬性值為參數(shù)賦值。 直接根據(jù) sql 語句中各參數(shù)的名字,調(diào)用 parambyname 方法來為各參數(shù)賦值。 將 tadoquery 組件的 datasource 屬性設(shè)置為另一個數(shù)據(jù)源,這樣將另一個數(shù)據(jù)源中與當(dāng)前 tadoquery 組件的 sql 語句中的參數(shù)名相匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也 能實現(xiàn)所謂的連接查詢,創(chuàng)建主要明細型數(shù)據(jù)庫應(yīng)用。 在使用動態(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)用程序中
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《火龍果栽培技術(shù)》課件
- 2024屆河北省高三上學(xué)期期末考試歷史試題(解析版)
- 《研究生前沿講座》課件
- 單位管理制度集合大合集人事管理篇
- 單位管理制度合并選集【職工管理篇】十篇
- 單位管理制度分享匯編職工管理篇
- 單位管理制度呈現(xiàn)合集員工管理篇十篇
- 單位管理制度呈現(xiàn)大合集人員管理篇十篇
- (高頻選擇題60題)第3單元 中國特色社會主義道路(解析版)
- 阿拉斯加犬行業(yè)銷售工作總結(jié)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之7:“5領(lǐng)導(dǎo)作用-5.1領(lǐng)導(dǎo)作用和承諾”(雷澤佳編制-2025B0)
- 2024年度通信設(shè)備維修服務(wù)合同范本3篇
- 安恒可信數(shù)據(jù)空間建設(shè)方案 2024
- 2024年學(xué)校與家長共同促進家校合作發(fā)展協(xié)議3篇
- C預(yù)應(yīng)力錨索框架梁施工方案(完整版)
- 參加團干部培訓(xùn)心得體會
- 中華民族共同體概論專家講座第一講中華民族共同體基礎(chǔ)理論
- 湖北省襄陽市2023-2024學(xué)年高一上學(xué)期期末考試化學(xué)試題(含答案)
- 浙江省金華市十校2023-2024學(xué)年高一上學(xué)期1月期末考試物理試題 含解析
- 一次顯著的性能優(yōu)化
- 《中國近現(xiàn)代史綱要(2023版)》課后習(xí)題答案合集匯編
評論
0/150
提交評論