Delphi7數(shù)據(jù)庫(kù)編程學(xué)習(xí)推薦課件_第1頁(yè)
Delphi7數(shù)據(jù)庫(kù)編程學(xué)習(xí)推薦課件_第2頁(yè)
Delphi7數(shù)據(jù)庫(kù)編程學(xué)習(xí)推薦課件_第3頁(yè)
Delphi7數(shù)據(jù)庫(kù)編程學(xué)習(xí)推薦課件_第4頁(yè)
Delphi7數(shù)據(jù)庫(kù)編程學(xué)習(xí)推薦課件_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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、 目目 錄錄第第1 1章章 Delphi 7 Delphi 7 集成開(kāi)發(fā)環(huán)境(集成開(kāi)發(fā)環(huán)境(IDEIDE)介紹)介紹第第2 2章章 Delphi 7Delphi 7數(shù)據(jù)庫(kù)系統(tǒng)概述數(shù)據(jù)庫(kù)系統(tǒng)概述第第3 3章章 Delphi 7Delphi 7和數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)第第4 4章章 創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù) 第第5 5章章 讀寫(xiě)字段值讀寫(xiě)字段值 第第6 6章章 計(jì)算字段計(jì)算字段第第7 7章章 鏈接表鏈接表第第8 8章章 查找和確認(rèn)數(shù)據(jù)查找和確認(rèn)數(shù)據(jù)第第9 9章章 制作數(shù)據(jù)輸入窗體制作數(shù)據(jù)輸入窗體第第1010章章 列表和查找表列表和查找表第第1111章章 查詢(xún)和設(shè)定范圍查詢(xún)和設(shè)定范圍第第1212章章 多窗體和打

2、印窗體多窗體和打印窗體第第1313章章 制作報(bào)表制作報(bào)表第第1414章章 開(kāi)發(fā)圖表開(kāi)發(fā)圖表第第1515章章 將圖或文件存入數(shù)據(jù)庫(kù)將圖或文件存入數(shù)據(jù)庫(kù)第第1616章章 編寫(xiě)多媒體數(shù)據(jù)庫(kù)應(yīng)用程序編寫(xiě)多媒體數(shù)據(jù)庫(kù)應(yīng)用程序 第第1717章章 數(shù)據(jù)庫(kù)開(kāi)發(fā)實(shí)例數(shù)據(jù)庫(kù)開(kāi)發(fā)實(shí)例學(xué)生管理系統(tǒng)學(xué)生管理系統(tǒng)第1章 Delphi 7 Delphi 7 集成開(kāi)發(fā)環(huán)境(集成開(kāi)發(fā)環(huán)境(IDEIDE)介紹)介紹1. 1. Delphi 7 IDE Delphi 7 IDE 運(yùn)行界面運(yùn)行界面 通常,啟動(dòng)通常,啟動(dòng)Delphi 7Delphi 7的方法是:?jiǎn)螕舻姆椒ㄊ牵簡(jiǎn)螕簟伴_(kāi)始開(kāi)始”按鈕,然后依次從級(jí)聯(lián)按鈕,然后依次從級(jí)聯(lián)菜菜

3、單中選擇單中選擇“程序程序”Borland Delphi 7Delphi 7Borland Delphi 7Delphi 7選項(xiàng),就進(jìn)入了選項(xiàng),就進(jìn)入了Delphi 7Delphi 7IDE IDE 運(yùn)行界面,如圖運(yùn)行界面,如圖1.11.1所示。其各組成部分的功能見(jiàn)教材所示。其各組成部分的功能見(jiàn)教材1.31.31.71.7節(jié)。節(jié)。 圖圖1.1 Delphi7 IDE 1.1 Delphi7 IDE 運(yùn)行界面的組成運(yùn)行界面的組成12453 主窗口主窗口 窗體窗口窗體窗口 代碼編輯窗口代碼編輯窗口 對(duì)象查看器對(duì)象查看器 對(duì)象樹(shù)形結(jié)構(gòu)瀏覽窗口對(duì)象樹(shù)形結(jié)構(gòu)瀏覽窗口1232. 2. Delphi 7 D

4、elphi 7 主窗口主窗口 主窗口是Delphi 7 IDE的核心,開(kāi)發(fā)人員通過(guò)主窗口進(jìn)行創(chuàng)建工程、編寫(xiě)程序、調(diào)試程序、運(yùn)行和維護(hù)應(yīng)用程序等一系列管理工作。 Delphi 7 主窗口由3個(gè)部分組成(其功能見(jiàn)教材1.3節(jié)),如下圖所示。 組件模板(Component Palette) 主菜單(Menu) 快捷工具條(Speed Bar) 3. 3. 組件模板及組件設(shè)置組件模板及組件設(shè)置 放置組件、設(shè)置屬性和為“終止”事件編寫(xiě)代碼的步驟:?jiǎn)螕舸绑w空閑部分,放置一個(gè)按鈕。設(shè)置按鈕標(biāo)題為“終止”。在事件標(biāo)簽頁(yè)上雙擊OnClick右邊單元格。在代碼編輯窗口中編寫(xiě)終止程序的代碼。在組件模板上選擇組件,例

5、如Ok按鈕。 第第2章章 Delphi 7數(shù)據(jù)庫(kù)系統(tǒng)概述數(shù)據(jù)庫(kù)系統(tǒng)概述1. Delphi 7 1. Delphi 7 數(shù)據(jù)庫(kù)特性數(shù)據(jù)庫(kù)特性 數(shù)據(jù)訪問(wèn)組件(Data Access Components):主要用于說(shuō)明數(shù)據(jù)庫(kù)的有關(guān)信息,如應(yīng)用程序要訪問(wèn)(連接)的數(shù)據(jù)庫(kù)和要訪問(wèn)數(shù)據(jù)庫(kù)中的具體的數(shù)據(jù)庫(kù)表,以及要訪問(wèn)表中的哪些字段等。常用的數(shù)據(jù)訪問(wèn)組件有TTable、TQuery、TDataSource等。 數(shù)據(jù)控制組件(Data Control Components):主要用于顯示瀏覽數(shù)據(jù)庫(kù)中的數(shù)據(jù)信息,為用戶(hù)提供可視化的界面,可以讓用戶(hù)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)信息,進(jìn)行瀏覽、編輯、插入、刪除等操作。因而,數(shù)

6、據(jù)控制組件也被稱(chēng)之為數(shù)據(jù)瀏覽組件。數(shù)據(jù)控制組件既能夠把數(shù)據(jù)庫(kù)中的數(shù)據(jù)顯示到窗體中,又能將其自身的經(jīng)過(guò)修改的數(shù)據(jù)寫(xiě)回到數(shù)據(jù)庫(kù)中。常用的數(shù)據(jù)控制組件有TDBGrid、TDBEdit、TDBCheckBox等。BDEData Access Components 數(shù)據(jù)訪問(wèn)組件TTableTDataSourceTQueryTDataSourceData Control Components 數(shù)據(jù)控制組件TDBGridTDBEditTDBCheckBoxTDBGridTDBEditTDBCheckBox(用戶(hù)接口)數(shù) 據(jù) 庫(kù)數(shù)據(jù)庫(kù)引擎: BDE數(shù)據(jù)訪問(wèn)組件數(shù)據(jù)控制組件DBD窗口工具條DBD窗口菜單2. 2

7、. 數(shù)據(jù)庫(kù)桌面(數(shù)據(jù)庫(kù)桌面(DBDDBD:Database DesktopDatabase Desktop) 數(shù)據(jù)庫(kù)桌面DBD是數(shù)據(jù)庫(kù)維護(hù)和數(shù)據(jù)定義的工具,利用它可以完成查詢(xún)、連接、建立、重建結(jié)構(gòu)(簡(jiǎn)稱(chēng)重構(gòu))、索引、修改和復(fù)制數(shù)據(jù)庫(kù)表,而且在操作時(shí),用戶(hù)不必?fù)碛蠵aradox或dBASE數(shù)據(jù)庫(kù)管理系統(tǒng)。使用數(shù)據(jù)庫(kù)桌面DBD還可以把一種格式的數(shù)據(jù)和數(shù)據(jù)字典拷貝為另一種格式,例如,將一個(gè)dBASE的表拷貝到遠(yuǎn)程的SQL服務(wù)器上的一個(gè)數(shù)據(jù)庫(kù)中去。另外,數(shù)據(jù)庫(kù)桌面DBD程序可以建立數(shù)據(jù)庫(kù)并執(zhí)行與數(shù)據(jù)庫(kù)有關(guān)的其他操作。例如,設(shè)置工作目錄、設(shè)置工作目錄別名、創(chuàng)建數(shù)據(jù)庫(kù)表、在數(shù)據(jù)庫(kù)表中輸入數(shù)據(jù)、對(duì)表中記錄排

