[計(jì)算機(jī)軟件及應(yīng)用]第三章 數(shù)據(jù)庫表ppt課件_第1頁
[計(jì)算機(jī)軟件及應(yīng)用]第三章 數(shù)據(jù)庫表ppt課件_第2頁
[計(jì)算機(jī)軟件及應(yīng)用]第三章 數(shù)據(jù)庫表ppt課件_第3頁
[計(jì)算機(jī)軟件及應(yīng)用]第三章 數(shù)據(jù)庫表ppt課件_第4頁
[計(jì)算機(jī)軟件及應(yīng)用]第三章 數(shù)據(jù)庫表ppt課件_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章第四章 數(shù)據(jù)庫和數(shù)據(jù)表的操作數(shù)據(jù)庫和數(shù)據(jù)表的操作第二部分第二部分3.4 索引文件及其應(yīng)用索引文件及其應(yīng)用n3.4.1 索引文件及分類索引文件及分類n1. 索引文件n索引文件:它僅由兩個(gè)字段組成,一個(gè)字段索引文件:它僅由兩個(gè)字段組成,一個(gè)字段是排序的關(guān)鍵字值也可以是一個(gè)表達(dá)式,是排序的關(guān)鍵字值也可以是一個(gè)表達(dá)式,另一個(gè)字段是每個(gè)關(guān)鍵字在原始數(shù)據(jù)表中對(duì)應(yīng)另一個(gè)字段是每個(gè)關(guān)鍵字在原始數(shù)據(jù)表中對(duì)應(yīng)的記錄號(hào)。例,在的記錄號(hào)。例,在Rsda.dbf數(shù)據(jù)表中,以編數(shù)據(jù)表中,以編號(hào)為關(guān)鍵字段并按升序建立的索引文件的示意號(hào)為關(guān)鍵字段并按升序建立的索引文件的示意圖如以下圖所示。圖如以下圖所示。n1. 索引文

2、件索引文件n原數(shù)據(jù)表中的順序是按輸入的順序存儲(chǔ)在表中的,原數(shù)據(jù)表中的順序是按輸入的順序存儲(chǔ)在表中的,在索引文件中,記錄是按索引關(guān)鍵字值的順序排列在索引文件中,記錄是按索引關(guān)鍵字值的順序排列的的,當(dāng)要查找某一編號(hào)的記錄時(shí),當(dāng)要查找某一編號(hào)的記錄時(shí),VFP先在索引文先在索引文件中查找該編號(hào),找到后再根據(jù)對(duì)應(yīng)的記錄號(hào),在件中查找該編號(hào),找到后再根據(jù)對(duì)應(yīng)的記錄號(hào),在數(shù)據(jù)表中將記錄指針快速挪動(dòng)到該記錄上。數(shù)據(jù)表中將記錄指針快速挪動(dòng)到該記錄上。 n一個(gè)索引文件中可以只有一個(gè)索引,也可以有一個(gè)索引文件中可以只有一個(gè)索引,也可以有多個(gè)多個(gè)索引索引??梢园鄠€(gè)索引的索引文件稱該文件為復(fù)??梢园鄠€(gè)索引的索引

3、文件稱該文件為復(fù)合索引文件。在復(fù)合索引文件中,需要為每個(gè)索引合索引文件。在復(fù)合索引文件中,需要為每個(gè)索引指定一個(gè)索引標(biāo)識(shí)名,以便于通過索引標(biāo)識(shí)互相區(qū)指定一個(gè)索引標(biāo)識(shí)名,以便于通過索引標(biāo)識(shí)互相區(qū)分各個(gè)索引。分各個(gè)索引。 3.4.1 索引文件及分類n2. 索引文件的分類索引文件的分類nVFP支持傳統(tǒng)的支持傳統(tǒng)的單入口索引文件單入口索引文件擴(kuò)展名為擴(kuò)展名為.IDX和和復(fù)合索引文件復(fù)合索引文件擴(kuò)展名擴(kuò)展名.CDX,其中,其中.IDX索引文索引文件中只包含一個(gè)索引,而件中只包含一個(gè)索引,而.CDX索引文件中可以包含索引文件中可以包含有一個(gè)或多個(gè)索引,所以稱為復(fù)合索引文件。有一個(gè)或多個(gè)索引,所以稱為復(fù)合索

4、引文件。n復(fù)合索引文件,又可分為復(fù)合索引文件,又可分為構(gòu)造化復(fù)合索引文件構(gòu)造化復(fù)合索引文件和和非非構(gòu)造化復(fù)合索引文件構(gòu)造化復(fù)合索引文件兩種,其區(qū)別在于:構(gòu)造化復(fù)兩種,其區(qū)別在于:構(gòu)造化復(fù)合索引的主文件名與數(shù)據(jù)表的主文件名一樣,并隨合索引的主文件名與數(shù)據(jù)表的主文件名一樣,并隨著數(shù)據(jù)表的翻開而翻開,在添加、更改或刪除記錄著數(shù)據(jù)表的翻開而翻開,在添加、更改或刪除記錄時(shí)會(huì)自動(dòng)進(jìn)展維護(hù);而非構(gòu)造化復(fù)合索引文件的主時(shí)會(huì)自動(dòng)進(jìn)展維護(hù);而非構(gòu)造化復(fù)合索引文件的主文件名與數(shù)據(jù)表文件不同,必須用命令翻開。文件名與數(shù)據(jù)表文件不同,必須用命令翻開。 3.4.1 索引文件及分類n3. 索引的類型索引的類型n1主索引主索

5、引n主索引通常是主索引通常是數(shù)據(jù)表的關(guān)鍵字索引數(shù)據(jù)表的關(guān)鍵字索引,作為主索引,作為主索引的字段稱為主關(guān)鍵字。主索引不能用在自由表中,的字段稱為主關(guān)鍵字。主索引不能用在自由表中,而只能用在數(shù)據(jù)庫表中,可用于在永久關(guān)系中建而只能用在數(shù)據(jù)庫表中,可用于在永久關(guān)系中建立參照完好性。創(chuàng)立主索引的字段立參照完好性。創(chuàng)立主索引的字段不允許有重復(fù)不允許有重復(fù)值值,且一個(gè)表,且一個(gè)表只能有一個(gè)主索引只能有一個(gè)主索引。n例如,在數(shù)據(jù)表中,常用學(xué)生證號(hào)、身份證號(hào)、例如,在數(shù)據(jù)表中,常用學(xué)生證號(hào)、身份證號(hào)、工作證號(hào)等作為主索引,而姓名可能有同名的情工作證號(hào)等作為主索引,而姓名可能有同名的情況,一般不能作為主索引。況,

