10.1 數(shù)據(jù)庫(kù)
目的與要求: 通過(guò)本次課的學(xué)習(xí),掌握VFP數(shù)據(jù)庫(kù)的操作。 | ||
教學(xué)內(nèi)容與時(shí)間安排、教學(xué)方法: 教學(xué)安排: 數(shù)據(jù)庫(kù)的創(chuàng)建、使用,數(shù)據(jù)庫(kù)中表的管理 40分鐘 設(shè)置記錄規(guī)則、數(shù)據(jù)庫(kù)表的關(guān)聯(lián) 40分鐘 教學(xué)方法: CAI、圖形、表格 | ||
教學(xué)重點(diǎn)及如何突出重點(diǎn)、難點(diǎn)及如何突破難點(diǎn): 教學(xué)重點(diǎn): 數(shù)據(jù)庫(kù)的創(chuàng)建、使用,數(shù)據(jù)庫(kù)中表的管理、設(shè)置記錄規(guī)則、數(shù)據(jù)庫(kù)表的關(guān)聯(lián) 教學(xué)難點(diǎn): 數(shù)據(jù)庫(kù)中表的管理、設(shè)置記錄規(guī)則、數(shù)據(jù)庫(kù)表的關(guān)聯(lián) | ||
基本內(nèi)容 | 教學(xué) | 課堂設(shè)計(jì) |
6.1 創(chuàng)建數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)是一種含有表、視圖、連接和存儲(chǔ)過(guò)程等Visual FoxPro對(duì)象的集成文件,是能容納一個(gè)或多個(gè)表或視圖的容器。在Visual FoxPro中,用戶(hù)可以使用數(shù)據(jù)庫(kù)來(lái)組織表和視圖、建立表間關(guān)系、創(chuàng)建存儲(chǔ)過(guò)程以及訪(fǎng)問(wèn)遠(yuǎn)程數(shù)據(jù)源。 1.數(shù)據(jù)庫(kù)所包含的主要對(duì)象 Visual FoxPro數(shù)據(jù)庫(kù)文件的擴(kuò)展名為.DBC,建立數(shù)據(jù)庫(kù)后,與之相關(guān)的還會(huì)自動(dòng)建立一個(gè)擴(kuò)展名為.dct的數(shù)據(jù)庫(kù)備注文件和一個(gè)擴(kuò)展名為.dcx的數(shù)據(jù)庫(kù)索引文件。Visual FoxPro系統(tǒng)中數(shù)據(jù)庫(kù)管理的主要對(duì)象有:表、遠(yuǎn)程視圖、本地視圖、存儲(chǔ)過(guò)程和連接。以上這些對(duì)象,只有表是真實(shí)存在的文件,其他對(duì)象必須存儲(chǔ)于數(shù)據(jù)庫(kù)中。 (1)數(shù)據(jù)庫(kù)表 我們?cè)诘谒恼陆榻B的表都是與數(shù)據(jù)庫(kù)無(wú)關(guān)的,稱(chēng)為自由表。如果將表存放在數(shù)據(jù)庫(kù)中,稱(chēng)為數(shù)據(jù)庫(kù)表。數(shù)據(jù)庫(kù)表增加了許多新功能,例如可以為數(shù)據(jù)庫(kù)表設(shè)置字段屬性、設(shè)置記錄規(guī)則、建立永久關(guān)系以及建立參照完整性。 (2)視圖 視圖是一種虛表,利用視圖可以把分散在相關(guān)表中的數(shù)據(jù)收集到一起,視圖的使用方法將在下一章介紹。 (3)存儲(chǔ)過(guò)程 使用存儲(chǔ)過(guò)程主要為了創(chuàng)建用戶(hù)自定義函數(shù),這些函數(shù)的代碼保存在數(shù)據(jù)庫(kù)文件中,數(shù)據(jù)庫(kù)表的字段級(jí)規(guī)則和記錄級(jí)有效性規(guī)則可以引用這些函數(shù)。 (3)連接 使用連接對(duì)象可以通過(guò)ODBC(開(kāi)放式數(shù)據(jù)庫(kù)互連)技術(shù)與遠(yuǎn)程數(shù)據(jù)庫(kù)相連,創(chuàng)建遠(yuǎn)程視圖,使用后臺(tái)數(shù)據(jù)庫(kù)。
3.創(chuàng)建數(shù)據(jù)庫(kù) 【格式】CREATE DATABASE [<數(shù)據(jù)庫(kù)文件名>|?][EXCLUSIVE] 【功能】創(chuàng)建并打開(kāi)一個(gè)數(shù)據(jù)庫(kù)文件。 【說(shuō)明】<數(shù)據(jù)庫(kù)文件名>:指出要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱(chēng)。 使用參數(shù)?或不使用任何參數(shù)會(huì)打開(kāi)“創(chuàng)建”對(duì)話(huà)框,在其中可以指定數(shù)據(jù)庫(kù)名稱(chēng)。 例如:Create database c:\vfpex\jxgl.dbc。 4.使用數(shù)據(jù)庫(kù) (1)打開(kāi)數(shù)據(jù)庫(kù) 【格式】OPEN DATABASE [<數(shù)據(jù)庫(kù)名>|?][EXCLUSIVE|SHARED][NOUPDATE][VALIDATE] 【功能】打開(kāi)數(shù)據(jù)庫(kù)。 【說(shuō)明】在打開(kāi)數(shù)據(jù)庫(kù)時(shí),如果不使用數(shù)據(jù)庫(kù)名,或者使用?,將啟動(dòng)“打開(kāi)”對(duì)話(huà)框。 數(shù)據(jù)庫(kù)的打開(kāi)有獨(dú)占方式(EXCLUSIVE)和共享方式(SHARED)兩種方式。 使用NOUPDATE選項(xiàng)只能讀取數(shù)據(jù)庫(kù)中的信息,不能更新數(shù)據(jù)庫(kù)。 使用VALIDATE子句表示打開(kāi)數(shù)據(jù)庫(kù)時(shí)將檢查數(shù)據(jù)庫(kù)中引用的對(duì)象是否合法,如檢查數(shù)據(jù)庫(kù)中的表和索引是否有效。 打開(kāi)數(shù)據(jù)庫(kù)后,如果使用USE命令打開(kāi)表,Visual FoxPro將首先在當(dāng)前數(shù)據(jù)庫(kù)中打開(kāi)指定表,如果找不到,再?gòu)臄?shù)據(jù)庫(kù)外查找。 (2)修改數(shù)據(jù)庫(kù) 用戶(hù)還可以通過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)器修改數(shù)據(jù)庫(kù),具體方法是:從“文件”菜單中選擇“打開(kāi)”命令,然后在“打開(kāi)”對(duì)話(huà)框中選擇數(shù)據(jù)庫(kù),或者使用命令打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器。打開(kāi)數(shù)據(jù)庫(kù)的命令格式如下。 【格式】MODIFY DATABASE [<數(shù)據(jù)庫(kù)名>|?][NOWAIT] [NOEDIT] 【功能】修改數(shù)據(jù)庫(kù)。 【說(shuō)明】不使用任何選項(xiàng),會(huì)啟動(dòng)數(shù)據(jù)庫(kù)設(shè)計(jì)器對(duì)已經(jīng)打開(kāi)的數(shù)據(jù)庫(kù)進(jìn)行修改,若當(dāng)前沒(méi)有打開(kāi)數(shù)據(jù)庫(kù),則啟動(dòng)“打開(kāi)”對(duì)話(huà)框要求用戶(hù)選擇一個(gè)數(shù)據(jù)庫(kù)。 NOWAIT選項(xiàng)只在程序中使用,其作用是在打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器后繼續(xù)執(zhí)行該命令之后的語(yǔ)句。如果不使用該選項(xiàng),在打開(kāi)數(shù)據(jù)庫(kù)后,應(yīng)用程序會(huì)暫停,直到數(shù)據(jù)庫(kù)關(guān)閉后應(yīng)用程序才會(huì)繼續(xù)執(zhí)行。 使用NOEDIT選項(xiàng)只打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器,而不能對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改。 (3)關(guān)閉數(shù)據(jù)庫(kù) 使用CLOSE DATABASES [ALL]命令可以關(guān)閉打開(kāi)的數(shù)據(jù)庫(kù),其中ALL子句表示關(guān)閉所有數(shù)據(jù)庫(kù),否則只關(guān)閉當(dāng)前數(shù)據(jù)庫(kù)。
-----------本節(jié)課結(jié)束-----------
5.數(shù)據(jù)庫(kù)中表的管理 數(shù)據(jù)詞典用來(lái)保存數(shù)據(jù)庫(kù)中各種對(duì)象的定義和設(shè)置信息,包括表屬性、字段屬性、記錄有效性規(guī)則、表間關(guān)系以及參照完整性等。用戶(hù)可以通過(guò)數(shù)據(jù)庫(kù)設(shè)計(jì)器設(shè)置、顯示和修改這些屬性,而自由表一般沒(méi)有這么多的屬性,下面介紹數(shù)據(jù)庫(kù)表的屬性信息及其設(shè)置方法。 一、字段屬性 圖5-4 數(shù)據(jù)庫(kù)表的字段屬性 數(shù)據(jù)庫(kù)表的字段除了具有自由表字段的基本屬性外,還具有許多擴(kuò)展屬性。通過(guò)表設(shè)計(jì)器可以對(duì)這些屬性進(jìn)行設(shè)置,如圖5-4所示。 1.基本屬性設(shè)置 字段的基本屬性包括字段名、類(lèi)型、寬度、小數(shù)位數(shù)等,這些屬性的設(shè)置方法已經(jīng)在自由表中介紹過(guò),在此不再贅述。 2.顯示屬性設(shè)置 字段的顯示區(qū)用于設(shè)置字段顯示格式和輸入格式,包括3項(xiàng)內(nèi)容:格式、輸入掩碼和標(biāo)題。 ·格式:指定字段在瀏覽、表單或報(bào)表中的顯示格式。例如:設(shè)置該字段顯示為大寫(xiě),則在格式文本框中輸入:!。 ·輸入掩碼:用于限制或控制用戶(hù)輸入數(shù)據(jù)的格式。輸入掩碼可以是以下字符: X 允許輸入字符 9 允許輸入數(shù)字 # 允許輸入數(shù)字,空格,+,- $ 顯示set currency命令指出的貨幣號(hào) * 在指定寬度內(nèi),值左顯示星號(hào) . 指出小數(shù)點(diǎn)位置 , 用逗號(hào)分隔小數(shù)點(diǎn)左的數(shù)字 例如,要指定電話(huà)號(hào)碼的區(qū)號(hào)為4位,電話(huà)號(hào)碼為8位,可以指定輸入掩碼為: (9999)99999999。 ·標(biāo)題:用來(lái)為瀏覽窗口、表單或報(bào)表中的字段指定顯示標(biāo)題。 3.字段注釋 用來(lái)對(duì)字段的用途、功能等進(jìn)行說(shuō)明,以便日后或其他人對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)。 4.字段有效性 字段有效性用于為選中字段設(shè)置某些限制。各設(shè)置項(xiàng)的含義如下: ·規(guī)則:設(shè)置字段級(jí)有效性檢查規(guī)則。用戶(hù)可以直接輸入表達(dá)式,也可以在表達(dá)式生成器中輸入。字段級(jí)規(guī)則在字段值改變時(shí)發(fā)生作用。 ·信息:指定出錯(cuò)信息,當(dāng)該字段輸入的數(shù)據(jù)違反有效性規(guī)則時(shí),將顯示此處提供的出錯(cuò)信息。 ·默認(rèn)值:指定字段的默認(rèn)值。 【例5-2】在學(xué)生表中設(shè)置“學(xué)號(hào)”字段的屬性。 設(shè)置輸入掩碼為“99999999”,標(biāo)題為“學(xué)號(hào)”,字段有效性規(guī)則為:LEN(TRIM(sno))=8,出錯(cuò)信息為:“學(xué)號(hào)應(yīng)為8位!”。 二、表屬性 選擇數(shù)據(jù)庫(kù)設(shè)計(jì)器的“表”選項(xiàng)卡,可以設(shè)置表注釋、記錄驗(yàn)證規(guī)則和觸發(fā)器。 1.表名 用戶(hù)可以為數(shù)據(jù)庫(kù)表指定最長(zhǎng)不超過(guò)128個(gè)字符的長(zhǎng)表名,但該名稱(chēng)不作為表文件名,它只是表的別名,可以在項(xiàng)目管理器、數(shù)據(jù)庫(kù)設(shè)計(jì)器、表單設(shè)計(jì)器中顯示。 2.記錄有效性 ·規(guī)則:指定記錄級(jí)有效性檢查規(guī)則。該規(guī)則在用戶(hù)插入記錄或從記錄離開(kāi)時(shí)進(jìn)行檢驗(yàn)。 ·信息:用于指定出錯(cuò)提示信息,當(dāng)記錄不符合記錄級(jí)有效性規(guī)則時(shí)顯示。 3.觸發(fā)器 觸發(fā)器是在進(jìn)行插入、更新或刪除操作后執(zhí)行的記錄級(jí)事件代碼。 觸發(fā)器分為插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器,當(dāng)數(shù)據(jù)庫(kù)進(jìn)行插入、更新、刪除時(shí),數(shù)據(jù)庫(kù)會(huì)自動(dòng)啟動(dòng)這些觸發(fā)器,以保證數(shù)據(jù)的完整性。 例如,刪除學(xué)生表中的某個(gè)學(xué)生記錄,那么該學(xué)生所對(duì)應(yīng)的成績(jī)也應(yīng)該從成績(jī)表中刪除,這樣的操作可以在學(xué)生表的刪除觸發(fā)器中進(jìn)行。 4.表注釋 用于指定出現(xiàn)在項(xiàng)目管理器中的注釋信息。 三、主索引 1.主索引 本書(shū)4.3節(jié)介紹了四種類(lèi)型的索引,其中主索引不允許在指定關(guān)健字段或表達(dá)式中出現(xiàn)重復(fù)值,主要用于主表或被引用的表,用來(lái)在永久關(guān)系中建立參照完整性。主索引可以用作主關(guān)鍵字,僅適用于數(shù)據(jù)庫(kù)表。每個(gè)數(shù)據(jù)庫(kù)表,只能建立一個(gè)主索引。主索引可以在表設(shè)計(jì)器的“索引”選項(xiàng)卡中設(shè)置,如圖5-6所示。使用命令方式也可以建立或刪除主索引,命令格式如下: Alter table <表名> Add|drop primary key <索引關(guān)鍵字> [tag <索引標(biāo)識(shí)>] 說(shuō)明:命令中的ADD用于添加主索引,缺省tag子句表示索引關(guān)鍵字與字段名相同。Drop用于刪除主索引。例如:以“學(xué)號(hào)”為關(guān)鍵字建立主索引可以使用以下命令。 Alter table student add primary key sno tag sno 四、建立永久關(guān)系 1.永久關(guān)系 永久關(guān)系是存在于數(shù)據(jù)庫(kù)表之間的一種關(guān)系,這種關(guān)系可以作為數(shù)據(jù)庫(kù)的一部分保存起來(lái)。要在數(shù)據(jù)庫(kù)表之間建立永久關(guān)系,必須保證在父表中已經(jīng)創(chuàng)建了索引。 在一對(duì)多關(guān)系中,主表必須使用主索引關(guān)鍵字(主索引標(biāo)識(shí))或侯選索引關(guān)鍵字(侯選標(biāo)識(shí)),子表使用普通索引關(guān)鍵字(普通索引標(biāo)識(shí))。 在一對(duì)一關(guān)系中,兩個(gè)表必須都用主索引關(guān)鍵字(主索引標(biāo)識(shí))或侯選索引(侯選索引標(biāo)識(shí))。 永久關(guān)系在查詢(xún)和視圖中,會(huì)自動(dòng)作為聯(lián)接條件,并且能夠作為表單和報(bào)表的默認(rèn)關(guān)系,顯示在數(shù)據(jù)環(huán)境設(shè)計(jì)器中。此外,還允許通過(guò)永久關(guān)系建立參照完整性。 2.建立永久關(guān)系 建立永久關(guān)系可以通過(guò)以下步驟完成: ·確定兩個(gè)具有一對(duì)多或一對(duì)一關(guān)系的表。 ·建立主表的主索引或侯選索引。 ·建立子表索引。如果關(guān)聯(lián)是一對(duì)多關(guān)系,需要在子表中以主表關(guān)鍵字建立普通索引。如果是一對(duì)一關(guān)系,在子表中需要建立與主表相同的主索引或候選索引。 ·從主表的主索引或侯選索引到子表的相關(guān)索引建立永久關(guān)系。 【例5-4】jxgl數(shù)據(jù)庫(kù)中的學(xué)生表(student.dbf)和學(xué)生成績(jī)表(score.dbf)具有一對(duì)多關(guān)系。在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,建立兩表的永久關(guān)系。 操作方法如下:將學(xué)生表的字段sno設(shè)置為主索引,將成績(jī)表的字段sno設(shè)置為普通索引,將鼠標(biāo)移到學(xué)生表的主索引sno上,拖動(dòng)它到成績(jī)表的索引關(guān)鍵字sno上,此時(shí)可以看到在主表與子表的索引sno間產(chǎn)生了一條連線(xiàn),即表示兩表建立了永久性關(guān)系,如圖5-7所示。 選定關(guān)系線(xiàn),然后單擊鼠標(biāo)右鍵,在快捷菜單中選擇“刪除關(guān)系”命令,系統(tǒng)會(huì)刪除指定關(guān)系。如果選擇“編輯關(guān)系”命令,系統(tǒng)會(huì)顯示圖5-8所示的“編輯關(guān)系”對(duì)話(huà)框,用戶(hù)可以在此對(duì)話(huà)框中重新設(shè)置關(guān)聯(lián)條件。 圖5-8 “編輯關(guān)系”對(duì)話(huà)框 五、參照完整性 1.參照完整性 參照完整性用來(lái)控制數(shù)據(jù)一致性,尤其經(jīng)常用來(lái)控制數(shù)據(jù)庫(kù)相關(guān)表之間的主關(guān)鍵字與其外關(guān)鍵字之間的數(shù)據(jù)一致性。相關(guān)表的參照完整性規(guī)則是建立在永久關(guān)系基礎(chǔ)上的,可以在主表或子表的觸發(fā)器中設(shè)置,規(guī)則代碼被保存在數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程中。對(duì)于建立永久關(guān)系表,在一個(gè)表中插入、修改或刪除記錄時(shí),相關(guān)表的記錄也要發(fā)生變動(dòng)。 2.設(shè)置參照完整性規(guī)則 打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器,選擇“數(shù)據(jù)庫(kù)”菜單中的“編輯參照完整性”命令或者用鼠標(biāo)指向永久關(guān)系連線(xiàn)單擊右鍵,然后在快捷表單中選擇“參照完整性”命令或者雙擊永久關(guān)系的連線(xiàn),然后在“編輯關(guān)系”對(duì)話(huà)框中選擇“參照完整性”按鈕,會(huì)出現(xiàn)圖5-9所示的“參 圖5-9 參照完整性規(guī)則 照完整性生成器”對(duì)話(huà)框。 參照完整性成器具有更新、刪除和插入三個(gè)規(guī)則: 更新規(guī)則用于指定修改父表中的關(guān)鍵字值時(shí)所觸發(fā)的規(guī)則。選擇“級(jí)聯(lián)”表示更新父表關(guān)鍵字值時(shí),同時(shí)會(huì)更新子表中相關(guān)記錄的對(duì)應(yīng)值;選擇“限制”表示如果子表中有相關(guān)記錄,則禁止更新父表關(guān)鍵字;選擇“忽略”表示不管子表中的相關(guān)記錄,都允許更新父表。 刪除規(guī)則用于指定刪除父表中的記錄時(shí)所觸發(fā)的規(guī)則。選擇“級(jí)聯(lián)”表示刪除父表記錄時(shí),同時(shí)會(huì)刪除子表中的相關(guān)記錄;選擇“限制”表示如果子表中有相關(guān)記錄,在刪除父表中的記錄時(shí)會(huì)出現(xiàn)“觸發(fā)器失敗”的提示信息;選擇“忽略”表示不管子表中的相關(guān)記錄,都允許父表刪除記錄。 插入規(guī)則用于指定子表在插入新的記錄或更新已存在的記錄時(shí)所觸發(fā)的規(guī)則。選擇“限制”表示如果父表中沒(méi)有相關(guān)的記錄,在子表添加記錄時(shí)產(chǎn)生“觸發(fā)器失敗”的提示信息;選擇“忽略”表示允許子表插入記錄,與父表無(wú)關(guān)。 【例5-5】為已經(jīng)建立了永久關(guān)系的學(xué)生表和成績(jī)表設(shè)置參照完整性。 打開(kāi)jxgl數(shù)據(jù)庫(kù),打開(kāi)參照完整性生成器。在對(duì)話(huà)框中分別設(shè)置更新規(guī)則、刪除規(guī)則為“級(jí)聯(lián)”,插入規(guī)則為“限制”,然后單擊“確定”按鈕,完成設(shè)置。這時(shí)我們打開(kāi)學(xué)生表修改字段sno的值,然后查看成績(jī)表,會(huì)發(fā)現(xiàn)成績(jī)表中的相應(yīng)記錄也發(fā)生了變化;刪除學(xué)生表中的某條記錄,則成績(jī)表中的相關(guān)記錄也會(huì)被刪除。
-----------本節(jié)課結(jié)束-----------
|
講述
|
數(shù)據(jù)庫(kù)介紹10分鐘
創(chuàng)建數(shù)據(jù)庫(kù)5分鐘
使用數(shù)據(jù)庫(kù)20分鐘
數(shù)據(jù)庫(kù)中表的管理15分鐘
表屬性10分鐘
主索引10分鐘
建立永久關(guān)系5分鐘
參照完整性5分鐘
|
CopyRight ? 2016 宣城市信息工程學(xué)校 地址:宣城市梅溪路902號(hào) 后臺(tái)登錄
郵編:242000 電話(huà)(傳真):0563-2629508 如有問(wèn)題,歡迎惠賜 Email:xclmq@163.com