8、序、移動(dòng)記錄、用不同字體或其他形式顯示表中的數(shù)據(jù),以及用表來(lái)檢查和測(cè)試Delphi 7 程序等。3.3.部分?jǐn)?shù)據(jù)訪部分?jǐn)?shù)據(jù)訪 問(wèn)組件的主問(wèn)組件的主 要用途要用途 部分?jǐn)?shù)據(jù)訪問(wèn)組件的主要用途組件名稱(chēng)主 要 用 途TDataSource是數(shù)據(jù)集組件與數(shù)據(jù)控制組件之間傳送數(shù)據(jù)的通道TTable是存取數(shù)據(jù)庫(kù)表的媒介,通過(guò)BDE存取數(shù)據(jù)庫(kù)表中的數(shù)據(jù),再與TDataSource進(jìn)行對(duì)話,使得數(shù)據(jù)控制組件能在TTable中訪問(wèn)數(shù)據(jù),以及顯示、編輯數(shù)據(jù)TQuery利用SQL語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)表中的數(shù)據(jù),并與TDataSource進(jìn)行對(duì)話以實(shí)現(xiàn)數(shù)據(jù)控制組件訪問(wèn)數(shù)據(jù)庫(kù)TStoredProc在應(yīng)用程序中用于訪問(wèn)遠(yuǎn)程服務(wù)

9、器中的存儲(chǔ)過(guò)程(它封裝了數(shù)據(jù)庫(kù)服務(wù)器上的存儲(chǔ)過(guò)程)TQuickRep在應(yīng)用程序中用于創(chuàng)建數(shù)據(jù)庫(kù)的輸出報(bào)表TSession這是一個(gè)全局的組件,用戶(hù)可以在程序中使用它的屬性和方法TDatabase它可以連接到單一數(shù)據(jù)庫(kù)上,例如,當(dāng)需要與數(shù)據(jù)庫(kù)持續(xù)連接、使用了定制的數(shù)據(jù)庫(kù)服務(wù)、使用事物處理組件或程序中確定了BDE別名時(shí),就可以使用TDatabase組件。但最主要的用途是在SQL數(shù)據(jù)庫(kù)的應(yīng)用中4. 部分部分?jǐn)?shù)據(jù)數(shù)據(jù)控控 制制組件組件的主的主 要用途要用途 部分?jǐn)?shù)據(jù)控制組件的主要用途部分?jǐn)?shù)據(jù)控制組件的主要用途組件名稱(chēng)組件名稱(chēng)主主 要要 用用 途途TDBText是一個(gè)只讀的數(shù)據(jù)顯示組件,它顯示的是表中的當(dāng)

10、前記錄值,因此它的顯示是動(dòng)態(tài)變化的 TDBEdit專(zhuān)門(mén)用來(lái)顯示和編輯數(shù)據(jù)庫(kù)表中的單個(gè)字段。通過(guò)它的DataSource屬性和DataField屬性來(lái)指定對(duì)應(yīng)的表和字段 TDBGrid以網(wǎng)格方式顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù)并可以進(jìn)行編輯。利用字段編輯器(Field Editor)可以對(duì)數(shù)據(jù)庫(kù)中字段的顯示格式、順序或者是否顯示進(jìn)行控制 TDBCheckBox瀏覽數(shù)據(jù)庫(kù)中數(shù)據(jù)的復(fù)選框,用于顯示和編輯數(shù)據(jù)庫(kù)中布爾型字段的字段值 TDBNavigator稱(chēng)為導(dǎo)航控件,可用來(lái)前后移動(dòng)記錄指針,對(duì)單個(gè)記錄進(jìn)行編輯(包括插入、刪除、刷新顯示和取消等操作) TDBImage用于顯示、復(fù)制、粘貼數(shù)據(jù)庫(kù)表中的圖像類(lèi)型的字段

11、第第3 3章章 Delphi 7Delphi 7和數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù) 3.1 3.1 創(chuàng)建一個(gè)創(chuàng)建一個(gè)Delphi 7 Delphi 7 工程(工程(ProjectProject)的步驟)的步驟 3.2 3.2 定制窗體定制窗體(1 1)啟動(dòng))啟動(dòng)Delphi 7Delphi 7,從,從FileFile菜單中選擇菜單中選擇FileNewApplicatin FileNewApplicatin 命令,創(chuàng)建一個(gè)新工程。命令,創(chuàng)建一個(gè)新工程。(2 2)保存新的工程。從)保存新的工程。從FileFile菜單中選擇菜單中選擇FileSave AsFileSave As命令命令, , 保存單元文件保存單元文件

12、CHello.pasCHello.pas和工程文件和工程文件Hello.dprHello.dpr。(3 3)執(zhí)行程序便生成一個(gè)可執(zhí)行的)執(zhí)行程序便生成一個(gè)可執(zhí)行的EXEEXE文件文件Hello.EXEHello.EXE。第3章第1節(jié)完成的定制窗體CdmHello清除歡迎終止執(zhí)行程序后單擊“歡迎”按鈕的程序窗口 歡迎清除終止3.3 3.3 編寫(xiě)代碼編寫(xiě)代碼為為“終止終止”按鈕編寫(xiě)代碼的目的是,當(dāng)用戶(hù)單擊按鈕編寫(xiě)代碼的目的是,當(dāng)用戶(hù)單擊“終止終止”按鈕按鈕時(shí),可以終止時(shí),可以終止CHello.EXECHello.EXE程序的運(yùn)行。那么,應(yīng)該為程序的運(yùn)行。那么,應(yīng)該為cmdExitClickcmdE

13、xitClick過(guò)程輸入下列代碼:過(guò)程輸入下列代碼:Application.Terminate;Application.Terminate;。這樣,當(dāng)用戶(hù)單擊這樣,當(dāng)用戶(hù)單擊“終止終止”按鈕時(shí),程序執(zhí)行按鈕時(shí),程序執(zhí)行“Application.Terminate;”Application.Terminate;”語(yǔ)句,即終止語(yǔ)句,即終止CHello.EXECHello.EXE程序。程序。3.4 Methods3.4 Methods(方法)(方法) 現(xiàn)在,我們來(lái)介紹有關(guān)現(xiàn)在,我們來(lái)介紹有關(guān)MethodsMethods(方法)的主題。(方法)的主題。 在在PascalPascal語(yǔ)言中,在對(duì)象中說(shuō)明

14、的過(guò)程或函數(shù)稱(chēng)為方法。它的語(yǔ)法是:語(yǔ)言中,在對(duì)象中說(shuō)明的過(guò)程或函數(shù)稱(chēng)為方法。它的語(yǔ)法是: 例如,例如,Application.Terminate; ,Application.Terminate; ,這個(gè)程序語(yǔ)句說(shuō)明這個(gè)程序語(yǔ)句說(shuō)明TerminateTerminate(終止)方(終止)方法被調(diào)用,或者說(shuō),法被調(diào)用,或者說(shuō),ApplicationApplication對(duì)象調(diào)用了對(duì)象調(diào)用了TerminateTerminate方法。當(dāng)程序執(zhí)行這個(gè)方法。當(dāng)程序執(zhí)行這個(gè)語(yǔ)句時(shí),就實(shí)現(xiàn)這個(gè)語(yǔ)句時(shí),就實(shí)現(xiàn)這個(gè)TerminateTerminate方法,即終止程序運(yùn)行。方法,即終止程序運(yùn)行。 又例如程序語(yǔ)句又例如