6、一般不能作為主索引。 3.4.1 索引文件及分類n3. 索引的類型索引的類型n2候選索引候選索引n候選索引類似于主索引,候選索引類似于主索引,其索引值就不能有重復(fù)其索引值就不能有重復(fù)值。與主索引不同的是,值。與主索引不同的是,一個(gè)數(shù)據(jù)表中可以有多一個(gè)數(shù)據(jù)表中可以有多個(gè)候選索引個(gè)候選索引,而且侯選索引不能用來在永久關(guān)系,而且侯選索引不能用來在永久關(guān)系中建立參照完好性。中建立參照完好性。n3惟一索引惟一索引n惟一索引表示索引值只能取一個(gè),假如有兩個(gè)或惟一索引表示索引值只能取一個(gè),假如有兩個(gè)或兩個(gè)以上的索引值,那么只能取其中一個(gè),因此,兩個(gè)以上的索引值,那么只能取其中一個(gè),因此,惟一索引使用時(shí)可能會(huì)

7、隱藏一些記錄。例如,假惟一索引使用時(shí)可能會(huì)隱藏一些記錄。例如,假設(shè)有兩個(gè)同名的人員,將姓名字段作為惟一索引,設(shè)有兩個(gè)同名的人員,將姓名字段作為惟一索引,那么只能找到一個(gè)記錄,另一個(gè)記錄將不會(huì)找到。那么只能找到一個(gè)記錄,另一個(gè)記錄將不會(huì)找到。3.4.1 索引文件及分類n3. 索引的類型索引的類型n4普通索引普通索引n普通索引沒有上面各索引的限制,是普通索引沒有上面各索引的限制,是允許重復(fù)索引值的索引允許重復(fù)索引值的索引。作為普通索。作為普通索引的字段,其字段值可以重復(fù),引的字段,其字段值可以重復(fù),也可也可以作為排序的根據(jù)以作為排序的根據(jù),但因?yàn)榭赡苡卸?,但因?yàn)榭赡苡卸鄠€(gè)一樣的索引值,因此查詢時(shí)會(huì)

8、找到個(gè)一樣的索引值,因此查詢時(shí)會(huì)找到多個(gè)符合條件的記錄。一個(gè)數(shù)據(jù)表中多個(gè)符合條件的記錄。一個(gè)數(shù)據(jù)表中可以有可以有多個(gè)多個(gè)普通索引。普通索引。3.4.2 創(chuàng)立索引文件n1. 建立構(gòu)造化復(fù)合索引文件建立構(gòu)造化復(fù)合索引文件n1 在表設(shè)計(jì)器中創(chuàng)立索引文件在表設(shè)計(jì)器中創(chuàng)立索引文件n2 命令方式創(chuàng)立索引n【格式格式】INDEX ON 表達(dá)式 TAG 索引標(biāo)識(shí)名 FOR 條件表達(dá)式n ASCENDING|DESCENDINGUNIQUE|CANDIDATEADDITIVEn【功能功能】建立構(gòu)造化復(fù)合索引文件。建立構(gòu)造化復(fù)合索引文件。nUSE RSDAn INDEX ON 編號(hào)編號(hào) TAG NBH CANDn

9、 INDEX ON 性別性別+CTOD出生日期出生日期 TAG XBCSRQ n2. 建立獨(dú)立復(fù)合索引文件建立獨(dú)立復(fù)合索引文件n獨(dú)立復(fù)合索引文件的擴(kuò)展名也是獨(dú)立復(fù)合索引文件的擴(kuò)展名也是.CDX,但其主文件名與數(shù),但其主文件名與數(shù)據(jù)表文件名不一樣,且使用時(shí)還需單獨(dú)翻開。獨(dú)立復(fù)合索據(jù)表文件名不一樣,且使用時(shí)還需單獨(dú)翻開。獨(dú)立復(fù)合索引文件主要用來創(chuàng)立那些使用不太頻繁的索引。引文件主要用來創(chuàng)立那些使用不太頻繁的索引。n獨(dú)立復(fù)合索引文件不能在表設(shè)計(jì)器中創(chuàng)立,命令建立。獨(dú)立復(fù)合索引文件不能在表設(shè)計(jì)器中創(chuàng)立,命令建立。n【格式格式】INDEX ON 表達(dá)式 TAG 索引標(biāo)識(shí)名 OF 獨(dú)立復(fù)合索引文件名n F

10、OR 條件表達(dá)式ASCENDING|DESCENDINGn UNIQUE|CANDIDATEADDITIVEnUSE RSDAn INDEX ON 編號(hào)編號(hào) TAG bh OF Rs.cdxn INDEX ON 姓名姓名+STR職務(wù)補(bǔ)貼職務(wù)補(bǔ)貼 TAG xbbt OF Rs.cdxn3. 重新建立索引文件重新建立索引文件n在數(shù)據(jù)表的使用過程中,當(dāng)增刪記錄或數(shù)據(jù)表中被在數(shù)據(jù)表的使用過程中,當(dāng)增刪記錄或數(shù)據(jù)表中被索引文件使用的關(guān)鍵字段改動(dòng)時(shí),索引文件使用的關(guān)鍵字段改動(dòng)時(shí),構(gòu)造化復(fù)合索引構(gòu)造化復(fù)合索引會(huì)隨著數(shù)據(jù)表的翻開自動(dòng)翻開并能及時(shí)得到更新會(huì)隨著數(shù)據(jù)表的翻開自動(dòng)翻開并能及時(shí)得到更新,但假如在使用數(shù)

11、據(jù)表時(shí)未翻開相應(yīng)的獨(dú)立復(fù)合索引但假如在使用數(shù)據(jù)表時(shí)未翻開相應(yīng)的獨(dú)立復(fù)合索引文件或傳統(tǒng)的單入口文件或傳統(tǒng)的單入口.IDX索引文件,那么索引文件索引文件,那么索引文件會(huì)因?yàn)闊o法及時(shí)更新而產(chǎn)生錯(cuò)誤索引。這時(shí)須翻開會(huì)因?yàn)闊o法及時(shí)更新而產(chǎn)生錯(cuò)誤索引。這時(shí)須翻開索引文件,并對(duì)其重新索引。索引文件,并對(duì)其重新索引。n重執(zhí)行一遍重執(zhí)行一遍INDEX命令即可重新索引,更簡(jiǎn)捷的方命令即可重新索引,更簡(jiǎn)捷的方法是在閱讀窗口中翻開數(shù)據(jù)表,然后選擇菜單法是在閱讀窗口中翻開數(shù)據(jù)表,然后選擇菜單“表表、“重建建立索引命令,或翻開數(shù)據(jù)表后用重建建立索引命令,或翻開數(shù)據(jù)表后用REINDEX命令重新建立索引。命令重新建立索引。n

12、【格式格式】REINDEX3.4.3 索引文件的使用n1. 指定主控索引指定主控索引n一個(gè)數(shù)據(jù)表可以建立一個(gè)數(shù)據(jù)表可以建立多個(gè)索引文件多個(gè)索引文件,每個(gè)索引,每個(gè)索引文件中又可能包含文件中又可能包含多個(gè)索引多個(gè)索引,而一種索引就是,而一種索引就是一種排序方式,所以,在使用索引時(shí),必須指一種排序方式,所以,在使用索引時(shí),必須指明哪一個(gè)索引是對(duì)數(shù)據(jù)表記錄排序起作用的,明哪一個(gè)索引是對(duì)數(shù)據(jù)表記錄排序起作用的,即指定主控索引。在沒有指定哪一個(gè)索引為主即指定主控索引。在沒有指定哪一個(gè)索引為主控索引之前,數(shù)據(jù)表的控索引之前,數(shù)據(jù)表的訪問順序訪問順序仍然是原來的仍然是原來的物理順序,即按記錄號(hào)的順序訪問。物

