數(shù)據(jù)庫的創(chuàng)建和使用_第1頁
數(shù)據(jù)庫的創(chuàng)建和使用_第2頁
數(shù)據(jù)庫的創(chuàng)建和使用_第3頁
數(shù)據(jù)庫的創(chuàng)建和使用_第4頁
數(shù)據(jù)庫的創(chuàng)建和使用_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關(guān)于數(shù)據(jù)庫的創(chuàng)建和使用第1頁,共70頁,2022年,5月20日,23點28分,星期四

數(shù)據(jù)庫是一個包容器,是許多相關(guān)的數(shù)據(jù)庫表的集合,是數(shù)據(jù)組織層次中目前已達到的最高級別。它包括數(shù)據(jù)表以及表之間的關(guān)系等。

3.1VisualFoxPro數(shù)據(jù)庫

第2頁,共70頁,2022年,5月20日,23點28分,星期四1.分析數(shù)據(jù)需求2.確定需要的表3.確定表的字段4.確定表之間的關(guān)系5.設(shè)計的優(yōu)化數(shù)據(jù)庫設(shè)計過程第3頁,共70頁,2022年,5月20日,23點28分,星期四VFP數(shù)據(jù)庫的組成

1.數(shù)據(jù)庫表

2.本地視圖及遠程視圖

3.連接

4.存儲過程VFP

的數(shù)據(jù)字典第4頁,共70頁,2022年,5月20日,23點28分,星期四3.2數(shù)據(jù)庫的創(chuàng)建、打開和使用VFP

數(shù)據(jù)庫的創(chuàng)建方法界面操作方式創(chuàng)建數(shù)據(jù)庫命令方式創(chuàng)建數(shù)據(jù)庫

創(chuàng)建一個新的數(shù)據(jù)庫將生成三個文件:數(shù)據(jù)庫文件(dbc)、關(guān)聯(lián)的數(shù)據(jù)庫備注文件(dct)和關(guān)聯(lián)的數(shù)據(jù)庫索引文件(dcx)。第5頁,共70頁,2022年,5月20日,23點28分,星期四打開數(shù)據(jù)庫設(shè)置當前數(shù)據(jù)庫數(shù)據(jù)庫的有效性使用數(shù)據(jù)庫中的表關(guān)閉數(shù)據(jù)庫刪除數(shù)據(jù)庫3.2數(shù)據(jù)庫的創(chuàng)建、打開和使用第6頁,共70頁,2022年,5月20日,23點28分,星期四如果移動了數(shù)據(jù)文件(.DBC、.DCT和.DCX)或與數(shù)據(jù)庫關(guān)聯(lián)的表文件,則這些文件的相對路徑會改變,可能會破壞已有的前鏈或后鏈。如將庫表XS由C盤移至A盤,由于表文件的移動引起庫文件中的前鏈被破壞,可使用命令VALIDATEDATABASERECOVER,更新相對路徑信息以重建前鏈。也可用USE命令打開表,系統(tǒng)會顯示“打開”對話框,允許重新定位該表所屬的數(shù)據(jù)庫或刪除鏈接。數(shù)據(jù)庫的有效性第7頁,共70頁,2022年,5月20日,23點28分,星期四

數(shù)據(jù)字典是指存儲在數(shù)據(jù)庫中用于描述所管理的表和對象的數(shù)據(jù),即關(guān)于數(shù)據(jù)的數(shù)據(jù),這些數(shù)據(jù)稱為元數(shù)據(jù)。包括長表名、長字段名、有效性規(guī)則和觸發(fā)器,以及有關(guān)數(shù)據(jù)庫對象的定義如視圖和命名連接等。

VFP數(shù)據(jù)字典可以創(chuàng)建和指定以下內(nèi)容:?主關(guān)鍵字和候選索引關(guān)鍵字?字段級和記錄級有效性規(guī)則?表單中使用的默認控件類?表中字段的標題和注釋?數(shù)據(jù)庫表之間的永久性關(guān)系

?存儲過程?字段的輸入掩碼和顯示格式

?表中字段的默認值?長表名和表中的長字段名?插入、更新和刪除事件的觸發(fā)器除了以上這些表的功能擴展,使用數(shù)據(jù)庫還能訪問與遠程數(shù)據(jù)源的連接,并可創(chuàng)建本地表和遠程表的視圖。VFP

