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