13、理順序,即按記錄號(hào)的順序訪問。n主控索引和主索引是完全不同的概念。主索引主控索引和主索引是完全不同的概念。主索引是用來控制數(shù)據(jù)的完好性的,而主控索引是用是用來控制數(shù)據(jù)的完好性的,而主控索引是用來指定目前記錄排列順序的。來指定目前記錄排列順序的。 1. 指定主控索引指定主控索引n1 指定構(gòu)造化復(fù)合索引文件中的索引為主控索引指定構(gòu)造化復(fù)合索引文件中的索引為主控索引n在閱讀窗口中翻開數(shù)據(jù)表以表在閱讀窗口中翻開數(shù)據(jù)表以表Rsgz.dbf為例,為例,選擇菜單選擇菜單“表、表、“屬性命令,即彈出屬性命令,即彈出“工作區(qū)工作區(qū)屬性屬性對(duì)話框,單擊對(duì)話框,單擊“索引順序索引順序下拉列表,選擇下拉列表,選擇一個(gè)

14、索引標(biāo)識(shí)名一個(gè)索引標(biāo)識(shí)名 ,閱讀窗口中記錄的排列順序會(huì)立即閱讀窗口中記錄的排列順序會(huì)立即根據(jù)選擇的主控索引發(fā)生變化根據(jù)選擇的主控索引發(fā)生變化 n設(shè)定主控索引后,利用設(shè)定主控索引后,利用LIST、DISPLAY命令輸出的命令輸出的記錄順序也是排序后的順序。記錄順序也是排序后的順序。n需要特別強(qiáng)調(diào)的是,需要特別強(qiáng)調(diào)的是,主控索引只是改變了記錄的輸主控索引只是改變了記錄的輸出順序出順序,記錄在數(shù)據(jù)庫中的順序并沒有發(fā)生變化。,記錄在數(shù)據(jù)庫中的順序并沒有發(fā)生變化。 n通過通過VFP的的USE命令和命令和SET ORDER TO命令也可以指命令也可以指定主控索引。定主控索引。n【格式一格式一】USE 數(shù)據(jù)

15、表名 ORDER TAG n ASCENDING|DESCENDINGn【格式二格式二】SET ORDER TO TAG ASCENDING|DESCENDINGn【功能功能】指定構(gòu)造化復(fù)合索引文件的索引為主控索指定構(gòu)造化復(fù)合索引文件的索引為主控索引。引。n2 指定獨(dú)立復(fù)合索引文件中的索引為主控索引指定獨(dú)立復(fù)合索引文件中的索引為主控索引n對(duì)于獨(dú)立的復(fù)合索引文件或單入口的索引文件,需對(duì)于獨(dú)立的復(fù)合索引文件或單入口的索引文件,需要用命令將其翻開和關(guān)閉,只有翻開要使用的獨(dú)立要用命令將其翻開和關(guān)閉,只有翻開要使用的獨(dú)立復(fù)合索引文件后,才能指定其中的索引為主控索引。復(fù)合索引文件后,才能指定其中的索引為主

16、控索引。n【格式一格式一】USE ORDER TAG n OF ASCENDING|DESCENDINGn【格式二格式二】SET INDEX TO TAG OF n4 關(guān)閉索引文件關(guān)閉索引文件n【格式一格式一】SET INDEX TOn【格式二格式二】CLOSE INDEXn2. 控制重復(fù)值控制重復(fù)值n人事檔案人事檔案Rsda表中的編號(hào)字段,是用來惟一標(biāo)表中的編號(hào)字段,是用來惟一標(biāo)識(shí)一位職工的,所以該字段的值是不允許重復(fù)識(shí)一位職工的,所以該字段的值是不允許重復(fù)的。利用主索引可以解決這個(gè)問題,只要為編的。利用主索引可以解決這個(gè)問題,只要為編號(hào)字段建立索引,并將索引類型設(shè)置為主索引號(hào)字段建立索引,

17、并將索引類型設(shè)置為主索引 n3. 使用索引快速查找記錄使用索引快速查找記錄nFIND命令和命令和SEEK命令都可在指定主控索引的命令都可在指定主控索引的情況下進(jìn)展記錄的查找操作。情況下進(jìn)展記錄的查找操作。 n】SEEK 表達(dá)式 n USE Rsda ORDER TAG bhn & 翻開翻開Rsda同時(shí)指定同時(shí)指定BH為主控索引為主控索引n SEEK 03001n SET ORDER TO rq n & 重新指定重新指定rq為主控索引為主控索引n SEEK CTOD1988.09.06 n & 日期格式要與設(shè)置一樣,否那么會(huì)出錯(cuò)日期格式要與設(shè)置一樣,否那么會(huì)出錯(cuò)n DIS

18、PLAY 3.5 數(shù)據(jù)表的統(tǒng)計(jì)計(jì)算數(shù)據(jù)表的統(tǒng)計(jì)計(jì)算n3.5.1 累加求和及求平均值n對(duì)每個(gè)記錄的對(duì)每個(gè)記錄的橫向求和橫向求和和統(tǒng)計(jì)可以用前面介紹的操作或和統(tǒng)計(jì)可以用前面介紹的操作或命令方便地給出,如命令方便地給出,如REPLACE命令。對(duì)于每個(gè)記錄的命令。對(duì)于每個(gè)記錄的縱向求和縱向求和統(tǒng)計(jì)可以用統(tǒng)計(jì)可以用累加求和累加求和命令實(shí)現(xiàn)。命令實(shí)現(xiàn)。n【格式格式】SUM|AVERAGE 表達(dá)式表范圍FOR 條件表達(dá)式n WHILE 條件表達(dá)式TO 內(nèi)存變量名表|TO 數(shù)組變量名n【例例】求出求出Rsgz.dbf中計(jì)算機(jī)系所有職工的月根本工資平均值中計(jì)算機(jī)系所有職工的月根本工資平均值及全年實(shí)發(fā)工資之和并顯

19、示。及全年實(shí)發(fā)工資之和并顯示。n CLEARn SET TALK OFFn USE Rsgzn AVERAGE 根本工資根本工資 TO pj_jbgz FOR SUBSTR編號(hào)編號(hào),1,2=03n SUM 實(shí)發(fā)工資實(shí)發(fā)工資*12 TO qn_sfgz FOR SUBSTR編號(hào)編號(hào),1,2=03n ?計(jì)算機(jī)系職工的月平均工資為:計(jì)算機(jī)系職工的月平均工資為:,pj_jbgzn ?計(jì)算機(jī)職工的全年實(shí)發(fā)工資之和為:計(jì)算機(jī)職工的全年實(shí)發(fā)工資之和為:,qn_sfgzn USEn SET TALK ONn RETURNn3.5.2 統(tǒng)計(jì)記錄個(gè)數(shù)n【格式格式】COUNT 范圍FOR 條件表達(dá)式n WHILE