的數(shù)據(jù)字典第8頁,共70頁,2022年,5月20日,23點28分,星期四4.5數(shù)據(jù)庫表數(shù)據(jù)庫表的字段擴展屬性數(shù)據(jù)庫表的表屬性數(shù)據(jù)庫表的約束機制及其激活時機綜述數(shù)據(jù)庫表的索引第9頁,共70頁,2022年,5月20日,23點28分,星期四數(shù)據(jù)庫表字段的擴展屬性

引言字段的顯示屬性字段的格式(Format)

字段的輸入掩碼(InputMask)

字段的標題(Caption)與注釋(Comment)字段有效性字段驗證規(guī)則(ruleexpression)

字段驗證信息(ruleexpressiontext)

字段默認值(defaultvalue)命令方法實現(xiàn)字段驗證規(guī)則在數(shù)據(jù)庫中查看字段的擴展屬性第10頁,共70頁,2022年,5月20日,23點28分,星期四

在使用命令createtable-sql創(chuàng)建表文件時,可以利用check子句、error子句和default子句設(shè)置字段的有效性規(guī)則、有效性信息和默認值;在使用altertable-sql命令修改表的結(jié)構(gòu)時,可以通過setcheck子句、setdefault子句設(shè)置字段的有效性規(guī)則和默認值。刪除字段的有效性規(guī)則時,可以利用帶dropcheck子句的altertable-sql命令;刪除字段的默認值時,可以利用帶dropdefault子句的altertable-sql命令。第11頁,共70頁,2022年,5月20日,23點28分,星期四數(shù)據(jù)庫表的表屬性長表名與表注釋表記錄的驗證規(guī)則表記錄的驗證信息表的觸發(fā)器(Trigger)

觸發(fā)器的基本概念創(chuàng)建表的觸發(fā)器移去或刪除觸發(fā)器第12頁,共70頁,2022年,5月20日,23點28分,星期四相關(guān)表之間的參照完整性“參照完整性”(RI)概念設(shè)置參照完整性

參照完整性設(shè)置方法

參照完整性規(guī)則VFP

數(shù)據(jù)完整性綜述

實體完整性參照完整性用戶自定義完整性第13頁,共70頁,2022年,5月20日,23點28分,星期四4.7操作數(shù)據(jù)庫及其對象的幾個常用函數(shù)DBC()函數(shù)與DBUSED()函數(shù)DBGETPROP()函數(shù)DBSETPROP()函數(shù)第14頁,共70頁,2022年,5月20日,23點28分,星期四

1.一對多關(guān)系

設(shè)有甲乙兩個表,如果甲表中的任意一個記錄在乙表中都有幾個記錄與之對應,而乙表中的每個記錄在甲表中僅有一個記錄與之對應,則稱甲乙兩個表之間存在一對多關(guān)系,并稱甲表為“一”表(或“主表”),乙表為“多”表(或“子表”)。外部關(guān)鍵字首先必須是“一”表中存在的字段,外部關(guān)鍵字的值輸入到“多”表中的條件也必須是在“一”表中早已存在的。一般,將在“多”表中存在但在“一”表中不存在的記錄稱為“孤立記錄”。表之間的關(guān)系(1)

第15頁,共70頁,2022年,5月20日,23點28分,星期四

2.多對多關(guān)系

遇到“多對多”的情況時,必須建立第三個表,把多對多的關(guān)系分解成兩個一對多關(guān)系。這第三個表就稱作“紐帶表”(JunctionTable)。因為它在兩表之間起著紐帶的作用??梢园褍蓚€表的主關(guān)鍵字都放在這個紐帶表中。對于紐帶表,除了包含兩個外部關(guān)鍵字:即來自于學生表的主關(guān)鍵字Xh(學號)和課程表的主關(guān)鍵字Kcdh(課程代號)外,還可以有其他字段,如Cj(成績)字段。但允許沒有單個字段的主關(guān)鍵字,主關(guān)鍵字可以由兩個外部關(guān)鍵字組成。表之間的關(guān)系(2)

第16頁,共70頁,2022年,5月20日,23點28分,星期四

3.一對一關(guān)系一對一關(guān)系是這樣一種關(guān)系:甲表的一個記錄在乙表中只能對應一個記錄,而乙表中的一個記錄在甲表中也只能有一個記錄與之對應。這種關(guān)系不經(jīng)常使用。因為在許多情況下,兩個表的信息可以簡單地合并成一個表。出于一些原因(如字段項太多),不能合并的,可以建立一對一關(guān)系,只要把一個主關(guān)鍵字同時放到兩個表中,并以此建立一對一關(guān)系。表之間的關(guān)系(3)

第17頁,共70頁,2022年,5月20日,23點28分,星期四4.分析并確定表之間關(guān)系