15、程序語(yǔ)句Memo1.CutToClipboard;Memo1.CutToClipboard;,表明調(diào)用一個(gè)名為,表明調(diào)用一個(gè)名為Memo1Memo1的的MemoMemo組件的組件的CutToClipboard(CutToClipboard(剪貼剪貼) )方法。其中,方法。其中,Memo1Memo1是一個(gè)對(duì)象的名稱(chēng),當(dāng)程序執(zhí)是一個(gè)對(duì)象的名稱(chēng),當(dāng)程序執(zhí)行這個(gè)語(yǔ)句時(shí),就實(shí)現(xiàn)這個(gè)行這個(gè)語(yǔ)句時(shí),就實(shí)現(xiàn)這個(gè)CutToClipboardCutToClipboard方法,即把方法,即把Memo1Memo1中的文本剪貼到剪中的文本剪貼到剪貼板上去。貼板上去。 舉例:作為一個(gè)例子,打開(kāi)一個(gè)空窗體,加入一個(gè)舉例:作

16、為一個(gè)例子,打開(kāi)一個(gè)空窗體,加入一個(gè)MemoMemo組件和一個(gè)按鈕,組件和一個(gè)按鈕,設(shè)置按鈕的設(shè)置按鈕的NameName屬性為屬性為CutCut,再將按鈕的,再將按鈕的CaptionCaption屬性設(shè)置為屬性設(shè)置為&Cut&Cut。以及雙擊按。以及雙擊按鈕 的鈕 的 O n C l i c kO n C l i c k 事 件 右 邊 單 元 格 , 彈 出 代 碼 編 輯 窗 口 , 輸 入 語(yǔ) 句事 件 右 邊 單 元 格 , 彈 出 代 碼 編 輯 窗 口 , 輸 入 語(yǔ) 句Memo1.CutToClipboard;Memo1.CutToClipboard;。這樣就為。

17、這樣就為C Cutut按鈕建立了按鈕建立了CutClickCutClick事件處理過(guò)程:事件處理過(guò)程:方法方法CutToClipboardCutToClipboard實(shí)現(xiàn)剪貼實(shí)現(xiàn)剪貼: : Procedure Tform1.CutClick(Sender:TObject);BeginMemo1.CutToClipboard;End;方法方法CopyToClipboardCopyToClipboard實(shí)現(xiàn)拷貝:實(shí)現(xiàn)拷貝: ProcedureTform1.CopyClick(Sender:TObject);BeginMemo1.CopyToClipboard;End;再再看看一一個(gè)個(gè)例例子子3.5

18、 3.5 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)Delphi開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的一般步驟開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的一般步驟 1. 1. 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)步驟步驟1 1:工作活動(dòng)性質(zhì)鑒別:工作活動(dòng)性質(zhì)鑒別 對(duì)設(shè)計(jì)者來(lái)說(shuō),當(dāng)他承擔(dān)了某個(gè)部門(mén)建立數(shù)據(jù)庫(kù)的任務(wù)時(shí),首先應(yīng)當(dāng)鑒別該部門(mén)的需要和用戶(hù)的需求。對(duì)設(shè)計(jì)者來(lái)說(shuō),當(dāng)他承擔(dān)了某個(gè)部門(mén)建立數(shù)據(jù)庫(kù)的任務(wù)時(shí),首先應(yīng)當(dāng)鑒別該部門(mén)的需要和用戶(hù)的需求。并做出下列決策:并做出下列決策: (1 1) 決定該部門(mén)數(shù)據(jù)處理的一般策略。決定該部門(mén)數(shù)據(jù)處理的一般策略。 (2 2) 估算現(xiàn)有數(shù)據(jù)處理能力及其性能。估算現(xiàn)有數(shù)據(jù)處理能力及其性能。 (3 3) 進(jìn)行可行性研究,規(guī)劃各種方案。進(jìn)行可行性研究,

19、規(guī)劃各種方案。 (4 4) 選擇某種方案。選擇某種方案。 (5 5) 搜集有關(guān)信息類(lèi)型、確定有什么樣的信息流入和流出,以及信息流入流出的頻度等。搜集有關(guān)信息類(lèi)型、確定有什么樣的信息流入和流出,以及信息流入流出的頻度等。步驟步驟2 2:定義:定義 此步驟是建立該部門(mén)的模型。主要工作是:此步驟是建立該部門(mén)的模型。主要工作是: (1 1) 在書(shū)面上記載可能出現(xiàn)的數(shù)據(jù)類(lèi)型。在書(shū)面上記載可能出現(xiàn)的數(shù)據(jù)類(lèi)型。 (2 2) 建立原始概念:實(shí)體集合、實(shí)體屬性、屬性值、實(shí)體聯(lián)系集合(簡(jiǎn)稱(chēng)關(guān)聯(lián)集合)。建立原始概念:實(shí)體集合、實(shí)體屬性、屬性值、實(shí)體聯(lián)系集合(簡(jiǎn)稱(chēng)關(guān)聯(lián)集合)。步驟步驟3 3:用數(shù)據(jù)表示實(shí)體集合和關(guān)聯(lián)集

20、合:用數(shù)據(jù)表示實(shí)體集合和關(guān)聯(lián)集合 (1 1) 確定每一個(gè)實(shí)體類(lèi)型,并為其分配一個(gè)惟一的名字。確定每一個(gè)實(shí)體類(lèi)型,并為其分配一個(gè)惟一的名字。 (2 2) 確定每一個(gè)定義域,并為其分配一個(gè)惟一的名字。確定每一個(gè)定義域,并為其分配一個(gè)惟一的名字。 (3 3) 為每個(gè)實(shí)體類(lèi)型確定主鍵。為每個(gè)實(shí)體類(lèi)型確定主鍵。 (4 4) 用主鍵定義域代替每一個(gè)實(shí)體。求出與實(shí)體屬性對(duì)應(yīng)的各個(gè)關(guān)系,并給每個(gè)關(guān)系確定一個(gè)名字。用主鍵定義域代替每一個(gè)實(shí)體。求出與實(shí)體屬性對(duì)應(yīng)的各個(gè)關(guān)系,并給每個(gè)關(guān)系確定一個(gè)名字。 (5 5) 求出全部的關(guān)聯(lián)類(lèi)型,并為其確定一個(gè)名字。求出全部的關(guān)聯(lián)類(lèi)型,并為其確定一個(gè)名字。 (6 6) 用相應(yīng)的

21、主鍵來(lái)代替關(guān)聯(lián)類(lèi)型。用相應(yīng)的主鍵來(lái)代替關(guān)聯(lián)類(lèi)型。步驟步驟4 4:建立:建立E-RE-R模型模型 以下的步驟是對(duì)關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō)的。以下的步驟是對(duì)關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō)的。步驟步驟5 5:將實(shí)體和關(guān)聯(lián)轉(zhuǎn)化為關(guān)系:將實(shí)體和關(guān)聯(lián)轉(zhuǎn)化為關(guān)系步驟步驟6 6:分解關(guān)系。對(duì)每個(gè)關(guān)系確定其不可分解單元,可以得到一個(gè)基本關(guān)系集合。:分解關(guān)系。對(duì)每個(gè)關(guān)系確定其不可分解單元,可以得到一個(gè)基本關(guān)系集合。步驟步驟7 7:根據(jù)傳遞定律確定所得到的基本關(guān)系集合的傳遞閉包。:根據(jù)傳遞定律確定所得到的基本關(guān)系集合的傳遞閉包。步驟步驟8 8:由得到的傳遞閉包推導(dǎo)最小覆蓋,得到若干個(gè)最小覆蓋,選擇其一作為數(shù)據(jù)庫(kù)總體邏輯模型。:由得到的傳

22、遞閉包推導(dǎo)最小覆蓋,得到若干個(gè)最小覆蓋,選擇其一作為數(shù)據(jù)庫(kù)總體邏輯模型。2. 2. 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn) 在系統(tǒng)實(shí)現(xiàn)階段,使用在系統(tǒng)實(shí)現(xiàn)階段,使用DelphiDelphi可以建立和測(cè)試系統(tǒng)設(shè)計(jì)階段所構(gòu)想的應(yīng)用程序。在此階段,最好使用數(shù)據(jù)可以建立和測(cè)試系統(tǒng)設(shè)計(jì)階段所構(gòu)想的應(yīng)用程序。在此階段,最好使用數(shù)據(jù)庫(kù)的一個(gè)備份,以防止應(yīng)用程序可能破壞庫(kù)的一個(gè)備份,以防止應(yīng)用程序可能破壞DelphiDelphi數(shù)據(jù)庫(kù)后無(wú)法恢復(fù)。如果應(yīng)用程序最終要配置到使用遠(yuǎn)程終數(shù)據(jù)庫(kù)后無(wú)法恢復(fù)。如果應(yīng)用程序最終要配置到使用遠(yuǎn)程終端的數(shù)據(jù)源的話,可以有兩種選擇:端的數(shù)據(jù)源的話,可以有兩種選擇: l. l. 在本地服務(wù)器上,使用備份