20、條件表達(dá)式TO 內(nèi)存變量名表|TO 數(shù)組變量名n3.5.3 分類匯總n分類匯總對(duì)已經(jīng)建立了索引并且指定了主控索引的數(shù)據(jù)表,可以按關(guān)鍵字進(jìn)展分類求和n【格式】TOTAL ON 關(guān)鍵字表達(dá)式 TO 新表名 FIELDS 字段名表n 范圍FOR 條件表達(dá)式WHILE 條件表達(dá)式2n 當(dāng)前數(shù)據(jù)表必須是按關(guān)鍵字表達(dá)式索引過,并當(dāng)前數(shù)據(jù)表必須是按關(guān)鍵字表達(dá)式索引過,并指定該索引為主控索引,以保證具有一樣關(guān)鍵字值的記指定該索引為主控索引,以保證具有一樣關(guān)鍵字值的記錄能連續(xù)訪問。錄能連續(xù)訪問。n FIELDS短語給出了需分類求和的字段名,這些字段短語給出了需分類求和的字段名,這些字段只能是數(shù)值型或貨幣型的,假

21、如缺省,那么對(duì)當(dāng)前表中只能是數(shù)值型或貨幣型的,假如缺省,那么對(duì)當(dāng)前表中的所有數(shù)值型或貨幣型字段分類求和。不管選不選的所有數(shù)值型或貨幣型字段分類求和。不管選不選FIELDS短語,新表與當(dāng)前表的構(gòu)造是一樣的。短語,新表與當(dāng)前表的構(gòu)造是一樣的。n 對(duì)當(dāng)前數(shù)據(jù)表中的假設(shè)干個(gè)關(guān)鍵字表達(dá)式一樣的記對(duì)當(dāng)前數(shù)據(jù)表中的假設(shè)干個(gè)關(guān)鍵字表達(dá)式一樣的記錄,生成新表中的一條記錄。這條記錄的非數(shù)值型或非錄,生成新表中的一條記錄。這條記錄的非數(shù)值型或非貨幣型字段取自關(guān)鍵字一樣的一組記錄中首記錄的相應(yīng)貨幣型字段取自關(guān)鍵字一樣的一組記錄中首記錄的相應(yīng)字段,參加求和的字段值取自求和結(jié)果。字段,參加求和的字段值取自求和結(jié)果。3.6

22、 數(shù)據(jù)交換數(shù)據(jù)交換n3.6.1 數(shù)組與數(shù)據(jù)表的數(shù)據(jù)交換n1. 將數(shù)據(jù)表中的記錄數(shù)據(jù)保存到數(shù)組中將數(shù)據(jù)表中的記錄數(shù)據(jù)保存到數(shù)組中n【格式一】SCATTER FIELDS 字段名表MEMO TO 數(shù)組名n【格式二】COPY TO ARRAY 數(shù)組名FIELDS 字段名表n 范圍FOR 邏輯表達(dá)式n【功能功能】將當(dāng)前翻開的數(shù)據(jù)表中的某些記錄數(shù)據(jù)存儲(chǔ)在數(shù)組中。將當(dāng)前翻開的數(shù)據(jù)表中的某些記錄數(shù)據(jù)存儲(chǔ)在數(shù)組中。n2. 將數(shù)組中的數(shù)據(jù)傳遞到當(dāng)前數(shù)據(jù)表中將數(shù)組中的數(shù)據(jù)傳遞到當(dāng)前數(shù)據(jù)表中n【格式一】GATHER FROM 數(shù)組名 FIELDS 字段名表MEMOn【格式二】APPEND FROM ARRAY 數(shù)組

23、名n FOR 邏輯表達(dá)式FIELDS 字段名表n【功能功能】將數(shù)組中各元素的數(shù)據(jù)傳遞給當(dāng)前翻開的數(shù)據(jù)表中。將數(shù)組中各元素的數(shù)據(jù)傳遞給當(dāng)前翻開的數(shù)據(jù)表中。n注意:請(qǐng)讀者將注意:請(qǐng)讀者將COPY TO ARRAY與與SCATTER、APPEND FROM ARRAY與與GATHER FROM的差異搞清楚。的差異搞清楚。3.6.2 文件復(fù)制n1. 復(fù)制部分記錄或整個(gè)數(shù)據(jù)表復(fù)制部分記錄或整個(gè)數(shù)據(jù)表n【格式格式】COPY TO 表文件名 FOR|WHILE n FIELDS n DATABASE NAME n WITH CDX | WITH PRODUCTIONn | SDF | SYLK | WK1

24、| WKS | WR1 | WRK | XLS | XL5n | DELIMITED WITH | WITH BLANK | n2. 復(fù)制數(shù)據(jù)表的構(gòu)造復(fù)制數(shù)據(jù)表的構(gòu)造n【格式格式】COPY STRUCTURE TO 表文件名FIELDS 字段名表 WITH CDX | WITH PRODUCTIONn說明:說明: 假設(shè)不選可選項(xiàng),生成的表構(gòu)造具假設(shè)不選可選項(xiàng),生成的表構(gòu)造具有與原數(shù)據(jù)表一樣的字段名、類型和寬度。有與原數(shù)據(jù)表一樣的字段名、類型和寬度。n假設(shè)選假設(shè)選FIELDS子句,生成的表構(gòu)造只有子句,生成的表構(gòu)造只有字段名表中的字段,字段名之間用逗號(hào)字段名表中的字段,字段名之間用逗號(hào)隔開。隔開

25、。n CDX和和PRODUCTION的意義與復(fù)制記錄的意義與復(fù)制記錄時(shí)的意義一致。時(shí)的意義一致。3.7 多數(shù)據(jù)表操作多數(shù)據(jù)表操作n在一個(gè)數(shù)據(jù)庫中,一般都有著許多個(gè)數(shù)據(jù)表。在一個(gè)數(shù)據(jù)庫中,一般都有著許多個(gè)數(shù)據(jù)表。而在對(duì)這些表的使用中,也經(jīng)常是多個(gè)表中而在對(duì)這些表的使用中,也經(jīng)常是多個(gè)表中的數(shù)據(jù)同時(shí)被用到。的數(shù)據(jù)同時(shí)被用到。VFP提供了強(qiáng)有力的多提供了強(qiáng)有力的多數(shù)據(jù)表操作才能,引入了數(shù)據(jù)表操作才能,引入了工作區(qū)工作區(qū)和和表的別名表的別名這兩個(gè)概念。用戶可以在不同的工作區(qū)中同這兩個(gè)概念。用戶可以在不同的工作區(qū)中同時(shí)翻開多個(gè)表,也可以在不同的工作區(qū)翻開時(shí)翻開多個(gè)表,也可以在不同的工作區(qū)翻開同一個(gè)表,通