表之間的關(guān)系(4)

第18頁,共70頁,2022年,5月20日,23點28分,星期四圖4-3表之間的關(guān)系第19頁,共70頁,2022年,5月20日,23點28分,星期四4-4多對多關(guān)系與紐帶表第20頁,共70頁,2022年,5月20日,23點28分,星期四界面操作方式創(chuàng)建數(shù)據(jù)庫

在“項目管理器”中新建數(shù)據(jù)庫

通過“新建”對話框新建數(shù)據(jù)庫第21頁,共70頁,2022年,5月20日,23點28分,星期四

創(chuàng)建數(shù)據(jù)庫的命令:

語法:CREATEDATABASE[<數(shù)據(jù)庫名>|?]

說明:

(1)如果在命令中沒有給出數(shù)據(jù)庫名或給出了“?”,則命令自動打開“新建”對話框;如:CREATEDATABASECREATEDATABASE?

(2)如果給出數(shù)據(jù)庫名,則創(chuàng)建數(shù)據(jù)庫,并使該數(shù)據(jù)庫處于打開狀態(tài),但不出現(xiàn)數(shù)據(jù)庫設(shè)計器。如: CREATEDATABASEJXSJ1(3)用命令方式創(chuàng)建的數(shù)據(jù)庫不會自動添加到項目管理器中。命令方式創(chuàng)建數(shù)據(jù)庫第22頁,共70頁,2022年,5月20日,23點28分,星期四

從屬于某一個數(shù)據(jù)庫的表,稱為“數(shù)據(jù)庫表”(也叫“相關(guān)表”)。

前鏈和后鏈庫表與數(shù)據(jù)庫之間的相關(guān)性是通過表文件(.DBF)與庫文件(.DBC)之間的雙向鏈接實現(xiàn)的。雙向鏈接包括前鏈和后鏈。

數(shù)據(jù)庫表第23頁,共70頁,2022年,5月20日,23點28分,星期四

前鏈是保存在數(shù)據(jù)庫容器(.DBC)中的有關(guān)表文件的路徑和文件名信息,它將數(shù)據(jù)庫與庫表文件相鏈接。前鏈指向數(shù)據(jù)庫中包含的表,它由各個表文件的相對路徑和文件名稱構(gòu)成。后鏈是存放在一個表的表頭中的數(shù)據(jù)庫的路徑和文件名,用以將自身與包含自身的數(shù)據(jù)庫容器相鏈接。后鏈指向擁有該表的數(shù)據(jù)庫,它由數(shù)據(jù)庫的相對路徑和數(shù)據(jù)庫名稱構(gòu)成。前

鏈第24頁,共70頁,2022年,5月20日,23點28分,星期四1.利用“項目管理器”在數(shù)據(jù)庫中添加、新建和移去表

2.利用“數(shù)據(jù)庫設(shè)計器”在數(shù)據(jù)庫中添加、新建和移去表

3.使用命令在數(shù)據(jù)庫中添加、移去表語法:ADDTABLE自由表表文件名;

[NAME長表名]功能:向數(shù)據(jù)庫中添加自由表。語法:REMOVETABLE表名

[DELETE]功能:從數(shù)據(jù)庫中移去表。添加、新建和移去數(shù)據(jù)庫表的方法第25頁,共70頁,2022年,5月20日,23點28分,星期四例: OPENDATABASEjxsjEXCLUSIVE ADDTABLExs

▲使用ADDTABLE命令往數(shù)據(jù)庫中添加表時,必須保證數(shù)據(jù)庫處于打開狀態(tài)。

REMOVETABLEXS

▲將XS表從數(shù)據(jù)庫中移出,若加上DELETE可選項,則不僅將XS從數(shù)據(jù)庫中移出,而且還把表文件從磁盤上刪除。

▲一個表在同一時間內(nèi)只能屬于一個數(shù)據(jù)庫,如果所需要的數(shù)據(jù)表已隸屬于其他數(shù)據(jù)庫,則必須先從其他數(shù)據(jù)庫移去此表,使其成為自由表,然后才能將其添加到當前數(shù)據(jù)庫中來。 使用命令在數(shù)據(jù)庫中添加、移去表第26頁,共70頁,2022年,5月20日,23點28分,星期四

一、表之間的關(guān)系二、表之間的永久關(guān)系

1.永久關(guān)系(persistentrelationship)的概念

2.永久關(guān)系的作用

3.永久關(guān)系的建立

4.刪除、編輯修改永久性關(guān)系庫

關(guān)