23、的數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行開(kāi)發(fā)和調(diào)試。在本地服務(wù)器上,使用備份的數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行開(kāi)發(fā)和調(diào)試。 2. 2. 在遠(yuǎn)程服務(wù)器上,使用備份的數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行開(kāi)發(fā)和調(diào)試。在遠(yuǎn)程服務(wù)器上,使用備份的數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行開(kāi)發(fā)和調(diào)試。 其中,對(duì)前者來(lái)說(shuō),它獨(dú)立于服務(wù)器,因此不會(huì)影響服務(wù)器的其他特性。而后者就有一定的危險(xiǎn)性,因?yàn)?,程其中,?duì)前者來(lái)說(shuō),它獨(dú)立于服務(wù)器,因此不會(huì)影響服務(wù)器的其他特性。而后者就有一定的危險(xiǎn)性,因?yàn)?,程序的可能錯(cuò)誤而導(dǎo)致服務(wù)器的癱瘓。序的可能錯(cuò)誤而導(dǎo)致服務(wù)器的癱瘓。 值得說(shuō)明的是,系統(tǒng)設(shè)計(jì)獨(dú)立于特定計(jì)算機(jī)系統(tǒng);而系統(tǒng)實(shí)現(xiàn)必須考慮實(shí)際的計(jì)算機(jī)系統(tǒng),以及該系統(tǒng)所值得說(shuō)明的是,系統(tǒng)設(shè)計(jì)獨(dú)立于特定計(jì)算機(jī)系統(tǒng)

24、;而系統(tǒng)實(shí)現(xiàn)必須考慮實(shí)際的計(jì)算機(jī)系統(tǒng),以及該系統(tǒng)所支持的數(shù)據(jù)庫(kù)管理系統(tǒng)(支持的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMSDBMS)。)。系統(tǒng)實(shí)現(xiàn)階段的主要工作:系統(tǒng)實(shí)現(xiàn)階段的主要工作: (1 1) 實(shí)現(xiàn)物理設(shè)計(jì)。通過(guò)使用物理設(shè)計(jì)技術(shù)以選擇最適合于數(shù)據(jù)模型結(jié)構(gòu)的物理結(jié)構(gòu),實(shí)現(xiàn)物理設(shè)計(jì)。通過(guò)使用物理設(shè)計(jì)技術(shù)以選擇最適合于數(shù)據(jù)模型結(jié)構(gòu)的物理結(jié)構(gòu), 這些技術(shù)隨采用的物理設(shè)備及存取方法而異。量化數(shù)據(jù)是物理設(shè)計(jì)中的一個(gè)重要因素。所選數(shù)據(jù)庫(kù)邏輯結(jié)這些技術(shù)隨采用的物理設(shè)備及存取方法而異。量化數(shù)據(jù)是物理設(shè)計(jì)中的一個(gè)重要因素。所選數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的定義由數(shù)據(jù)庫(kù)定義語(yǔ)言完成。構(gòu)和物理結(jié)構(gòu)的定義由數(shù)據(jù)庫(kù)定義語(yǔ)言完成。 (2 2

25、)選擇存取數(shù)據(jù)庫(kù)的方法。在選擇物理結(jié)構(gòu)時(shí),存取方法是特別重要的,存取方法決定了設(shè)計(jì)完成后數(shù)據(jù))選擇存取數(shù)據(jù)庫(kù)的方法。在選擇物理結(jié)構(gòu)時(shí),存取方法是特別重要的,存取方法決定了設(shè)計(jì)完成后數(shù)據(jù)庫(kù)的性能,而用戶(hù)界面軟件決定了數(shù)據(jù)庫(kù)是否便于用戶(hù)使用。一般系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)的存取是由數(shù)據(jù)庫(kù)聯(lián)機(jī)查庫(kù)的性能,而用戶(hù)界面軟件決定了數(shù)據(jù)庫(kù)是否便于用戶(hù)使用。一般系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)的存取是由數(shù)據(jù)庫(kù)聯(lián)機(jī)查詢(xún)語(yǔ)言或嵌入在程序設(shè)計(jì)語(yǔ)言中的輸入詢(xún)語(yǔ)言或嵌入在程序設(shè)計(jì)語(yǔ)言中的輸入/ /輸出命令完成的。輸出命令完成的。 (3 3) 確定存儲(chǔ)需求說(shuō)明:存儲(chǔ)需求定義用戶(hù)關(guān)于數(shù)據(jù)的使用方法。其中的存取路徑,用以說(shuō)明存儲(chǔ)需求所涉確定存儲(chǔ)需求說(shuō)明:

26、存儲(chǔ)需求定義用戶(hù)關(guān)于數(shù)據(jù)的使用方法。其中的存取路徑,用以說(shuō)明存儲(chǔ)需求所涉及的實(shí)體集、關(guān)聯(lián)集、邏輯記錄,同時(shí)還要說(shuō)明這些結(jié)構(gòu)的使用順序,以及對(duì)每個(gè)結(jié)構(gòu)所完成的操作,這些及的實(shí)體集、關(guān)聯(lián)集、邏輯記錄,同時(shí)還要說(shuō)明這些結(jié)構(gòu)的使用順序,以及對(duì)每個(gè)結(jié)構(gòu)所完成的操作,這些操作可以是檢索、存儲(chǔ)和插入。操作可以是檢索、存儲(chǔ)和插入。 (4 4) 確定量化數(shù)據(jù)說(shuō)明:確定量化數(shù)據(jù)說(shuō)明:一般方法是用數(shù)據(jù)字典作為數(shù)據(jù)項(xiàng)和記錄型的描述文本。數(shù)據(jù)字典中可以包括:一般方法是用數(shù)據(jù)字典作為數(shù)據(jù)項(xiàng)和記錄型的描述文本。數(shù)據(jù)字典中可以包括:組織模型中各組成部分的數(shù)據(jù)項(xiàng)名、類(lèi)型、取值范圍、長(zhǎng)度和數(shù)據(jù)量、各實(shí)體間聯(lián)系的頻度、存取需求執(zhí)組

27、織模型中各組成部分的數(shù)據(jù)項(xiàng)名、類(lèi)型、取值范圍、長(zhǎng)度和數(shù)據(jù)量、各實(shí)體間聯(lián)系的頻度、存取需求執(zhí)行頻度等。行頻度等。 (5 5) 選擇開(kāi)發(fā)軟件的技術(shù)手段(例如,使用選擇開(kāi)發(fā)軟件的技術(shù)手段(例如,使用Delphi 7)Delphi 7)進(jìn)行軟件開(kāi)發(fā)。進(jìn)行軟件開(kāi)發(fā)。3. 3. 系統(tǒng)運(yùn)行和維護(hù)系統(tǒng)運(yùn)行和維護(hù) 系統(tǒng)運(yùn)行是為了考核系統(tǒng)及其設(shè)備、軟件系統(tǒng)和數(shù)據(jù)庫(kù)應(yīng)用程序等是否能達(dá)到預(yù)期的目標(biāo)。而對(duì)應(yīng)用程序來(lái)說(shuō)系統(tǒng)運(yùn)行是為了考核系統(tǒng)及其設(shè)備、軟件系統(tǒng)和數(shù)據(jù)庫(kù)應(yīng)用程序等是否能達(dá)到預(yù)期的目標(biāo)。而對(duì)應(yīng)用程序來(lái)說(shuō),更多的是調(diào)試。所謂維護(hù)是指在運(yùn)行中排除應(yīng)用程序的錯(cuò)誤及不合理的內(nèi)容,以及在系統(tǒng)運(yùn)行中還要根據(jù)用戶(hù)提,更多的是