26、過表的別名,用戶可以引用在同一個(gè)表,通過表的別名,用戶可以引用在不同工作區(qū)翻開的表中的數(shù)據(jù)。不同工作區(qū)翻開的表中的數(shù)據(jù)。n3.7.1 工作區(qū)的根本概念n所謂“翻開數(shù)據(jù)表,實(shí)際上就是VFP在內(nèi)存中開拓了一個(gè)區(qū)域亦稱緩沖區(qū)與磁盤上數(shù)據(jù)表之間建立起一種映射關(guān)系,使VFP通過緩沖區(qū)使用磁盤上數(shù)據(jù)表里的數(shù)據(jù),這個(gè)內(nèi)存中的緩沖區(qū)就稱為工作區(qū)。 n1. 工作區(qū)的性質(zhì)工作區(qū)的性質(zhì)n1在每在每一個(gè)工作區(qū)中一個(gè)工作區(qū)中只能翻開一個(gè)表只能翻開一個(gè)表,VFP最多可以開拓最多可以開拓32767個(gè)工作區(qū),翻開個(gè)工作區(qū),翻開32767個(gè)表。個(gè)表。允許一個(gè)表在允許一個(gè)表在幾個(gè)工作區(qū)幾個(gè)工作區(qū)中同中同時(shí)翻開時(shí)翻開。n 2 在某

27、一時(shí)刻在某一時(shí)刻只能選擇一個(gè)工作區(qū)為只能選擇一個(gè)工作區(qū)為“當(dāng)前工作區(qū)當(dāng)前工作區(qū),對(duì)其中的表進(jìn)展操作。,對(duì)其中的表進(jìn)展操作。系系統(tǒng)初始狀態(tài)默認(rèn)統(tǒng)初始狀態(tài)默認(rèn)1號(hào)工作區(qū)為號(hào)工作區(qū)為當(dāng)前工作區(qū)當(dāng)前工作區(qū)。n3每一工作區(qū)翻開的數(shù)據(jù)表都有各自的記錄每一工作區(qū)翻開的數(shù)據(jù)表都有各自的記錄指針。指針。在一般情況下,在一般情況下,對(duì)數(shù)據(jù)表的操作只能挪動(dòng)對(duì)數(shù)據(jù)表的操作只能挪動(dòng)當(dāng)前工作區(qū)的記錄指針當(dāng)前工作區(qū)的記錄指針。當(dāng)使得數(shù)據(jù)表之間建立。當(dāng)使得數(shù)據(jù)表之間建立臨時(shí)關(guān)系以后,另一工作區(qū)的記錄指針才能根據(jù)臨時(shí)關(guān)系以后,另一工作區(qū)的記錄指針才能根據(jù)要求伴隨當(dāng)前工作區(qū)的記錄指針作相應(yīng)的挪動(dòng)要求伴隨當(dāng)前工作區(qū)的記錄指針作相應(yīng)

28、的挪動(dòng)。n4內(nèi)存變量?jī)?nèi)存變量對(duì)各工作區(qū)是公用的對(duì)各工作區(qū)是公用的,每一工作,每一工作區(qū)的區(qū)的字段變量字段變量對(duì)其它各工作區(qū)也是公用的。對(duì)其它各工作區(qū)也是公用的。在任在任意工作區(qū)都可以對(duì)其它工作區(qū)的當(dāng)前記錄進(jìn)展意工作區(qū)都可以對(duì)其它工作區(qū)的當(dāng)前記錄進(jìn)展讀、讀、寫寫操作操作。n工作區(qū)的編號(hào)和別名工作區(qū)的編號(hào)和別名 為了標(biāo)識(shí)每一個(gè)工作區(qū),系統(tǒng)給每一工作為了標(biāo)識(shí)每一個(gè)工作區(qū),系統(tǒng)給每一工作區(qū)編號(hào),號(hào)碼為區(qū)編號(hào),號(hào)碼為1、2、32767。同時(shí)還為。同時(shí)還為工作區(qū)規(guī)定了別名,其中工作區(qū)規(guī)定了別名,其中1至至10號(hào)工作區(qū)別名號(hào)工作區(qū)別名為為A、B、J;11至至32767號(hào)工作區(qū)別名為號(hào)工作區(qū)別名為W11、W1

29、2、W32767。 給數(shù)據(jù)表命名時(shí),給數(shù)據(jù)表命名時(shí),不要與工作區(qū)的別名沖突不要與工作區(qū)的別名沖突,否那么容易引起混亂。否那么容易引起混亂。n數(shù)據(jù)表別名數(shù)據(jù)表別名 在翻開數(shù)據(jù)表的同時(shí),可以為數(shù)據(jù)表起一個(gè)別名,這個(gè)別名在翻開數(shù)據(jù)表的同時(shí),可以為數(shù)據(jù)表起一個(gè)別名,這個(gè)別名也作為也作為翻開該數(shù)據(jù)表的工作區(qū)別名翻開該數(shù)據(jù)表的工作區(qū)別名。n格式格式USE ALIAS|AGAINn說明:說明: 假設(shè)不指定工作區(qū),那么默認(rèn)為在當(dāng)前工假設(shè)不指定工作區(qū),那么默認(rèn)為在當(dāng)前工作區(qū)上翻開指定的數(shù)據(jù)表,并作區(qū)上翻開指定的數(shù)據(jù)表,并同時(shí)關(guān)閉以前在當(dāng)前同時(shí)關(guān)閉以前在當(dāng)前工作區(qū)上翻開的數(shù)據(jù)表工作區(qū)上翻開的數(shù)據(jù)表。nALIAS

30、為可選項(xiàng),不指定別名時(shí),原數(shù)為可選項(xiàng),不指定別名時(shí),原數(shù)據(jù)表名就是它的別名。例如,當(dāng)執(zhí)行了命令據(jù)表名就是它的別名。例如,當(dāng)執(zhí)行了命令“USE Rsda ALIAS da后,表后,表Rsda的別名就是的別名就是da;而;而執(zhí)行了命令執(zhí)行了命令“USE Rsda后,那么默認(rèn)后,那么默認(rèn)Rsda表的表的別名。別名。n假設(shè)選擇了假設(shè)選擇了IN 0短語,表示在當(dāng)前沒有使用短語,表示在當(dāng)前沒有使用的編號(hào)最小工作區(qū)上翻開數(shù)據(jù)表。的編號(hào)最小工作區(qū)上翻開數(shù)據(jù)表。n該命令只是在指定的工作區(qū)上翻開數(shù)據(jù)表,該命令只是在指定的工作區(qū)上翻開數(shù)據(jù)表,并并不能改變當(dāng)前工作區(qū)不能改變當(dāng)前工作區(qū)。改變當(dāng)前工作需要單獨(dú)的。改變當(dāng)前

31、工作需要單獨(dú)的命令。命令。n一旦一個(gè)工作區(qū)上翻開了一個(gè)數(shù)據(jù)表,一旦一個(gè)工作區(qū)上翻開了一個(gè)數(shù)據(jù)表,數(shù)據(jù)表數(shù)據(jù)表就和該工作區(qū)建立起對(duì)應(yīng)關(guān)系就和該工作區(qū)建立起對(duì)應(yīng)關(guān)系,所以翻開數(shù)據(jù)表,所以翻開數(shù)據(jù)表后可以用數(shù)據(jù)表的別名來代替工作區(qū)別名。后可以用數(shù)據(jù)表的別名來代替工作區(qū)別名。3.7.2 工作區(qū)的選擇和使用n1. 選擇工作區(qū)n1 利用利用“數(shù)據(jù)工作區(qū)窗口選擇工作區(qū)數(shù)據(jù)工作區(qū)窗口選擇工作區(qū)n選擇選擇窗口窗口菜單中的菜單中的數(shù)據(jù)工作期數(shù)據(jù)工作期命令,或單命令,或單擊常用工具欄中的擊常用工具欄中的數(shù)據(jù)工作期窗口數(shù)據(jù)工作期窗口按鈕,翻開按鈕,翻開數(shù)據(jù)工作期數(shù)據(jù)工作期窗口。窗口。n這時(shí)默認(rèn)當(dāng)前工作區(qū)為這時(shí)默認(rèn)當(dāng)前