系第27頁,共70頁,2022年,5月20日,23點28分,星期四

永久關(guān)系是庫表之間的一種關(guān)系,不僅在運行時存在,而且一直保留,擁有永久關(guān)系的表必須在數(shù)據(jù)庫中。數(shù)據(jù)庫表間的永久關(guān)系是根據(jù)表的索引建立的。索引的類型決定了要創(chuàng)建的永久關(guān)系類型,在一對多關(guān)系中,“一方”必須用主索引關(guān)鍵字(或標識),或者用候選索引關(guān)鍵字(或標識);在“多方”則使用普通索引關(guān)鍵字(或普通索引標識)。在一對一關(guān)系中,兩個表必須都用主索引關(guān)鍵字(或標識)或候選索引關(guān)鍵字(或標識)。永久關(guān)系(persistentrelationship)的概念第28頁,共70頁,2022年,5月20日,23點28分,星期四

▲在“查詢設(shè)計器”和“視圖設(shè)計器”中,自動作為默認聯(lián)接條件。

▲作為表單和報表的默認的關(guān)系,在“數(shù)據(jù)環(huán)境設(shè)計器”中顯示。

▲用來存儲參照完整性信息。這是永久關(guān)系的主要作用。永久關(guān)系的作用第29頁,共70頁,2022年,5月20日,23點28分,星期四

建立永久關(guān)系的一般步驟是:①確定兩個存在一對多或一對一關(guān)系的表②建立主表的主索引或候選索引;③如果是一對多關(guān)系,則在子表中按外部關(guān)鍵字建立普通索引;如果是一對一關(guān)系,則在子表中以與主表相同的關(guān)鍵字建立主索引或候選索引;④從主表的主索引或候選索引到子表相關(guān)的索引建立永久關(guān)系。

方法一:在數(shù)據(jù)庫設(shè)計器中建立永久關(guān)系,將主表的主關(guān)鍵索引(XSXH)拖放到子表中的外部關(guān)鍵索引(CJXH)上。

方法二:用命令方式建永久關(guān)系

CREATETABLEcj(xhC(6),kcdhC(6),cjN(3,0),;

FOREIGNKEY

xhTAGcjxhREFERENCExs)ALTERTABLEcjADDFOREIGNKEY

xh

TAGcjxhREFERENCExs永

關(guān)

立第30頁,共70頁,2022年,5月20日,23點28分,星期四刪除永久性關(guān)系在“數(shù)據(jù)庫設(shè)計器”中,單擊關(guān)聯(lián)連線后,該線變粗,此時,按【Del】鍵即可刪除關(guān)系;或用鼠標右鍵單擊關(guān)系連線,在快捷菜單中單擊“刪除關(guān)系”后,關(guān)聯(lián)的線被擦除。編輯修改永久性關(guān)系用鼠標右鍵單擊關(guān)系連線,在快捷菜單中單擊“編輯關(guān)系”后出現(xiàn)“編輯關(guān)系”對話框。刪除、編輯修改永久性關(guān)系

第31頁,共70頁,2022年,5月20日,23點28分,星期四永久關(guān)系連線拖放第32頁,共70頁,2022年,5月20日,23點28分,星期四永久關(guān)系連線快捷菜單第33頁,共70頁,2022年,5月20日,23點28分,星期四“編輯關(guān)系”對話框第34頁,共70頁,2022年,5月20日,23點28分,星期四引言

數(shù)據(jù)庫表的字段除了具有字段的基本屬性外,還含有自由表所沒有的擴展屬性:包括字段的顯示格式、輸入掩碼、默認值、標題、注釋以及字段的驗證規(guī)則和驗證信息等。這些高級屬性都保存在庫表所在的數(shù)據(jù)庫文件中。

字段的高級屬性都可以在數(shù)據(jù)庫表的“表設(shè)計器”中進行設(shè)置,還可以用函數(shù)SETDBPROP()設(shè)置。

打開數(shù)據(jù)庫表設(shè)計器和自由表設(shè)計器進行比較,可看到二者之間的差別。第35頁,共70頁,2022年,5月20日,23點28分,星期四字

字段的格式用于指定字段顯示時的格式。設(shè)置字段的顯示格式的方法與步驟(以JS表為例)如下:(1)打開JS表設(shè)計器(2)選擇要加格式的字段(3)在格式框中鍵入格式內(nèi)容。如:設(shè)置JS表的JBGZ字段格式為“^”;

設(shè)置JS表的JBGZ字段格式為“L$”;