28、調(diào)試。所謂維護(hù)是指在運(yùn)行中排除應(yīng)用程序的錯(cuò)誤及不合理的內(nèi)容,以及在系統(tǒng)運(yùn)行中還要根據(jù)用戶(hù)提出的一些新的要求和建議,對(duì)應(yīng)用程序做一定的修改,使其進(jìn)一步得到完善和提高。出的一些新的要求和建議,對(duì)應(yīng)用程序做一定的修改,使其進(jìn)一步得到完善和提高。 在每個(gè)實(shí)施步驟中都有數(shù)據(jù)庫(kù)的開(kāi)發(fā)和應(yīng)用程序界面的開(kāi)發(fā)任務(wù)。數(shù)據(jù)庫(kù)和應(yīng)用程序開(kāi)發(fā)任務(wù)的執(zhí)行,則會(huì)根在每個(gè)實(shí)施步驟中都有數(shù)據(jù)庫(kù)的開(kāi)發(fā)和應(yīng)用程序界面的開(kāi)發(fā)任務(wù)。數(shù)據(jù)庫(kù)和應(yīng)用程序開(kāi)發(fā)任務(wù)的執(zhí)行,則會(huì)根據(jù)開(kāi)發(fā)項(xiàng)目的大小和范圍而定,可能會(huì)由不同的人來(lái)完成和執(zhí)行。據(jù)開(kāi)發(fā)項(xiàng)目的大小和范圍而定,可能會(huì)由不同的人來(lái)完成和執(zhí)行。3.6 3.6 例子:設(shè)計(jì)一個(gè)商品銷(xiāo)售數(shù)據(jù)庫(kù)(簡(jiǎn)稱(chēng)例

29、子:設(shè)計(jì)一個(gè)商品銷(xiāo)售數(shù)據(jù)庫(kù)(簡(jiǎn)稱(chēng)PSDBPSDB) 顧客(顧客(CustomerCustomer)到商店購(gòu)買(mǎi)商品()到商店購(gòu)買(mǎi)商品(PartsParts),交款后,商店要給顧客開(kāi)出),交款后,商店要給顧客開(kāi)出發(fā)票。發(fā)票上標(biāo)出的內(nèi)容有:顧客姓名、單位、地址、商品名、單價(jià)、總價(jià)以及發(fā)票。發(fā)票上標(biāo)出的內(nèi)容有:顧客姓名、單位、地址、商品名、單價(jià)、總價(jià)以及購(gòu)買(mǎi)日期等。以往這項(xiàng)工作是手工在發(fā)票單上填寫(xiě),現(xiàn)在要用計(jì)算機(jī)來(lái)完成,那購(gòu)買(mǎi)日期等。以往這項(xiàng)工作是手工在發(fā)票單上填寫(xiě),現(xiàn)在要用計(jì)算機(jī)來(lái)完成,那么該如何做呢?么該如何做呢? 對(duì)商店或者計(jì)算機(jī)來(lái)說(shuō),要求有一份顧客名單,我們稱(chēng)之為對(duì)商店或者計(jì)算機(jī)來(lái)說(shuō),要求有一

30、份顧客名單,我們稱(chēng)之為CustomerCustomer表。還表。還要有一份商品清單,我們稱(chēng)之為要有一份商品清單,我們稱(chēng)之為PartsParts表。將這兩張表聯(lián)系在一起,就構(gòu)成了表。將這兩張表聯(lián)系在一起,就構(gòu)成了PSDBPSDB數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)。 現(xiàn)在給數(shù)據(jù)庫(kù)下個(gè)定義:按照一定結(jié)構(gòu)組織的相關(guān)的數(shù)據(jù)集合稱(chēng)做數(shù)據(jù)庫(kù)?,F(xiàn)在給數(shù)據(jù)庫(kù)下個(gè)定義:按照一定結(jié)構(gòu)組織的相關(guān)的數(shù)據(jù)集合稱(chēng)做數(shù)據(jù)庫(kù)。 在數(shù)據(jù)庫(kù)術(shù)語(yǔ)中,把顧客、商品稱(chēng)做實(shí)體,實(shí)體之間的聯(lián)系稱(chēng)做關(guān)聯(lián)。由此在數(shù)據(jù)庫(kù)術(shù)語(yǔ)中,把顧客、商品稱(chēng)做實(shí)體,實(shí)體之間的聯(lián)系稱(chēng)做關(guān)聯(lián)。由此可見(jiàn),實(shí)體及其關(guān)聯(lián)才構(gòu)成數(shù)據(jù)庫(kù)??梢?jiàn),實(shí)體及其關(guān)聯(lián)才構(gòu)成數(shù)據(jù)庫(kù)。 在關(guān)系模型中,在關(guān)系模型

31、中,“關(guān)聯(lián)關(guān)聯(lián)”是不可缺少的,因此,關(guān)聯(lián)也就轉(zhuǎn)化為實(shí)體,也可是不可缺少的,因此,關(guān)聯(lián)也就轉(zhuǎn)化為實(shí)體,也可以稱(chēng)之為關(guān)聯(lián)實(shí)體。因此,在以后的討論中,凡是說(shuō)到實(shí)體均包括關(guān)聯(lián)實(shí)體。以稱(chēng)之為關(guān)聯(lián)實(shí)體。因此,在以后的討論中,凡是說(shuō)到實(shí)體均包括關(guān)聯(lián)實(shí)體。 現(xiàn)在,在我們的現(xiàn)在,在我們的PSDBPSDB數(shù)據(jù)庫(kù)中,把實(shí)體數(shù)據(jù)庫(kù)中,把實(shí)體CustomerCustomer和和PartsParts聯(lián)系起來(lái)的是關(guān)聯(lián)聯(lián)系起來(lái)的是關(guān)聯(lián)實(shí)體,為其命名為實(shí)體,為其命名為ItemsItems(項(xiàng)目)。這樣,(項(xiàng)目)。這樣,PSDBPSDB數(shù)據(jù)庫(kù)是由實(shí)體數(shù)據(jù)庫(kù)是由實(shí)體CustomerCustomer、PartsParts和和Item

32、sItems構(gòu)成。構(gòu)成。 以下就來(lái)介紹數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的基本內(nèi)容和方法。以下就來(lái)介紹數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的基本內(nèi)容和方法。 Items Customer Parts PSDB數(shù)據(jù)庫(kù)的E-R圖關(guān)聯(lián)實(shí)體實(shí)體實(shí)體 CustNum LastName FirstNameCustomer 標(biāo)明Customer的屬性實(shí)體屬性 在數(shù)據(jù)庫(kù)通用設(shè)計(jì)方法中,在數(shù)據(jù)庫(kù)通用設(shè)計(jì)方法中,通常采用一種通常采用一種“實(shí)體實(shí)體- -聯(lián)系聯(lián)系”方法方法,簡(jiǎn)稱(chēng),簡(jiǎn)稱(chēng)E-RE-R方法。這樣,就可以將方法。這樣,就可以將PSDBPSDB數(shù)據(jù)庫(kù)用數(shù)據(jù)庫(kù)用E-RE-R圖表示圖表示。3.7 E-RE-R方法 在完成實(shí)體設(shè)計(jì)后,例如完成在完成實(shí)體設(shè)計(jì)

33、后,例如完成E-RE-R圖設(shè)計(jì)后,就要為每個(gè)實(shí)體標(biāo)明屬性。圖設(shè)計(jì)后,就要為每個(gè)實(shí)體標(biāo)明屬性。首先,數(shù)據(jù)庫(kù)中的每個(gè)實(shí)體都要有個(gè)標(biāo)識(shí)符,而且是惟一的,稱(chēng)其為首先,數(shù)據(jù)庫(kù)中的每個(gè)實(shí)體都要有個(gè)標(biāo)識(shí)符,而且是惟一的,稱(chēng)其為主標(biāo)識(shí)符主標(biāo)識(shí)符(也稱(chēng)為(也稱(chēng)為主關(guān)鍵字主關(guān)鍵字或或主屬性主屬性)。)。1. 1. 標(biāo)明標(biāo)明CustomerCustomer屬性屬性 例如,在例如,在PSDBPSDB數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的CustomerCustomer實(shí)體應(yīng)有一個(gè)主關(guān)實(shí)體應(yīng)有一個(gè)主關(guān)鍵字,顯然,顧客的姓名不成,因?yàn)橛兄孛匦?,所以只鍵字,顯然,顧客的姓名不成,因?yàn)橛兄孛匦眨灾缓媒o顧客好給顧客CustomerCus