32、工作區(qū)為1。單擊翻開按鈕選擇。單擊翻開按鈕選擇一個(gè)數(shù)據(jù)表翻開。假設(shè)再次單擊翻開按鈕,可一個(gè)數(shù)據(jù)表翻開。假設(shè)再次單擊翻開按鈕,可以依次在其它工作區(qū)翻開其它數(shù)據(jù)表,并且以依次在其它工作區(qū)翻開其它數(shù)據(jù)表,并且可以用可以用顯示的顯示的別名別名選擇工作區(qū)選擇工作區(qū)。n在數(shù)據(jù)工作期窗口還可以閱讀各工作區(qū)翻開的數(shù)在數(shù)據(jù)工作期窗口還可以閱讀各工作區(qū)翻開的數(shù)據(jù)表,還可以關(guān)閉他們。據(jù)表,還可以關(guān)閉他們。n 2 利用利用SELECT命令選擇工作區(qū)命令選擇工作區(qū)n格式格式SELECT |n說明:說明:選擇當(dāng)前工作區(qū)選擇當(dāng)前工作區(qū),選擇的工作區(qū)中,選擇的工作區(qū)中可以是在前面已經(jīng)翻開了數(shù)據(jù)表,也可以可以是在前面已經(jīng)翻開了

33、數(shù)據(jù)表,也可以是未曾翻開表。是未曾翻開表。n例:例:USE Rsda &默認(rèn)在默認(rèn)在1號(hào)工作區(qū)翻開號(hào)工作區(qū)翻開Rsda.dbfn SELECT d &選擇選擇4號(hào)工作區(qū)為當(dāng)前工作區(qū)號(hào)工作區(qū)為當(dāng)前工作區(qū)n USE Rsgl &在當(dāng)前在當(dāng)前4號(hào)工作區(qū)翻開號(hào)工作區(qū)翻開Rsgl.dbfn USE Rsgz ALIAS gz &在當(dāng)前在當(dāng)前4號(hào)工作區(qū)翻開號(hào)工作區(qū)翻開Rsgz,同時(shí)關(guān)閉,同時(shí)關(guān)閉Rsgln SELECT 1 &選擇選擇1區(qū)為當(dāng)前工作區(qū)區(qū)為當(dāng)前工作區(qū)n LIST & 顯示當(dāng)前顯示當(dāng)前1號(hào)工作區(qū)數(shù)據(jù)表號(hào)工作區(qū)數(shù)據(jù)表Rsda的記錄的記錄n SELE

34、CT gz & 或或SELE 4,SELE d ,但不能但不能SELE Rsgzn LIST &顯示顯示Rsgz的記錄的記錄n SELE Rsda &是否可以?為什幺?是否可以?為什幺?n LISTn ?SELECT &給出當(dāng)前工作區(qū)號(hào)函數(shù),返回當(dāng)前工作區(qū)號(hào)給出當(dāng)前工作區(qū)號(hào)函數(shù),返回當(dāng)前工作區(qū)號(hào)n USE Rsgl IN 10n ?SELECT n USE &關(guān)閉當(dāng)前工作區(qū)上的數(shù)據(jù)表關(guān)閉當(dāng)前工作區(qū)上的數(shù)據(jù)表n USE Rsgl IN 0 n ?SELECT n2在不同工作區(qū)翻開同一個(gè)數(shù)據(jù)表在不同工作區(qū)翻開同一個(gè)數(shù)據(jù)表n例例 SELE 1n USE Rsd

35、an USE Rsda ALIAS da IN 3 AGAINn SELE 2n USE Rsda AGAINn3. 使用非當(dāng)前工作區(qū)中表的數(shù)據(jù)使用非當(dāng)前工作區(qū)中表的數(shù)據(jù)n方法是在非當(dāng)前工作區(qū)的表的字段名前加方法是在非當(dāng)前工作區(qū)的表的字段名前加注工作區(qū)別名或表的別名。格式為:注工作區(qū)別名或表的別名。格式為:n- 或或 .n注意,這里的符號(hào)注意,這里的符號(hào)“-是是“-和和“兩個(gè)均為半角符號(hào)復(fù)合而成。兩個(gè)均為半角符號(hào)復(fù)合而成。n例例 n SELE 2n USE Rsgl &未指定主索引順序未指定主索引順序,指向號(hào)記錄指向號(hào)記錄n USE Rsda IN 3n SELE 3n LOCATE

36、FOR 姓名姓名=b-姓名姓名 &指向同個(gè)人指向同個(gè)人n DISPLY 部門名,姓名,出生日期,部門名,姓名,出生日期,c.工作日期工作日期 n顯示結(jié)果如下:n 記錄號(hào)記錄號(hào) 部門名部門名 姓名姓名 出生日期出生日期 C-工作日期工作日期n 1 機(jī)關(guān)機(jī)關(guān) 韓偉東韓偉東 1960.10.10 1985.09.04n在VFP中,表之間關(guān)聯(lián)有臨時(shí)關(guān)系和永久關(guān)系兩種關(guān)聯(lián)n1. 設(shè)置表的臨時(shí)關(guān)系n1 利用數(shù)據(jù)工作期窗口建立表的臨時(shí)關(guān)系3.7.3 數(shù)據(jù)表的關(guān)聯(lián)n2 利用命令建立表之間的臨時(shí)關(guān)系利用命令建立表之間的臨時(shí)關(guān)系n【格式格式】SET RELATION TO 關(guān)鍵字表達(dá)式|數(shù)值表達(dá)式1 IN

37、TO 工作區(qū)別名1|子表別名1 ,關(guān)鍵字表達(dá)式2|數(shù)值表達(dá)式2 INTO 工作區(qū)別名2|表別名2 ADDITIVEn說明: 必須選擇父表所在工作區(qū)為當(dāng)前工作區(qū),然后再使用本命令與非當(dāng)前工作區(qū)中的數(shù)據(jù)表子表建立關(guān)聯(lián)。n 選ADDITIVE項(xiàng)可使父數(shù)據(jù)表與子表建立關(guān)聯(lián)時(shí),原先已存在的關(guān)聯(lián)仍然保存。假如不選用該項(xiàng),那么建立新關(guān)聯(lián)時(shí)將取消原有關(guān)聯(lián)。n 子表必須按關(guān)鍵字表達(dá)式中的關(guān)鍵字段建立索引,子表必須按關(guān)鍵字表達(dá)式中的關(guān)鍵字段建立索引,且被指定為主控索引且被指定為主控索引。假設(shè)選擇數(shù)值表達(dá)式,那么。假設(shè)選擇數(shù)值表達(dá)式,那么兩個(gè)表是按照記錄號(hào)相聯(lián)絡(luò),此時(shí)子表不要求索引。兩個(gè)表是按照記錄號(hào)相聯(lián)絡(luò),此時(shí)子