設(shè)置JS表的CSRQ字段格式為“E”以上字段格式符號的意義見“字段格式表”。第36頁,共70頁,2022年,5月20日,23點28分,星期四第37頁,共70頁,2022年,5月20日,23點28分,星期四

字段的輸入掩碼用于指定字段中輸入數(shù)據(jù)的格式。設(shè)置字段輸入掩碼的方法與步驟如下:(1)在表設(shè)計器中打開表;(2)選擇要加輸入掩碼的字段;(3)在“輸入掩碼”框中鍵入掩碼。如:為JS表的JBGZ字段設(shè)置掩碼為“$$9,999.99”JBGZ字段類型為N型,寬度為9,小數(shù)位為2。輸入掩碼的具體含義見“輸入掩碼表”。字

碼第38頁,共70頁,2022年,5月20日,23點28分,星期四輸入掩碼表第39頁,共70頁,2022年,5月20日,23點28分,星期四

字段標題的作用是為了使表具有更好的可讀性。在取字段名時,為了在命令方式下更方便地使用字段,字段名常常采用簡練的形式,常用拼音字母代替漢字,如“出生日期”的字段名取為“CSRQ”,在瀏覽時也以字段名作為列的標題,不直觀,可讀形不好。利用數(shù)據(jù)庫表字段的標題屬性,可以為字段設(shè)置一個含義明確的標題,但標題只是在瀏覽、顯示時起作用,并不能作為字段名用于表達式及命令中。

字段注釋也是為了使表具有更好的可讀性,所以在注釋框中可以填入對字段的文字說明。字段的標題與注釋第40頁,共70頁,2022年,5月20日,23點28分,星期四

字段驗證用來限定字段的取值及取值范圍。 在所選字段的字段驗證規(guī)則框內(nèi)鍵入一邏輯表達式,當往字段中輸入數(shù)據(jù)并當焦點離開該字段時,將數(shù)據(jù)代入邏輯表達式,若表達式的值為真則接受該數(shù)據(jù)作為該字段的值,否則拒絕將該數(shù)據(jù)作為該字段的值。如將JS表的JBGZ字段驗證規(guī)則設(shè)為:

JBGZ>=500ANDJBGZ<=2000

當關(guān)閉表設(shè)計器并保存對結(jié)構(gòu)的修改時,可以選擇用此規(guī)則對照現(xiàn)有的數(shù)據(jù)或不對照現(xiàn)有的數(shù)據(jù)。字段驗證規(guī)則第41頁,共70頁,2022年,5月20日,23點28分,星期四

在字段驗證信息框中鍵入對驗證規(guī)則的說明文本,當字段值不滿足字段驗證規(guī)則時將顯示該說明。如在上述JS表的JBGZ字段驗證信息框中輸入文本“基本工資必須在500-2000之間”(作為字符串常量必須加引號),當在JBGZ字段中輸入2100時就會顯示信息:“基本工資必須在500-2000之間”,并拒絕接受2100作為JBGZ字段的值。該屬性為可選項,既字段可以有字段驗證規(guī)則而沒有字段驗證信息,當出現(xiàn)違背字段驗證規(guī)則的數(shù)據(jù)時,系統(tǒng)顯示默認的信息,如“違反了字段JBGZ的驗證規(guī)則”。字段驗證信息第42頁,共70頁,2022年,5月20日,23點28分,星期四

當向一個數(shù)據(jù)庫表中添加記錄時,為字段所指定的最初的值,稱為該字段的默認值。如為JS表的JBGZ字段設(shè)置默認值為800,則每次向JS表中追加新記錄時,JBGZ字段都已有數(shù)據(jù)800。如果沒有設(shè)置默認值。則在追加新記錄時,各字段也有系統(tǒng)自動設(shè)置的默認值,如下表所示。

值第43頁,共70頁,2022年,5月20日,23點28分,星期四

上述7個屬性均為數(shù)據(jù)庫表字段的擴展屬性,這些屬性存儲為數(shù)據(jù)庫的一部分,而且只要表屬于該數(shù)據(jù)庫,它們就一定存在,而在VFP中數(shù)據(jù)庫實質(zhì)是一個表文件,可用USE命令打開查看,也可用DISPLAYDATABASE命令查看。例如:

USEJXSJ.DBC BROWSE

OPENDATABASEJXSJDISPLAYDATABASE在數(shù)據(jù)庫中查看字段的擴展屬性第44頁,共70頁,2022年,5月20日,23點28分,星期四