34、tomer再加一個(gè)顧客編號(hào)再加一個(gè)顧客編號(hào)CustNumCustNum。同樣理由,。同樣理由,要給商品要給商品PartsParts加一個(gè)編號(hào)加一個(gè)編號(hào)PartNumPartNum,以及給關(guān)聯(lián)實(shí)體,以及給關(guān)聯(lián)實(shí)體ItemsItems加一個(gè)編號(hào)加一個(gè)編號(hào)ItemNumItemNum。注意,為了簡(jiǎn)化數(shù)據(jù)庫(kù)設(shè)計(jì)的說(shuō)明,。注意,為了簡(jiǎn)化數(shù)據(jù)庫(kù)設(shè)計(jì)的說(shuō)明,對(duì)于現(xiàn)在討論的課題,我們只列出主要的屬性,而不追求對(duì)于現(xiàn)在討論的課題,我們只列出主要的屬性,而不追求對(duì)它的客觀需求。設(shè)對(duì)它的客觀需求。設(shè)CustomerCustomer屬性有屬性有CustNumCustNum(顧客編號(hào))、(顧客編號(hào))、LastNameL

35、astName(顧客的姓)和(顧客的姓)和FirstNameFirstName(顧客名字)。(顧客名字)。 設(shè)設(shè)PartsParts屬性有屬性有PartNumPartNum(商品編(商品編號(hào))、號(hào))、DescriptionDescription(有關(guān)商品的說(shuō)(有關(guān)商品的說(shuō)明)、明)、QtyInStockQtyInStock(商品的庫(kù)存量)(商品的庫(kù)存量)和和SellingPriceSellingPrice(銷(xiāo)售價(jià))。(銷(xiāo)售價(jià))。標(biāo)明標(biāo)明PartsParts屬性屬性實(shí)體屬性 PartNumDescriptionQtyInStock PartsParts 標(biāo)明Parts的屬性SellingPric

36、e 設(shè)設(shè)ItemsItems屬性有屬性有ItemNumItemNum(ItemsItems記錄編號(hào))、記錄編號(hào))、CustNum CustNum (顧客編號(hào))(顧客編號(hào))PartNumPartNum(商品編號(hào))和(商品編號(hào))和QtySlodQtySlod(商品銷(xiāo)售量)。(商品銷(xiāo)售量)。標(biāo)明標(biāo)明ItemsItems屬性屬性 現(xiàn)在來(lái)說(shuō)明為什么給現(xiàn)在來(lái)說(shuō)明為什么給ItemsItems標(biāo)明這些屬性。首先,標(biāo)明這些屬性。首先,為什么要建立為什么要建立ItemNumItemNum屬性呢?因?yàn)閷傩阅兀恳驗(yàn)镮temsItems需要有一個(gè)惟一的主標(biāo)識(shí)符(也稱(chēng)為主屬需要有一個(gè)惟一的主標(biāo)識(shí)符(也稱(chēng)為主屬性),也就是

37、需要有一個(gè)惟一的主關(guān)鍵字。另外,性),也就是需要有一個(gè)惟一的主關(guān)鍵字。另外,ItemsItems是把是把CustomerCustomer表和表和PartsParts表表聯(lián)系起來(lái)的關(guān)聯(lián)實(shí)體,那么最簡(jiǎn)明的聯(lián)系,就是在聯(lián)系起來(lái)的關(guān)聯(lián)實(shí)體,那么最簡(jiǎn)明的聯(lián)系,就是在ItemsItems中放置中放置CustomerCustomer的主關(guān)鍵字的主關(guān)鍵字CustNumCustNum和和PartsParts的主關(guān)鍵字的主關(guān)鍵字PartNumPartNum。事實(shí)上,根據(jù)。事實(shí)上,根據(jù)CustomerCustomer的主關(guān)鍵字的主關(guān)鍵字CustNumCustNum就就可以通過(guò)可以通過(guò)ItemsItems中的中的Pa

38、rtsParts的主關(guān)鍵字的主關(guān)鍵字PartNumPartNum查到查到PartsParts表中的一切信息,例如,某表中的一切信息,例如,某商品的銷(xiāo)售價(jià)是由商品的銷(xiāo)售價(jià)是由PartsParts表中屬性表中屬性SellingPriceSellingPrice標(biāo)識(shí)的。又例如有關(guān)每種商品的說(shuō)明標(biāo)識(shí)的。又例如有關(guān)每種商品的說(shuō)明是由屬性是由屬性DescrptionDescrption標(biāo)識(shí)的。同時(shí),依據(jù)標(biāo)識(shí)的。同時(shí),依據(jù)PartNumPartNum還可以在還可以在ItemsItems表中直接查到購(gòu)買(mǎi)表中直接查到購(gòu)買(mǎi)了多少該種商品,即銷(xiāo)售量是由了多少該種商品,即銷(xiāo)售量是由ItemsItems表中的屬性表中的