38、表不要求索引。通常情況下,用兩個(gè)表都具有的一樣字段作為建立通常情況下,用兩個(gè)表都具有的一樣字段作為建立臨時(shí)關(guān)系的關(guān)鍵字表達(dá)式。臨時(shí)關(guān)系的關(guān)鍵字表達(dá)式。n不選任何可選項(xiàng)那么取消已與當(dāng)前表建立的關(guān)聯(lián)。不選任何可選項(xiàng)那么取消已與當(dāng)前表建立的關(guān)聯(lián)。父表可以與多個(gè)子表建立關(guān)聯(lián)。父表可以與多個(gè)子表建立關(guān)聯(lián)。n建立臨時(shí)關(guān)系以后,父表和子表記錄指針的挪動(dòng)建立臨時(shí)關(guān)系以后,父表和子表記錄指針的挪動(dòng)的規(guī)那么是:父表指針每挪動(dòng)到一個(gè)記錄,子表那的規(guī)那么是:父表指針每挪動(dòng)到一個(gè)記錄,子表那么按關(guān)鍵字表達(dá)式的值進(jìn)展索引查找,并將記錄指么按關(guān)鍵字表達(dá)式的值進(jìn)展索引查找,并將記錄指針定位在相應(yīng)記錄上。假設(shè)子表中沒有記錄和父

39、表針定位在相應(yīng)記錄上。假設(shè)子表中沒有記錄和父表的當(dāng)前記錄相關(guān)聯(lián),子表的記錄指針將指向的當(dāng)前記錄相關(guān)聯(lián),子表的記錄指針將指向EOF;假設(shè)子表中有多個(gè)記錄和父表的當(dāng)前記錄相關(guān)聯(lián),假設(shè)子表中有多個(gè)記錄和父表的當(dāng)前記錄相關(guān)聯(lián),那么子表的記錄指針將指向第一個(gè)相匹配的記錄。那么子表的記錄指針將指向第一個(gè)相匹配的記錄。n【例例】某書店有一個(gè)圖書庫存數(shù)據(jù)表某書店有一個(gè)圖書庫存數(shù)據(jù)表Tskc.dbf,存放有該書店所有的圖書信息,存放有該書店所有的圖書信息,另有一個(gè)圖書調(diào)價(jià)數(shù)據(jù)表另有一個(gè)圖書調(diào)價(jià)數(shù)據(jù)表tstj.dbf,其中存,其中存放著圖書調(diào)價(jià)后的新價(jià)格放著圖書調(diào)價(jià)后的新價(jià)格 ,現(xiàn)要求編制程序,現(xiàn)要求編制程序,用

40、用Tstj.dbf中的單價(jià)數(shù)據(jù)更新中的單價(jià)數(shù)據(jù)更新Tskc.dbf中的中的單價(jià)數(shù)據(jù)。假設(shè)單價(jià)數(shù)據(jù)。假設(shè)Tstj.dbf數(shù)據(jù)表中的記錄和數(shù)據(jù)表中的記錄和Tskc.dbf中的記錄是一一對(duì)應(yīng)的,即但凡出中的記錄是一一對(duì)應(yīng)的,即但凡出如今如今Tskc.dbf中圖書都調(diào)價(jià)了,那么可用如中圖書都調(diào)價(jià)了,那么可用如下的程序:下的程序:n SET TALK OFFn SET SAFETY OFFn USE TSKCn SELECT 2n USE TSGXTJ n INDEX ON 圖書編號(hào)圖書編號(hào) TAG TSBHn SET ORDER TO TSGHnSELECT 1n SET RELATION TO 圖書

41、編號(hào)圖書編號(hào) INTO Bn REPLACE ALL 單價(jià)單價(jià) with TSTJ.單價(jià)單價(jià)n CLOSE ALLn SET SAFETY ONn SET TALK ONn RETURNn2設(shè)置表間的永久關(guān)系設(shè)置表間的永久關(guān)系n永久關(guān)系永久關(guān)系是存儲(chǔ)在數(shù)據(jù)庫文件是存儲(chǔ)在數(shù)據(jù)庫文件.DBC中的數(shù)據(jù)表中的數(shù)據(jù)表之間的關(guān)系之間的關(guān)系,它作為數(shù)據(jù)庫的組成部分一直保存。,它作為數(shù)據(jù)庫的組成部分一直保存。它不像臨時(shí)關(guān)系每次翻開數(shù)據(jù)表時(shí)都要重新建立。它不像臨時(shí)關(guān)系每次翻開數(shù)據(jù)表時(shí)都要重新建立。n數(shù)據(jù)庫中的數(shù)據(jù)表建立永久關(guān)系后,借助這種關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)表建立永久關(guān)系后,借助這種關(guān)系不僅僅從當(dāng)前選定的表中訪問

42、數(shù)據(jù),而且還可以訪不僅僅從當(dāng)前選定的表中訪問數(shù)據(jù),而且還可以訪問相關(guān)數(shù)據(jù)表中的數(shù)據(jù)。問相關(guān)數(shù)據(jù)表中的數(shù)據(jù)。n當(dāng)在查詢?cè)O(shè)計(jì)器,視圖設(shè)計(jì)器、表單設(shè)計(jì)器中的數(shù)當(dāng)在查詢?cè)O(shè)計(jì)器,視圖設(shè)計(jì)器、表單設(shè)計(jì)器中的數(shù)據(jù)環(huán)境中使用這些數(shù)據(jù)表時(shí),這些永久關(guān)系將作為據(jù)環(huán)境中使用這些數(shù)據(jù)表時(shí),這些永久關(guān)系將作為這些表之間的默認(rèn)連接關(guān)系自動(dòng)出現(xiàn)。而且以后使這些表之間的默認(rèn)連接關(guān)系自動(dòng)出現(xiàn)。而且以后使用查詢文件,視圖文件及表格文件時(shí),這些永久關(guān)用查詢文件,視圖文件及表格文件時(shí),這些永久關(guān)系也自動(dòng)把相關(guān)數(shù)據(jù)表連接起來。系也自動(dòng)把相關(guān)數(shù)據(jù)表連接起來。n與永久關(guān)系的作用不同,臨時(shí)關(guān)系是控與永久關(guān)系的作用不同,臨時(shí)關(guān)系是控制表之間制