如果為數(shù)據(jù)庫表設(shè)置了長表名屬性,則該數(shù)據(jù)庫表在各種選項卡、窗口中均以長表名代替表名。在打開數(shù)據(jù)庫表時,長表名與文件名可以同樣使用。例如,用表設(shè)計器為JS表設(shè)置長表名“TEACHER”,以后打開該表可以有兩種方法:

USEJS &&此時表的別名為“JS”USETEACHER&&此時表的別名為“TEACHER”也可以在使用CREATETABLE命令創(chuàng)建表時:

CREATETABLEB01NAMETAB01(F01C(3))長

名(NAME)第45頁,共70頁,2022年,5月20日,23點28分,星期四

在向表中輸入記錄時,當兩個字段之間存在一定的關(guān)系,如出生日期總是比工作日期小,這是可以通過設(shè)置數(shù)據(jù)庫表的記錄驗證規(guī)則來實現(xiàn)。例如,在教師表JS中可以設(shè)置如下記錄級規(guī)則:“工齡<年齡-15”。則應在“規(guī)則”框中輸入如下規(guī)則的表達式:

js.gl<year(date())-year(js.csrq)-15

或者使用CREATETABLE或ALTERTABLE命令的CHECK子句。

ALTERTABLEJSSET

CHECK;

js.gl<year(date())-year(js.csrq)-15表

規(guī)

則(1)第46頁,共70頁,2022年,5月20日,23點28分,星期四

和字段級規(guī)則一樣,記錄級規(guī)則在記錄值改變時被激活。如果該記錄中的值沒有變化,則在移走記錄指針時,不檢查記錄級規(guī)則。因此可以自由地在記錄間移動指針,而系統(tǒng)卻不會檢查任何數(shù)據(jù)。如果修改了記錄,若沒有移動記錄指針,則在關(guān)閉“瀏覽”窗口時檢查記錄級規(guī)則,并對所發(fā)生的任何錯誤提出警告,然后才關(guān)閉“瀏覽”窗口;若記錄指針移離記錄時,立即檢查記錄級規(guī)則,并對所發(fā)生的任何錯誤提出警告。和字段級驗證規(guī)則一樣,在設(shè)置結(jié)束時可以選擇是否用此規(guī)則對照現(xiàn)有的記錄。表

規(guī)

則(2)第47頁,共70頁,2022年,5月20日,23點28分,星期四

在記錄驗證信息框中鍵入對驗證規(guī)則的說明文本,當記錄不滿足驗證規(guī)則時將顯示該說明。如在上述JS表的記錄驗證信息框中輸入文本“參加工作年齡必須大于15歲”(作為字符串常量必須加引號),當JS表中某記錄的CSRQ和GL字段不滿足這一條件時,就會顯示信息:“參加工作年齡必須大于15歲”,并拒絕接受該記錄。該屬性為可選項,即可以有記錄驗證規(guī)則而沒有記錄驗證信息,當出現(xiàn)違背記錄驗證規(guī)則的記錄時,系統(tǒng)顯示默認的信息,如“違反了記錄驗證規(guī)則”。表記錄的驗證信息第48頁,共70頁,2022年,5月20日,23點28分,星期四“表的觸發(fā)器”是綁定在表上的表達式,當表中任何記錄被指定的操作命令(插入、更新或刪除)修改時,在進行其他所有檢查之后(例如有效性規(guī)則,主關(guān)鍵字的實施,以及null值的實施)被激活。 表的觸發(fā)器是表在插入、更新或刪除記錄時進行的檢驗規(guī)則??煞譃椴迦胗|發(fā)器、更新觸發(fā)器和刪除觸發(fā)器。觸發(fā)器的基本概念第49頁,共70頁,2022年,5月20日,23點28分,星期四

可使用“表設(shè)計器”或CREATETRIGGER命令來創(chuàng)建觸發(fā)器。

插入觸發(fā)器:向表中插入或追加記錄時觸發(fā)該規(guī)則;更新觸發(fā)器:在表中修改記錄時觸發(fā)該規(guī)則;刪除觸發(fā)器:在表中刪除記錄時觸發(fā)該規(guī)則。上述觸發(fā)器的默認設(shè)置是.T.。創(chuàng)建觸發(fā)器的一個方法是,在表設(shè)計器中為觸發(fā)器設(shè)置一個邏輯表達式,其返回值是“真”(.T.)或“假”(.F.)。如將JS表的刪除觸發(fā)器設(shè)置為GL>40,則JS表中只有GL大于40年的記錄才可以做邏輯刪除。另一個方法是用CREATETRIGGER命令:

CREATETRIGGERON<表名>FOR;