39、屬性QtySoldQtySold標(biāo)識(shí)的。標(biāo)識(shí)的。 ItemNum CustNum PartNum Items圖3.2.3 標(biāo)明Items的屬性(關(guān)聯(lián))實(shí)體屬性 QtySlod 在關(guān)系型數(shù)據(jù)庫(kù)中,把實(shí)體視為一種關(guān)系。關(guān)系的一般表示方法如下:在關(guān)系型數(shù)據(jù)庫(kù)中,把實(shí)體視為一種關(guān)系。關(guān)系的一般表示方法如下:關(guān)系名(屬性關(guān)系名(屬性1 1,屬性,屬性2 2,屬性,屬性n n) 在一個(gè)關(guān)系表達(dá)式中,也需要確定一個(gè)惟一的標(biāo)識(shí)符(也稱(chēng)之為主屬性,在一個(gè)關(guān)系表達(dá)式中,也需要確定一個(gè)惟一的標(biāo)識(shí)符(也稱(chēng)之為主屬性,或主鍵,或主關(guān)鍵字),用以標(biāo)識(shí)這個(gè)關(guān)系。如果在關(guān)系表達(dá)式中,我們假設(shè)或主鍵,或主關(guān)鍵字),用以標(biāo)識(shí)這個(gè)

40、關(guān)系。如果在關(guān)系表達(dá)式中,我們假設(shè)指定指定“屬性屬性k”k”為主屬性(關(guān)鍵字),那么在關(guān)系表達(dá)式中就把屬性為主屬性(關(guān)鍵字),那么在關(guān)系表達(dá)式中就把屬性k k放在最前放在最前面并用下劃線面并用下劃線“_”_”表示它是主屬性(主鍵字)。于是,關(guān)系表達(dá)式表示它是主屬性(主鍵字)。于是,關(guān)系表達(dá)式就變成:就變成:關(guān)系名(關(guān)系名(屬性屬性k k,屬性,屬性1 1,屬性,屬性2 2,屬性,屬性n n) 這樣,根據(jù)給這樣,根據(jù)給CustomerCustomer、PartsParts和和ItemsItems標(biāo)明的屬性,就可以把它們用關(guān)系標(biāo)明的屬性,就可以把它們用關(guān)系表達(dá)式表示如下:表達(dá)式表示如下: 這三個(gè)關(guān)

41、系就是這三個(gè)關(guān)系就是PSDBPSDB的關(guān)系數(shù)據(jù)庫(kù)的關(guān)系數(shù)據(jù)庫(kù)模型。模型。 Customer(CustNum ,LastName ,F(xiàn)iestName) Parts(PartNum ,Description ,QtyInStock ,SellingPrice) Items(ItemNum ,CustNum ,PartNum ,QtySlod)3.8 3.8 關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù) 1.1.關(guān)系模型關(guān)系模型2. 2. 二維表二維表 在關(guān)系模型中,一個(gè)關(guān)系可以在關(guān)系模型中,一個(gè)關(guān)系可以用一個(gè)二維表來(lái)表示。用一個(gè)二維表來(lái)表示。二維表的行二維表的行稱(chēng)為記錄,列稱(chēng)為字段(記錄項(xiàng))。稱(chēng)為記錄,列稱(chēng)為字段(

42、記錄項(xiàng))。把這樣的表統(tǒng)稱(chēng)為數(shù)據(jù)庫(kù)表。一個(gè)把這樣的表統(tǒng)稱(chēng)為數(shù)據(jù)庫(kù)表。一個(gè)數(shù)據(jù)庫(kù)表的一般化表示。數(shù)據(jù)庫(kù)表的一般化表示。 關(guān)系CustomerCustomer(CustNum ,LastName ,F(xiàn)irstName)的二維表表示。其表結(jié)構(gòu): 關(guān)系PartsParts(PartNum ,Description ,tyInStock,SellingPrice)的二維表表示。其表結(jié)構(gòu): PartNumDescription tyInStockSellingPrice ItemNumCustNumPartNumQtySlod 關(guān)系ItemsItems(ItemNum ,CustNum ,PartNum ,

43、QtySlod)二維表表示。其表結(jié)構(gòu): CustNumLastNameFiestName 字段名稱(chēng) 記錄 字 段 用二維表表示關(guān)系3. 3. 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì) 所謂表結(jié)構(gòu)設(shè)計(jì)就是對(duì)表中的每個(gè)字段(Field)、字段類(lèi)型(Type)、字段大?。⊿ize)以及該字段是否為主關(guān)鍵字段(Key)等進(jìn)行規(guī)定,以便將來(lái)能夠?qū)Ρ磉M(jìn)行數(shù)據(jù)操作(包括對(duì)數(shù)據(jù)的存取、增刪、查詢(xún)、修改等)。 設(shè)計(jì)CustomerCustomer表結(jié)構(gòu) 設(shè)計(jì)PartsParts表結(jié)構(gòu)Field(字段)Type(類(lèi)型)Size(大?。㎏ey(主關(guān)鍵字)ItemNumAutoincriment(+)n/aYesCustNu

44、mNumericn/aYes PartNumNumericn/aYes QtySlodNumericn/aNo 設(shè)計(jì)ItemItems s表結(jié)構(gòu)Field(字段)Type(類(lèi)型)Size(大?。㎏ey(主關(guān)鍵字)CustNumNumeric(N)n/aYes(是) LastNameAlpha(A)30No(不是)FiestNameAlpha(A)25No(不是)Field(字段)Type(類(lèi)型)Size(大?。㎏ey(主關(guān)鍵字)PartNumNumericn/aYesDescriptionAlpha40NotyInStockNumericn/aNoSellingPriceNumericn/aN

45、o4. 4. 設(shè)計(jì)數(shù)據(jù)庫(kù)表的數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)庫(kù)表的數(shù)據(jù) 現(xiàn)在給出現(xiàn)在給出PSDBPSDB數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)中三個(gè)表的實(shí)際使用的數(shù)據(jù)。三個(gè)表的實(shí)際使用的數(shù)據(jù)。 設(shè)計(jì)好的這些數(shù)據(jù),我設(shè)計(jì)好的這些數(shù)據(jù),我們以后還要用到。們以后還要用到。 (1) CustomerCustomer表的數(shù)據(jù)注: ItemNum的類(lèi)型(Type)設(shè)置為Autoincriment。這就意味,ItemNum的值會(huì)由程序自動(dòng)地填入。因此,在制作Items表的數(shù)據(jù)時(shí),不要在該字段中填入任何東西。 CustNumLastNameFiestName1001KennedyTom1002AndersonJean1003GeorgeTim1004S

46、amJean(2) PartsParts表的數(shù)據(jù)PartNumDescription QtyInStockSellingPrice1001PartNum 1011,000301002PartNum 102542001003PartNum 103211231004PartNum 104200751005PartNum 1051110(3) ItemItems s表的數(shù)據(jù)ItemNum注CustNumPartNumQtySlod10011013 10031022 10011051 10011026第第4 4章章 創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù) 1.1.構(gòu)造表的結(jié)構(gòu)構(gòu)造表的結(jié)構(gòu) 創(chuàng)建過(guò)程如下:創(chuàng)建過(guò)程如下:

47、(1 1)啟動(dòng)數(shù)據(jù)庫(kù)桌面)啟動(dòng)數(shù)據(jù)庫(kù)桌面DBDDBD。 (2 2)設(shè)置工作目錄。選擇)設(shè)置工作目錄。選擇F i l e F i l e Working Directory Working Directory 命令。命令。 (3 3)設(shè)置工作目錄的別名。選擇)設(shè)置工作目錄的別名。選擇 T o o l s A l i a s M a n a g e rT o o l s A l i a s M a n a g e r 命 令 。 選 擇命 令 。 選 擇T a b l e R e s t r u c t u r eT a b l e R e s t r u c t u r e 命 令 , 構(gòu) 造

48、表命 令 , 構(gòu) 造 表Customer.dbCustomer.db的結(jié)構(gòu)。的結(jié)構(gòu)。 2.2.向向CustomerCustomer表中輸入數(shù)據(jù)表中輸入數(shù)據(jù)選擇FileOpen Table命令。打開(kāi)Customer.db表。選擇TableEdit Data命令,將表置于編輯模式。向一個(gè)字段輸入數(shù)據(jù)。即單擊該字段,然后即可輸入數(shù)據(jù)。使用Navigator控件對(duì)表中記錄排序、移動(dòng)。3.3.繼續(xù)向繼續(xù)向Parts.dbParts.db和和Items.dbItems.db表輸入數(shù)據(jù),完成之后,建立表輸入數(shù)據(jù),完成之后,建立PSDBPSDB完成。完成。4. 創(chuàng)建創(chuàng)建DelphiDelphi數(shù)據(jù)庫(kù)程序數(shù)據(jù)庫(kù)

49、程序 (1)建立一個(gè)新的工程 l 運(yùn)行Delphi 7; l 從主菜單中選擇FileNewApplication命令,則Delphi 7 自動(dòng)創(chuàng)建一個(gè)新工程。 l 從主菜單中選擇FileSave As命令,保存單元文件CMyCust.Pas,保存工程文件 MyCust.Dpr。 (2)用數(shù)據(jù)庫(kù)窗體向?qū)?chuàng)建窗體 在數(shù)據(jù)庫(kù)窗體向?qū)atabaseForm Wizard命令創(chuàng)建的Form2窗體上,已經(jīng)自動(dòng)地放置了5個(gè)控件:TPanel、TDBNavigator、TDBGrid、TTable和TDataSource。Navigator控件 TTable控件 DBGrid控件 Tpanel控件 TDat

50、aSource控件 (3)執(zhí)行MyCust程序 當(dāng)程序被運(yùn)行時(shí),便自動(dòng)生成一個(gè)可執(zhí)行的.EXE程序。Delphi 7會(huì)顯示C u s t o m e r . D B 表 中 的 數(shù) 據(jù) 。 其 中Navigator控件中輝亮的按鈕是可用的,可以使用Navigator控件的按鈕在各記錄之間移動(dòng)。第第5 5章章 讀寫(xiě)字段值讀寫(xiě)字段值 5.1 字段編輯器和列編輯器字段編輯器和列編輯器 字段編輯器 列編輯器Columns Editor Add fields Add fields命令:使用這個(gè)命令可為命令:使用這個(gè)命令可為T(mén)ableTable對(duì)象增對(duì)象增加物理字段。每個(gè)增加的字段都代表窗體類(lèi)中的一個(gè)對(duì)加

51、物理字段。每個(gè)增加的字段都代表窗體類(lèi)中的一個(gè)對(duì)象。所謂象。所謂“增加物理字段增加物理字段”,是指有選擇地使用數(shù)據(jù)庫(kù),是指有選擇地使用數(shù)據(jù)庫(kù)表中實(shí)際存在的字段,因?yàn)?,根?jù)需要不是總要使用數(shù)表中實(shí)際存在的字段,因?yàn)?,根?jù)需要不是總要使用數(shù)據(jù)庫(kù)表中實(shí)際存在的全部字段。在實(shí)際操作中,雖然數(shù)據(jù)庫(kù)表中實(shí)際存在的全部字段。在實(shí)際操作中,雖然數(shù)據(jù)庫(kù)表中實(shí)際存在很多字段,但有些是當(dāng)前不需要的字據(jù)庫(kù)表中實(shí)際存在很多字段,但有些是當(dāng)前不需要的字段,就不去選擇它們了。段,就不去選擇它們了。 在字段編輯器在字段編輯器Fields EditorFields Editor中中“增加物理字段增加物理字段”、不被選擇的字段或者