43、表之間記錄指針記錄指針的連動(dòng)關(guān)系的連動(dòng)關(guān)系。永久關(guān)。永久關(guān)系不具有這個(gè)功能,而是使系不具有這個(gè)功能,而是使相關(guān)數(shù)據(jù)建相關(guān)數(shù)據(jù)建立連接立連接關(guān)系關(guān)系。n在永久關(guān)系中還可以建立參照完好性,在永久關(guān)系中還可以建立參照完好性,對(duì)各數(shù)據(jù)表之間進(jìn)展完好性約束。對(duì)各數(shù)據(jù)表之間進(jìn)展完好性約束。n表之間關(guān)系的類型表之間關(guān)系的類型n表與表之間的關(guān)系實(shí)際上就是,表與表之間的關(guān)系實(shí)際上就是,按照某一關(guān)按照某一關(guān)鍵字建立的幾個(gè)數(shù)據(jù)表之間鍵字建立的幾個(gè)數(shù)據(jù)表之間相關(guān)記錄相關(guān)記錄的關(guān)系的關(guān)系。n根據(jù)一個(gè)表中的記錄與另一表中相關(guān)記錄之根據(jù)一個(gè)表中的記錄與另一表中相關(guān)記錄之間的對(duì)應(yīng)數(shù)量關(guān)系,關(guān)系的類型可分為:間的對(duì)應(yīng)數(shù)量關(guān)系,

44、關(guān)系的類型可分為:n一對(duì)一關(guān)系一對(duì)一關(guān)系:是指一個(gè)表中的一個(gè)記:是指一個(gè)表中的一個(gè)記錄與另一表中的唯一記錄相關(guān)聯(lián)。錄與另一表中的唯一記錄相關(guān)聯(lián)。n一對(duì)多關(guān)系一對(duì)多關(guān)系:是指一個(gè)表中的一個(gè)記:是指一個(gè)表中的一個(gè)記錄與另一表中的多個(gè)記錄相關(guān)聯(lián),但錄與另一表中的多個(gè)記錄相關(guān)聯(lián),但另一表中的一個(gè)記錄那么只能與這個(gè)另一表中的一個(gè)記錄那么只能與這個(gè)表中的唯一記錄相對(duì)應(yīng)。表中的唯一記錄相對(duì)應(yīng)。n在關(guān)系數(shù)據(jù)庫設(shè)計(jì)時(shí),應(yīng)防止將表在關(guān)系數(shù)據(jù)庫設(shè)計(jì)時(shí),應(yīng)防止將表設(shè)計(jì)成設(shè)計(jì)成“多對(duì)多關(guān)系,通過數(shù)據(jù)多對(duì)多關(guān)系,通過數(shù)據(jù)標(biāo)準(zhǔn)化設(shè)計(jì)將標(biāo)準(zhǔn)化設(shè)計(jì)將“多對(duì)多關(guān)系轉(zhuǎn)換多對(duì)多關(guān)系轉(zhuǎn)換成成“一對(duì)多關(guān)系來建立數(shù)據(jù)庫。一對(duì)多關(guān)系來建立數(shù)

45、據(jù)庫。也可以在兩個(gè)表間建立一個(gè)連接表,也可以在兩個(gè)表間建立一個(gè)連接表,兩個(gè)表分別和連接表建立一對(duì)多關(guān)兩個(gè)表分別和連接表建立一對(duì)多關(guān)系,間接實(shí)現(xiàn)多對(duì)多關(guān)系系,間接實(shí)現(xiàn)多對(duì)多關(guān)系n1建立表間的永久連接建立表間的永久連接n建立建立Rsbm與與Rsgl的關(guān)聯(lián)、的關(guān)聯(lián)、Rsgl與與Rsda的關(guān)聯(lián)。的關(guān)聯(lián)。Rsgl與與Rsda根據(jù)編號(hào)建立一對(duì)根據(jù)編號(hào)建立一對(duì)一的關(guān)聯(lián)一的關(guān)聯(lián);由于在;由于在Rsbm中一個(gè)部門可以中一個(gè)部門可以在在Rsgl中找到多條記錄,所以兩個(gè)數(shù)據(jù)中找到多條記錄,所以兩個(gè)數(shù)據(jù)表之間的關(guān)系為表之間的關(guān)系為一對(duì)多一對(duì)多的關(guān)系。兩個(gè)表已的關(guān)系。兩個(gè)表已根據(jù)共同字段根據(jù)共同字段“部門名建立了索引,

46、部門名建立了索引,“一方一方Rsbm建立了以建立了以“部門名部門名為索引標(biāo)識(shí)的主索引,為索引標(biāo)識(shí)的主索引,“多方建立了以多方建立了以“部門名為索引標(biāo)識(shí)的普通索引。部門名為索引標(biāo)識(shí)的普通索引。 在數(shù)據(jù)庫設(shè)計(jì)器中建立永久關(guān)系在數(shù)據(jù)庫設(shè)計(jì)器中建立永久關(guān)系 2 編輯數(shù)據(jù)表之間的關(guān)聯(lián)3.8 管理數(shù)據(jù)庫管理數(shù)據(jù)庫n3.8.1 使用多個(gè)數(shù)據(jù)庫n1在工程中新建或添加數(shù)據(jù)庫在工程中新建或添加數(shù)據(jù)庫n2從工程中移去數(shù)據(jù)庫從工程中移去數(shù)據(jù)庫n3翻開多個(gè)數(shù)據(jù)庫翻開多個(gè)數(shù)據(jù)庫n4設(shè)置當(dāng)前數(shù)據(jù)庫設(shè)置當(dāng)前數(shù)據(jù)庫n5訪問其它數(shù)據(jù)庫中的表訪問其它數(shù)據(jù)庫中的表n OPEN DATABASE Rsgl.dbc &翻開數(shù)據(jù)庫

47、翻開數(shù)據(jù)庫Rsgln OPEN DATABASE Example.dbc n &翻開翻開Example并自動(dòng)將其設(shè)為當(dāng)前數(shù)據(jù)庫并自動(dòng)將其設(shè)為當(dāng)前數(shù)據(jù)庫n ?DBC &顯示當(dāng)前數(shù)據(jù)庫名顯示當(dāng)前數(shù)據(jù)庫名n SELECT 4 &選擇第選擇第4工作區(qū)為當(dāng)前工作區(qū)工作區(qū)為當(dāng)前工作區(qū)n USE Rsgl!Rsda.dbf &在第在第4工作區(qū)上翻開數(shù)據(jù)表工作區(qū)上翻開數(shù)據(jù)表 BROWSE &閱讀當(dāng)前工作區(qū)第閱讀當(dāng)前工作區(qū)第4工作區(qū)上的數(shù)據(jù)工作區(qū)上的數(shù)據(jù)n SELE 2 &選擇第選擇第2工作區(qū)為當(dāng)前工作區(qū)工作區(qū)為當(dāng)前工作區(qū)n ?Rsda.姓名姓名 &顯示顯示Rsda數(shù)據(jù)表的當(dāng)前記錄的姓名字段數(shù)據(jù)表的當(dāng)前記錄的姓名字段n6關(guān)閉數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫nSET DATABASE TO Rsgln CLOSE DATABASEn另外,用另外,用CLOSE ALL命令可以關(guān)閉所命令可以關(guān)閉所有翻開著的數(shù)據(jù)庫及其他文件。有翻開著的數(shù)據(jù)庫及其他文件。 3.8.2 向數(shù)據(jù)庫中添加和刪除表n1向數(shù)據(jù)庫中添

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論