INSERT|UPDATE|DELETEAS<邏輯表達式>例:CREATETRIGGERONJSFORDELETEASJS.GL>40創(chuàng)

的觸發(fā)器第50頁,共70頁,2022年,5月20日,23點28分,星期四

在“表設(shè)計器”的“表”選項卡的“觸發(fā)器”區(qū)中,從“插入觸發(fā)器”、“更新觸發(fā)器”或“刪除觸發(fā)器”框里選定觸發(fā)器表達式,并刪除它。使用DELETETRIGGER命令。格式如下:

DELETETRIGGERON<表名>FORDELETE|INSERT|UPDATE

如果從數(shù)據(jù)庫中移去或刪除表,則所有屬于該表的觸發(fā)器都從數(shù)據(jù)庫中刪除。但是,由被移去或刪除的觸發(fā)器引用的存儲過程沒有刪除。移去或刪除觸發(fā)器第51頁,共70頁,2022年,5月20日,23點28分,星期四

數(shù)據(jù)庫表的字段級和記錄級規(guī)則以及表的觸發(fā)器,為數(shù)據(jù)的輸入和修改實施了約束。庫表的約束機制及其激活時機第52頁,共70頁,2022年,5月20日,23點28分,星期四第53頁,共70頁,2022年,5月20日,23點28分,星期四第54頁,共70頁,2022年,5月20日,23點28分,星期四

“參照完整性”(ReferentialIntegrity—RI)是用來控制數(shù)據(jù)的完整性,尤其是控制數(shù)據(jù)庫中相關(guān)表之間的主關(guān)鍵字和外部關(guān)鍵字之間數(shù)據(jù)一致性的規(guī)則。數(shù)據(jù)一致性要求相關(guān)表之間滿足如下規(guī)則:(1)子表中的每一個記錄在對應的主表中必須有一個父記錄,否則子表中的記錄是“孤立記錄”。(2)在子表中插入記錄時,其外部關(guān)鍵字必須是父表主關(guān)鍵字值中的一個。(3)在父表中刪除記錄時,與該記錄相關(guān)的子表中的記錄必須全部刪除。參照完整性的概念第55頁,共70頁,2022年,5月20日,23點28分,星期四

設(shè)置參照完整性是利用數(shù)據(jù)庫表之間的永久關(guān)系,控制記錄如何在相關(guān)表中被插入、更新或刪除。參照完整性規(guī)則被設(shè)置在主表或子表的觸發(fā)器中,規(guī)則的代碼被保存在數(shù)據(jù)庫的存儲過程中。設(shè)置過程如下:在“數(shù)據(jù)庫設(shè)計器”中,用鼠標右擊永久性關(guān)系聯(lián)線,出現(xiàn)快捷菜單,單擊其中的“編輯參照完整性”項(或者單擊“數(shù)據(jù)庫”菜單中的“編輯參照完整性”),出現(xiàn)“參照完整性”生成器。

VFP中的參照完整性規(guī)則包括更新規(guī)則、刪除規(guī)則和插入規(guī)則三種。參

設(shè)

置第56頁,共70頁,2022年,5月20日,23點28分,星期四參

性規(guī)則表第57頁,共70頁,2022年,5月20日,23點28分,星期四VFP引進了關(guān)系數(shù)據(jù)庫的三類完整性:實體完整性、參照完整性和用戶自定義完整性。前兩類是數(shù)據(jù)庫本身自我約束的完整性規(guī)則,由系統(tǒng)自動支持。實體完整性包括兩級:字段和記錄的數(shù)據(jù)完整性。字段的數(shù)據(jù)完整性通過設(shè)置字段的有效性規(guī)則實現(xiàn)。記錄的數(shù)據(jù)完整性通過設(shè)置記錄的有效性規(guī)則實現(xiàn)。參照完整性是指相關(guān)表之間的數(shù)據(jù)一致性。通過字段級、記錄級和表間三級完整性約束,有效地實現(xiàn)了數(shù)據(jù)的完整性和一致性。從而方便和簡化了用戶的數(shù)據(jù)維護。數(shù)

據(jù)

第58頁,共70頁,2022年,5月20日,23點28分,星期四第59頁,共70頁,2022年,5月20日,23點28分,星期四打開一個數(shù)據(jù)庫1)界面方式2)命令方式OPENDATABASE[Database];[EXCLUSIVE][SHARED][NOUPDATE][VALIDATE]2.打開多個數(shù)據(jù)庫

正如表可以打開多個一樣,數(shù)據(jù)庫也可以打開多個,但不必在多個工作區(qū)打開。 打開數(shù)據(jù)庫第60頁,共70頁,2022年,5月20日,23點28分,星期四

