自考“管理系統(tǒng)中計(jì)算機(jī)應(yīng)用”筆記(19)

字號:

6.3.2 建立 VFP的數(shù)據(jù)庫
    前面建立的表都是自由表,而實(shí)際上一個(gè)應(yīng)用系統(tǒng)總是由多個(gè)相關(guān)表構(gòu)成的。要在多個(gè)自由表之間建立聯(lián)系,必須通過數(shù)據(jù)庫來實(shí)現(xiàn)。
    數(shù)據(jù)庫本身是不存儲數(shù)據(jù)的,它只存儲表、視圖及它們之間的關(guān)系等。在數(shù)據(jù)庫中的表叫做數(shù)據(jù)庫表,數(shù)據(jù)庫為數(shù)據(jù)表提供了數(shù)據(jù)字典、各種數(shù)據(jù)保護(hù)和數(shù)據(jù)管理功能,所以數(shù)據(jù)庫表比自由表要完善得多。一個(gè)數(shù)據(jù)庫是由數(shù)據(jù)庫文件(。DBC)、數(shù)據(jù)庫備注文件(。DCT) 和數(shù)據(jù)庫索引文件(。DCX) H類文件組成的。
    l.建立數(shù)據(jù)庫文件
    2.創(chuàng)建數(shù)據(jù)庫表
    可以直接在數(shù)據(jù)庫中建立數(shù)據(jù)表,也可以將自由表添加到數(shù)據(jù)庫中,但是不能將另一個(gè)數(shù)據(jù)庫中的表拉到當(dāng)前數(shù)據(jù)庫中來??梢栽谕粋€(gè)數(shù)據(jù)庫中建立多個(gè)表。
    (1)添加數(shù)據(jù)表。打開選定數(shù)據(jù)庫的“數(shù)據(jù)庫設(shè)計(jì)器”窗口,在“數(shù)據(jù)庫設(shè)計(jì)器”工具欄中,單擊“添加表” 選項(xiàng),將會彈出“打開”窗口,選擇要添加的表后,單擊“確定” 按鈕,就可以把一個(gè)自由表添加到當(dāng)前數(shù)據(jù)庫中,并將自由表變成數(shù)據(jù)庫表。
    (2)創(chuàng)建數(shù)據(jù)庫表。也可以在數(shù)據(jù)庫設(shè)計(jì)器中直接創(chuàng)建數(shù)據(jù)表。首先單擊“數(shù)據(jù)庫設(shè)計(jì)器”工具欄的“新建表” 按鈕,然后在對話框中  單擊“新建表” 按鈕,將打開數(shù)據(jù)庫“表設(shè)計(jì)器”。
    通過這幾個(gè)控制區(qū)信息的描述,可以實(shí)現(xiàn)數(shù)據(jù)庫對數(shù)據(jù)表的管理功能。
    數(shù)據(jù)庫表添加或創(chuàng)建完成以后,關(guān)閉數(shù)據(jù)庫設(shè)計(jì)器窗口。包含了數(shù)據(jù)表的數(shù)據(jù)庫文件就保存在外存儲器中。
    3.數(shù)據(jù)庫文件的打開與關(guān)閉
    (1)數(shù)據(jù)庫文件的打開。一般通過單擊主菜單“文件” 下拉菜單的“打開”功能。在彈出的“打開” 對話框窗口選定數(shù)據(jù)庫文件后,單擊“打開”按鈕打開。
    在打開一個(gè)數(shù)據(jù)庫表的時(shí)候,系統(tǒng)也會自動先打開其數(shù)據(jù)庫文件,然后再打開選定的表。
    (2)數(shù)據(jù)庫文件的關(guān)閉。除了可以通過像關(guān)閉其他Windows窗口一樣,關(guān)閉“數(shù)據(jù)庫設(shè)計(jì)器” 窗口來關(guān)閉當(dāng)前數(shù)據(jù)庫以外,還可以使用專門的命令來關(guān)閉數(shù)據(jù)庫。
    6.3.3 設(shè)置數(shù)據(jù)表的索引
    1.索引表和索引文件
    用戶對數(shù)據(jù)表常常會有不同的需求,為了加快數(shù)據(jù)的檢索、顯示、查詢和打印速度,就需要對文件中的記錄順序進(jìn)行重組。實(shí)現(xiàn)的方法一般有兩種:一種叫做排序;另一種叫做索引。
    排序的作用是按指定字段或字段組中數(shù)據(jù)值的大小順序,以遞增(升序) 或遞減(降序) 方式重新排列全部數(shù)據(jù)記錄,并生成一個(gè)新的數(shù)據(jù)表文件。
    索引不建立一個(gè)新的數(shù)據(jù)表文件,只是按照給定字段表達(dá)式值的大小,生成一個(gè)索引表,并使數(shù)據(jù)表中的記錄按索引表的要求以遞增(升序) 或遞減(降序) 順序顯示。
    索引技術(shù)除可以重新排列數(shù)據(jù)表記錄的前后順序外,在建立數(shù)據(jù)表間的關(guān)聯(lián)時(shí),或者利用 SQL語言建立查詢、視圖時(shí),都必須*索引技術(shù)來支持。
    2.索引關(guān)鍵字的類型
    索引關(guān)鍵字:是由一個(gè)或若干個(gè)字段構(gòu)成的索引表達(dá)式。索引表達(dá)式的類型決定了不同的索引方式。VFP系統(tǒng)提供了四種不同的類型,它們分別是主索引、候選索引、普通索引和惟一索引。
    (1)主索引。主索引是能夠惟一地確定數(shù)據(jù)表中一條記錄的字段或字段組合表達(dá)式;要求該字段或字段組合表達(dá)式的值,在數(shù)據(jù)表的全部記錄中都不能出現(xiàn)重復(fù)。
    主索引只能在數(shù)據(jù)庫表中創(chuàng)建和使用,而且一個(gè)數(shù)據(jù)表只能指定一個(gè)主索引。表的主索引就相當(dāng)于關(guān)系的主碼。
    (2)候選索引。候選索引像主索引一樣,是能夠惟一地確定數(shù)據(jù)表中一條記錄的字段或字段組合表達(dá)式。但是,一個(gè)數(shù)據(jù)表允許建立多個(gè)候選索引,可以在數(shù)據(jù)庫表或自由表中創(chuàng)建候選索引。如果將一個(gè)包含了重復(fù)數(shù)據(jù)的字段指定為候選索引,系統(tǒng)會返回一個(gè)出錯信息,并禁止創(chuàng)建該索引。表的候選索引相當(dāng)于關(guān)系的候選碼。
    (3)普通索引。普通索引允許數(shù)據(jù)表中各記錄的索引字段或字段組合表達(dá)式的值相同,而且既允許在數(shù)據(jù)庫表中創(chuàng)建,也允許在自由表中創(chuàng)建。
    (4)索引。索引是VFP為保持與低版本軟件的兼容性而保留的一種索引類型,一般情況下很少使用。它允許數(shù)據(jù)表中各記錄的索引字段,或字段組合表達(dá)式的值相同,但是在索引表中只保留數(shù)據(jù)表中與索引字段值相同的第一條記錄。
    3.創(chuàng)建索引文件
    可以使用命令建立索引文件,但是利用表設(shè)計(jì)器創(chuàng)建索引文件更加直觀、方便。結(jié)構(gòu)復(fù)合索引文件可以在創(chuàng)建數(shù)據(jù)表時(shí)建立,也可以對已經(jīng)建立好的數(shù)據(jù)表創(chuàng)建或修改索引。
    4.索引的操作
    (l)打開與關(guān)閉。要使用索引,必須先要打開索引。結(jié)構(gòu)復(fù)合索引總是隨著數(shù)據(jù)表打開,一旦數(shù)據(jù)表文件關(guān)閉,相應(yīng)的索引文件也就自動關(guān)閉了。
    (2)確定主索引。結(jié)構(gòu)復(fù)合索引打開后,其中的索引標(biāo)識(Tag) 并不起作用,數(shù)據(jù)表記錄順序仍然保持著原始自然排列。必須要執(zhí)行確定主索引的操作后,數(shù)據(jù)表記錄的排列順序才會跟著變化。
    在程序中常常使用命令方式確定當(dāng)前主索引。
    (3)刪除索引標(biāo)識。要刪除結(jié)構(gòu)復(fù)合索引文件中的索引標(biāo)識,應(yīng)當(dāng)打開數(shù)據(jù)表文件,并打開其表設(shè)計(jì)器對話框。在“索引” 頁卡中選定要刪除的索引標(biāo)識后,單擊“刪除” 按鈕刪除。
    6.3.4 創(chuàng)建數(shù)據(jù)表之間的關(guān)聯(lián)
    對于數(shù)據(jù)庫中各相關(guān)數(shù)據(jù)表之間的聯(lián)系必須通過建立關(guān)聯(lián)來實(shí)現(xiàn)。
    數(shù)據(jù)表是和關(guān)系相對應(yīng)的,所以數(shù)據(jù)表之間的聯(lián)系也可以分為一對一、一對多和多對多三類。但是在實(shí)際處理時(shí),往往把一個(gè)多對多的聯(lián)系分解成兩個(gè)一對多的聯(lián)系處理。
    1.創(chuàng)建關(guān)聯(lián)
    在VFP中,表間的聯(lián)系有“永久性關(guān)聯(lián)” 和“臨時(shí)性關(guān)聯(lián)”兩種:臨時(shí)性關(guān)聯(lián)只是在使用時(shí)臨時(shí)建立的表間聯(lián)系,一旦關(guān)閉數(shù)據(jù)表則臨時(shí)性關(guān)聯(lián)也就消失了;永久性關(guān)聯(lián)是被存放在數(shù)據(jù)庫中的數(shù)據(jù)表間聯(lián)系,它將隨數(shù)據(jù)庫長期保存,隨著數(shù)據(jù)庫的打開而打開、關(guān)閉而關(guān)閉。
    在創(chuàng)建數(shù)據(jù)表之間的關(guān)聯(lián)時(shí),當(dāng)前表叫做父表,要關(guān)聯(lián)的表叫做子表。必須保證兩個(gè)要建立關(guān)聯(lián)的數(shù)據(jù)表中存在同名字段;同時(shí)要求每個(gè)數(shù)據(jù)表事先分別對該字段建立了索引。
    (1)建立表間的一對一關(guān)系。首先,要使兩個(gè)表都具有同一屬性的字段;其次,定義父表與子表中同名宇段為主索引字段或候選索引字段。由于兩個(gè)表中的同一屬性的字段值都是惟一的,因此兩個(gè)表之間的關(guān)聯(lián)就是“一對一” 的。
    (2)建立表間的一對多關(guān)系。首先,要使兩個(gè)表都具有同一名稱、屬性的字段;其次,定義父表中該字段為主索引字段或候選索引字段(其字段值是惟一的) ,子表中與其同名的字段為普通索引字段。由于兩個(gè)表中的同一屬性的字段值是一對多的關(guān)系,因此可以創(chuàng)建兩個(gè)表之間的“一對多” 的關(guān)系。
    2.調(diào)整或刪除關(guān)聯(lián)
    修改主要有兩個(gè)方面:
    (1)刪除關(guān)聯(lián)。在數(shù)據(jù)庫設(shè)計(jì)器對話框窗口中,用鼠標(biāo)左鍵單擊關(guān)聯(lián)線,該連線變粗了則說明它已經(jīng)被選中。如果要刪除可敲[Del]鍵,也可以單擊鼠標(biāo)右鍵在彈出對話框窗口中單擊“刪除關(guān)系” 選項(xiàng)。
    (2)編輯關(guān)聯(lián)。在數(shù)據(jù)庫設(shè)計(jì)器對話框窗口中,用鼠標(biāo)左鍵單擊關(guān)聯(lián)線,該連線變粗了則說明它已經(jīng)被選中。在主菜單“數(shù)據(jù)庫”選項(xiàng)的下拉菜單中單擊“編輯關(guān)系”選項(xiàng),也可以單擊鼠標(biāo)右鍵在彈出對話框窗口中單擊“編輯關(guān)系” 選項(xiàng),這樣將會打開其對話框窗口。
    可以在“表” 和“相關(guān)表” 的下拉列表框中重新選擇新的相應(yīng)索引字段。