52、被刪除的字段,都不會(huì)改變數(shù)據(jù)、不被選擇的字段或者被刪除的字段,都不會(huì)改變數(shù)據(jù)庫(kù)表中實(shí)際存在的字段。庫(kù)表中實(shí)際存在的字段。 New fieldsNew fields命令:使用這個(gè)命令可以創(chuàng)建新的數(shù)據(jù)命令:使用這個(gè)命令可以創(chuàng)建新的數(shù)據(jù)庫(kù)表中實(shí)際不存在的字段。這種字段分為三類(lèi):庫(kù)表中實(shí)際不存在的字段。這種字段分為三類(lèi):Data(Data(數(shù)據(jù)字段數(shù)據(jù)字段) )、CalculatedCalculated(計(jì)算字段)和(計(jì)算字段)和LookupLookup(查找(查找字段)。所創(chuàng)建的每個(gè)新字段都代表窗體類(lèi)中的一個(gè)對(duì)字段)。所創(chuàng)建的每個(gè)新字段都代表窗體類(lèi)中的一個(gè)對(duì)象。而且主要是創(chuàng)建計(jì)算字段(象。而且主要是

53、創(chuàng)建計(jì)算字段(CalculatedCalculated)。但所創(chuàng))。但所創(chuàng)建的新字段也不會(huì)添加到實(shí)際的數(shù)據(jù)庫(kù)表中。它僅用于建的新字段也不會(huì)添加到實(shí)際的數(shù)據(jù)庫(kù)表中。它僅用于顯示的目的。顯示的目的。 不要忘記!要想創(chuàng)建和修改實(shí)際的數(shù)據(jù)庫(kù)表,還得不要忘記!要想創(chuàng)建和修改實(shí)際的數(shù)據(jù)庫(kù)表,還得使用數(shù)據(jù)庫(kù)桌面使用數(shù)據(jù)庫(kù)桌面Database DesktopDatabase Desktop程序。程序。雙擊Grid1控件雙擊ItemsTable控件5.2 5.2 使用字段編輯器選擇字段使用字段編輯器選擇字段雙擊ItemsTable控件,彈出數(shù)據(jù)庫(kù)表字段編輯器在編輯器內(nèi)單擊鼠標(biāo)右鍵,彈出快捷菜單在快捷菜單中選擇A

54、dd all field,然 后 選 擇 S e l e c t all,則Itemss.db表的所有字段被選擇。(1 1)雙擊)雙擊ItemsTableItemsTable控件控件,Delphi 7,Delphi 7顯示數(shù)據(jù)庫(kù)表字段編輯器。顯示數(shù)據(jù)庫(kù)表字段編輯器。(2 2)操作過(guò)程如下圖所示。)操作過(guò)程如下圖所示。在在Items.dbItems.db表中選擇字段表中選擇字段5.3 5.3 使用列編輯器選擇字段使用列編輯器選擇字段 選擇網(wǎng)格顯示字段選擇網(wǎng)格顯示字段(1 1)雙擊)雙擊GridGrid控件控件, ,顯示列編輯器窗口。顯示列編輯器窗口。(2 2)操作過(guò)程如下圖所示。)操作過(guò)程如下圖

55、所示。在Grid內(nèi)雙擊,顯示列編輯器在列編輯器內(nèi)單擊鼠標(biāo)右鍵,彈出菜單選擇“添加所有字段”按鈕或選擇菜單中Add All Fields 則顯示Items.db表的全部字段 Add All Fields命令5.4 5.4 使用使用列編輯器列編輯器選擇顯示字段選擇顯示字段 如下圖所示,選中要?jiǎng)h除的字段如下圖所示,選中要?jiǎng)h除的字段FieldNameFieldName,單擊,單擊“刪除刪除”按鈕,字段按鈕,字段FirstNameFirstName即被刪除。這里所謂刪除是非永久性刪除即被刪除。這里所謂刪除是非永久性刪除,即不是刪除數(shù)據(jù)表中的字段,而是不在網(wǎng)格表中顯示它。,即不是刪除數(shù)據(jù)表中的字段,而是不

56、在網(wǎng)格表中顯示它。恢復(fù)字段添加字段刪除字段添加所有字段列編輯器快捷菜單按鈕的功能 現(xiàn)在采用上頁(yè)現(xiàn)在采用上頁(yè)圖中的結(jié)果,即只選擇含有兩個(gè)字段圖中的結(jié)果,即只選擇含有兩個(gè)字段CustNumCustNum和和LastNameLastName的的DBGrid1DBGrid1的網(wǎng)格表。我們看一看的網(wǎng)格表。我們看一看Delphi 7 Delphi 7 為字段為字段CustNumCustNum和和LastNameLastName還做還做了些什么工作?了些什么工作? 事實(shí)上,一旦選擇了這兩個(gè)字段,事實(shí)上,一旦選擇了這兩個(gè)字段,Delphi 7 Delphi 7 就在就在Form2Form2窗體中自動(dòng)地窗體中自

57、動(dòng)地放 置 兩 個(gè) 不 可 見(jiàn) 的 附 加 組 件放 置 兩 個(gè) 不 可 見(jiàn) 的 附 加 組 件 C u s t o m e r T a b l e C u s t N u mC u s t o m e r T a b l e C u s t N u m 和和CustomerTableLastNameCustomerTableLastName,通常把這種附加組件稱(chēng)為,通常把這種附加組件稱(chēng)為字段對(duì)象字段對(duì)象。當(dāng)然,可以。當(dāng)然,可以像其他任何組件一樣查看和設(shè)置它們的屬性,而且這一點(diǎn)也是非常重要的特像其他任何組件一樣查看和設(shè)置它們的屬性,而且這一點(diǎn)也是非常重要的特性。性。 打開(kāi)對(duì)象查看器(打開(kāi)對(duì)象查

58、看器(Object InspectorObject Inspector)上的對(duì)象選擇器()上的對(duì)象選擇器(Object Object SelectorSelector)的下拉列表框,就會(huì)看到)的下拉列表框,就會(huì)看到CustomerTableCustNumCustomerTableCustNum和和CustomerTableLastNameCustomerTableLastName這兩個(gè)對(duì)象。如下圖所示。這兩個(gè)對(duì)象。如下圖所示。5.5 5.5 字段對(duì)象字段對(duì)象 在對(duì)象查看的 Properties標(biāo) 簽頁(yè) 中設(shè)置Align屬性為 alNone,并使Grid框變小。5.6 5.6 用代碼改變字段屬性

59、用代碼改變字段屬性 啟動(dòng)Delphi 7 執(zhí)行MyCust程序 選中Grid控件, 打開(kāi)對(duì)象查看器 的Properties標(biāo)簽 頁(yè)。1. 1. 設(shè)置設(shè)置GridGrid控件的邊框控件的邊框 設(shè)置設(shè)置GridGrid控件的邊框的目的是使之可以調(diào)整大小,以適應(yīng)用戶(hù)的要求??丶倪吙虻哪康氖鞘怪梢哉{(diào)整大小,以適應(yīng)用戶(hù)的要求。操作過(guò)程如圖操作過(guò)程如圖5.55.5所示。所示。3.3.設(shè)置設(shè)置Checkbox1Checkbox1( Name設(shè)置為chkVisible )和)和 Checkbox2Checkbox2(Name設(shè)置為 chkCenter)復(fù)選框。為復(fù)選框)復(fù)選框。為復(fù)選框chkVisible

60、chkVisible和和chkCenterchkCenter的的OnClickOnClick事件添事件添 加代碼加代碼: :2.2.給給ExitExit按鈕的按鈕的“單擊單擊”事件添加代碼事件添加代碼 在在OnClickOnClick事件的事件的cmdExitOnClickcmdExitOnClick過(guò)程代碼窗口中添加如下代碼:過(guò)程代碼窗口中添加如下代碼: Application.Terminate; 填寫(xiě)的代碼beginif (條件)Then語(yǔ)句1else語(yǔ)句2;end;如果滿(mǎn)足 條件執(zhí)行語(yǔ)句1如果不滿(mǎn)足 條件執(zhí)行語(yǔ)句2程序語(yǔ)句結(jié)構(gòu) 說(shuō) 明. .讀寫(xiě)字段值讀寫(xiě)字段值( (1 1) ) 給給cmdCustom

溫馨提示

  • 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)論