打開多個數(shù)據(jù)庫的方法很簡單,只要多次使用打開一個數(shù)據(jù)庫的命令。例如,要同時打開三個數(shù)據(jù)庫DB1、DB2、DB3的命令是:

OPENDATABASEDB1 OPENDATABASEDB2 OPENDATABASEDB3第61頁,共70頁,2022年,5月20日,23點28分,星期四

所有打開的數(shù)據(jù)庫中,只有一個是當前數(shù)據(jù)庫。在打開數(shù)據(jù)庫時,最后一個打開的數(shù)據(jù)庫為當前數(shù)據(jù)庫。也可把其他打開的數(shù)據(jù)庫設(shè)置為當前數(shù)據(jù)庫。(1)在“常用”工具條的“數(shù)據(jù)庫”下拉列表中,顯示了所有已打開的數(shù)據(jù)庫??梢栽诹斜碇羞x擇一個作為當前數(shù)據(jù)庫。(2)用SETDATABASETO命令將某一已打開的數(shù)據(jù)庫設(shè)置為當前數(shù)據(jù)庫。如:SETDATABASETODB2

(3)與數(shù)據(jù)庫相關(guān)的兩個函數(shù)

▲函數(shù)DBC()返回當前打開的數(shù)據(jù)庫的完整文件名。?DBC()&&返回a:\db1.dbc

▲函數(shù)DBUSED(數(shù)據(jù)庫名)返回指定的數(shù)據(jù)庫文件是否已經(jīng)打開的狀態(tài)。如果已打開,則函數(shù)返回值為.T.;否則函數(shù)返回值為.F.。例如:?DBUSED(”DB1”)&&返回.T.設(shè)

數(shù)

據(jù)

第62頁,共70頁,2022年,5月20日,23點28分,星期四

數(shù)據(jù)庫表和自由表都可以使用USE命令打開。但是,如果打開的是數(shù)據(jù)庫表,則系統(tǒng)會首先自動打開表所在的數(shù)據(jù)庫。(打開數(shù)據(jù)庫時不會自動打開表,關(guān)閉數(shù)據(jù)庫時會自動關(guān)閉數(shù)據(jù)庫中所有已打開的表,關(guān)閉表時不會自動關(guān)閉數(shù)據(jù)庫。)

要打開非當前數(shù)據(jù)庫中的表,可以使用“!”符號。例如: USEjxsj!xs也可以直接使用表文件名打開數(shù)據(jù)庫表,如:

USEjs使用數(shù)據(jù)庫中的表第63頁,共70頁,2022年,5月20日,23點28分,星期四

(1)從項目管理器中,選定要關(guān)閉的數(shù)據(jù)庫并選擇“關(guān)閉”按鈕。(2)使用CLOSEDATABASE

命令:

▲CLOSEDATABASES

關(guān)閉當前數(shù)據(jù)庫和表。若沒有當前數(shù)據(jù)庫,則關(guān)閉所有工作區(qū)內(nèi)所有打開的自由表、索引和格式文件,并選擇工作區(qū)1。例如,下面的代碼關(guān)閉了JXSJ數(shù)據(jù)庫:

SETDATABASETOjxsjCLOSEDATABASE▲CLOSEDATABASESALL

關(guān)閉所有打開的數(shù)據(jù)庫和其中的表,所有打開的自由表,所有工作區(qū)內(nèi)所有索引和格式文件,并選擇工作區(qū)1?!鳦LOSEALL

該命令除了不關(guān)閉“命令窗口”、“調(diào)試窗口”、“幫助”和“跟蹤窗口”外,將關(guān)閉所有的數(shù)據(jù)庫、表、索引以及各種設(shè)計器,包括項目管理器。并選擇工作區(qū)1

。關(guān)閉數(shù)據(jù)庫第64頁,共70頁,2022年,5月20日,23點28分,星期四DBC()函數(shù)返回當前打開數(shù)據(jù)庫的完整文件名,該函數(shù)無參數(shù)。DBUSED()函數(shù)返回指定的數(shù)據(jù)庫文件是否已經(jīng)打開,如果打開,則函數(shù)的值為.T.,否則為.F.。語法:DBUSED(數(shù)據(jù)庫名)其中:數(shù)據(jù)庫名為字符表達式。第65頁,共70頁,2022年,5月20日,23點28分,星期四

語法:DBGETPROP(cName,cType,cProperty)

功能

溫馨提示

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

評論

0/150

提交評論