




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
關(guān)于數(shù)據(jù)庫的創(chuàng)建和使用第1頁,講稿共70頁,2023年5月2日,星期三
數(shù)據(jù)庫是一個(gè)包容器,是許多相關(guān)的數(shù)據(jù)庫表的集合,是數(shù)據(jù)組織層次中目前已達(dá)到的最高級別。它包括數(shù)據(jù)表以及表之間的關(guān)系等。
3.1VisualFoxPro數(shù)據(jù)庫
第2頁,講稿共70頁,2023年5月2日,星期三1.分析數(shù)據(jù)需求2.確定需要的表3.確定表的字段4.確定表之間的關(guān)系5.設(shè)計(jì)的優(yōu)化數(shù)據(jù)庫設(shè)計(jì)過程第3頁,講稿共70頁,2023年5月2日,星期三VFP數(shù)據(jù)庫的組成
1.數(shù)據(jù)庫表
2.本地視圖及遠(yuǎn)程視圖
3.連接
4.存儲過程VFP
的數(shù)據(jù)字典第4頁,講稿共70頁,2023年5月2日,星期三3.2數(shù)據(jù)庫的創(chuàng)建、打開和使用VFP
數(shù)據(jù)庫的創(chuàng)建方法界面操作方式創(chuàng)建數(shù)據(jù)庫命令方式創(chuàng)建數(shù)據(jù)庫
創(chuàng)建一個(gè)新的數(shù)據(jù)庫將生成三個(gè)文件:數(shù)據(jù)庫文件(dbc)、關(guān)聯(lián)的數(shù)據(jù)庫備注文件(dct)和關(guān)聯(lián)的數(shù)據(jù)庫索引文件(dcx)。第5頁,講稿共70頁,2023年5月2日,星期三打開數(shù)據(jù)庫設(shè)置當(dāng)前數(shù)據(jù)庫數(shù)據(jù)庫的有效性使用數(shù)據(jù)庫中的表關(guān)閉數(shù)據(jù)庫刪除數(shù)據(jù)庫3.2數(shù)據(jù)庫的創(chuàng)建、打開和使用第6頁,講稿共70頁,2023年5月2日,星期三如果移動了數(shù)據(jù)文件(.DBC、.DCT和.DCX)或與數(shù)據(jù)庫關(guān)聯(lián)的表文件,則這些文件的相對路徑會改變,可能會破壞已有的前鏈或后鏈。如將庫表XS由C盤移至A盤,由于表文件的移動引起庫文件中的前鏈被破壞,可使用命令VALIDATEDATABASERECOVER,更新相對路徑信息以重建前鏈。也可用USE命令打開表,系統(tǒng)會顯示“打開”對話框,允許重新定位該表所屬的數(shù)據(jù)庫或刪除鏈接。數(shù)據(jù)庫的有效性第7頁,講稿共70頁,2023年5月2日,星期三
數(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ī)則?表單中使用的默認(rèn)控件類?表中字段的標(biāo)題和注釋?數(shù)據(jù)庫表之間的永久性關(guān)系
?存儲過程?字段的輸入掩碼和顯示格式
?表中字段的默認(rèn)值?長表名和表中的長字段名?插入、更新和刪除事件的觸發(fā)器除了以上這些表的功能擴(kuò)展,使用數(shù)據(jù)庫還能訪問與遠(yuǎn)程數(shù)據(jù)源的連接,并可創(chuàng)建本地表和遠(yuǎn)程表的視圖。VFP
的數(shù)據(jù)字典第8頁,講稿共70頁,2023年5月2日,星期三4.5數(shù)據(jù)庫表數(shù)據(jù)庫表的字段擴(kuò)展屬性數(shù)據(jù)庫表的表屬性數(shù)據(jù)庫表的約束機(jī)制及其激活時(shí)機(jī)綜述數(shù)據(jù)庫表的索引第9頁,講稿共70頁,2023年5月2日,星期三數(shù)據(jù)庫表字段的擴(kuò)展屬性
引言字段的顯示屬性字段的格式(Format)
字段的輸入掩碼(InputMask)
字段的標(biāo)題(Caption)與注釋(Comment)字段有效性字段驗(yàn)證規(guī)則(ruleexpression)
字段驗(yàn)證信息(ruleexpressiontext)
字段默認(rèn)值(defaultvalue)命令方法實(shí)現(xiàn)字段驗(yàn)證規(guī)則在數(shù)據(jù)庫中查看字段的擴(kuò)展屬性第10頁,講稿共70頁,2023年5月2日,星期三
在使用命令createtable-sql創(chuàng)建表文件時(shí),可以利用check子句、error子句和default子句設(shè)置字段的有效性規(guī)則、有效性信息和默認(rèn)值;在使用altertable-sql命令修改表的結(jié)構(gòu)時(shí),可以通過setcheck子句、setdefault子句設(shè)置字段的有效性規(guī)則和默認(rèn)值。刪除字段的有效性規(guī)則時(shí),可以利用帶dropcheck子句的altertable-sql命令;刪除字段的默認(rèn)值時(shí),可以利用帶dropdefault子句的altertable-sql命令。第11頁,講稿共70頁,2023年5月2日,星期三數(shù)據(jù)庫表的表屬性長表名與表注釋表記錄的驗(yàn)證規(guī)則表記錄的驗(yàn)證信息表的觸發(fā)器(Trigger)
觸發(fā)器的基本概念創(chuàng)建表的觸發(fā)器移去或刪除觸發(fā)器第12頁,講稿共70頁,2023年5月2日,星期三相關(guān)表之間的參照完整性“參照完整性”(RI)概念設(shè)置參照完整性
參照完整性設(shè)置方法
參照完整性規(guī)則VFP
數(shù)據(jù)完整性綜述
實(shí)體完整性參照完整性用戶自定義完整性第13頁,講稿共70頁,2023年5月2日,星期三4.7操作數(shù)據(jù)庫及其對象的幾個(gè)常用函數(shù)DBC()函數(shù)與DBUSED()函數(shù)DBGETPROP()函數(shù)DBSETPROP()函數(shù)第14頁,講稿共70頁,2023年5月2日,星期三
1.一對多關(guān)系
設(shè)有甲乙兩個(gè)表,如果甲表中的任意一個(gè)記錄在乙表中都有幾個(gè)記錄與之對應(yīng),而乙表中的每個(gè)記錄在甲表中僅有一個(gè)記錄與之對應(yīng),則稱甲乙兩個(gè)表之間存在一對多關(guān)系,并稱甲表為“一”表(或“主表”),乙表為“多”表(或“子表”)。外部關(guān)鍵字首先必須是“一”表中存在的字段,外部關(guān)鍵字的值輸入到“多”表中的條件也必須是在“一”表中早已存在的。一般,將在“多”表中存在但在“一”表中不存在的記錄稱為“孤立記錄”。表之間的關(guān)系(1)
第15頁,講稿共70頁,2023年5月2日,星期三
2.多對多關(guān)系
遇到“多對多”的情況時(shí),必須建立第三個(gè)表,把多對多的關(guān)系分解成兩個(gè)一對多關(guān)系。這第三個(gè)表就稱作“紐帶表”(JunctionTable)。因?yàn)樗趦杀碇g起著紐帶的作用。可以把兩個(gè)表的主關(guān)鍵字都放在這個(gè)紐帶表中。對于紐帶表,除了包含兩個(gè)外部關(guān)鍵字:即來自于學(xué)生表的主關(guān)鍵字Xh(學(xué)號)和課程表的主關(guān)鍵字Kcdh(課程代號)外,還可以有其他字段,如Cj(成績)字段。但允許沒有單個(gè)字段的主關(guān)鍵字,主關(guān)鍵字可以由兩個(gè)外部關(guān)鍵字組成。表之間的關(guān)系(2)
第16頁,講稿共70頁,2023年5月2日,星期三
3.一對一關(guān)系一對一關(guān)系是這樣一種關(guān)系:甲表的一個(gè)記錄在乙表中只能對應(yīng)一個(gè)記錄,而乙表中的一個(gè)記錄在甲表中也只能有一個(gè)記錄與之對應(yīng)。這種關(guān)系不經(jīng)常使用。因?yàn)樵谠S多情況下,兩個(gè)表的信息可以簡單地合并成一個(gè)表。出于一些原因(如字段項(xiàng)太多),不能合并的,可以建立一對一關(guān)系,只要把一個(gè)主關(guān)鍵字同時(shí)放到兩個(gè)表中,并以此建立一對一關(guān)系。表之間的關(guān)系(3)
第17頁,講稿共70頁,2023年5月2日,星期三4.分析并確定表之間關(guān)系
表之間的關(guān)系(4)
第18頁,講稿共70頁,2023年5月2日,星期三圖4-3表之間的關(guān)系第19頁,講稿共70頁,2023年5月2日,星期三4-4多對多關(guān)系與紐帶表第20頁,講稿共70頁,2023年5月2日,星期三界面操作方式創(chuàng)建數(shù)據(jù)庫
在“項(xiàng)目管理器”中新建數(shù)據(jù)庫
通過“新建”對話框新建數(shù)據(jù)庫第21頁,講稿共70頁,2023年5月2日,星期三
創(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è)計(jì)器。如: CREATEDATABASEJXSJ1(3)用命令方式創(chuàng)建的數(shù)據(jù)庫不會自動添加到項(xiàng)目管理器中。命令方式創(chuàng)建數(shù)據(jù)庫第22頁,講稿共70頁,2023年5月2日,星期三
從屬于某一個(gè)數(shù)據(jù)庫的表,稱為“數(shù)據(jù)庫表”(也叫“相關(guān)表”)。
前鏈和后鏈庫表與數(shù)據(jù)庫之間的相關(guān)性是通過表文件(.DBF)與庫文件(.DBC)之間的雙向鏈接實(shí)現(xiàn)的。雙向鏈接包括前鏈和后鏈。
數(shù)據(jù)庫表第23頁,講稿共70頁,2023年5月2日,星期三
前鏈?zhǔn)潜4嬖跀?shù)據(jù)庫容器(.DBC)中的有關(guān)表文件的路徑和文件名信息,它將數(shù)據(jù)庫與庫表文件相鏈接。前鏈指向數(shù)據(jù)庫中包含的表,它由各個(gè)表文件的相對路徑和文件名稱構(gòu)成。后鏈?zhǔn)谴娣旁谝粋€(gè)表的表頭中的數(shù)據(jù)庫的路徑和文件名,用以將自身與包含自身的數(shù)據(jù)庫容器相鏈接。后鏈指向擁有該表的數(shù)據(jù)庫,它由數(shù)據(jù)庫的相對路徑和數(shù)據(jù)庫名稱構(gòu)成。前
鏈
和
后
鏈第24頁,講稿共70頁,2023年5月2日,星期三1.利用“項(xiàng)目管理器”在數(shù)據(jù)庫中添加、新建和移去表
2.利用“數(shù)據(jù)庫設(shè)計(jì)器”在數(shù)據(jù)庫中添加、新建和移去表
3.使用命令在數(shù)據(jù)庫中添加、移去表語法:ADDTABLE自由表表文件名;
[NAME長表名]功能:向數(shù)據(jù)庫中添加自由表。語法:REMOVETABLE表名
[DELETE]功能:從數(shù)據(jù)庫中移去表。添加、新建和移去數(shù)據(jù)庫表的方法第25頁,講稿共70頁,2023年5月2日,星期三例: OPENDATABASEjxsjEXCLUSIVE ADDTABLExs
▲使用ADDTABLE命令往數(shù)據(jù)庫中添加表時(shí),必須保證數(shù)據(jù)庫處于打開狀態(tài)。
REMOVETABLEXS
▲將XS表從數(shù)據(jù)庫中移出,若加上DELETE可選項(xiàng),則不僅將XS從數(shù)據(jù)庫中移出,而且還把表文件從磁盤上刪除。
▲一個(gè)表在同一時(shí)間內(nèi)只能屬于一個(gè)數(shù)據(jù)庫,如果所需要的數(shù)據(jù)表已隸屬于其他數(shù)據(jù)庫,則必須先從其他數(shù)據(jù)庫移去此表,使其成為自由表,然后才能將其添加到當(dāng)前數(shù)據(jù)庫中來。 使用命令在數(shù)據(jù)庫中添加、移去表第26頁,講稿共70頁,2023年5月2日,星期三
一、表之間的關(guān)系二、表之間的永久關(guān)系
1.永久關(guān)系(persistentrelationship)的概念
2.永久關(guān)系的作用
3.永久關(guān)系的建立
4.刪除、編輯修改永久性關(guān)系庫
表
之
間
的
關(guān)
系第27頁,講稿共70頁,2023年5月2日,星期三
永久關(guān)系是庫表之間的一種關(guān)系,不僅在運(yùn)行時(shí)存在,而且一直保留,擁有永久關(guān)系的表必須在數(shù)據(jù)庫中。數(shù)據(jù)庫表間的永久關(guān)系是根據(jù)表的索引建立的。索引的類型決定了要創(chuàng)建的永久關(guān)系類型,在一對多關(guān)系中,“一方”必須用主索引關(guān)鍵字(或標(biāo)識),或者用候選索引關(guān)鍵字(或標(biāo)識);在“多方”則使用普通索引關(guān)鍵字(或普通索引標(biāo)識)。在一對一關(guān)系中,兩個(gè)表必須都用主索引關(guān)鍵字(或標(biāo)識)或候選索引關(guān)鍵字(或標(biāo)識)。永久關(guān)系(persistentrelationship)的概念第28頁,講稿共70頁,2023年5月2日,星期三
▲在“查詢設(shè)計(jì)器”和“視圖設(shè)計(jì)器”中,自動作為默認(rèn)聯(lián)接條件。
▲作為表單和報(bào)表的默認(rèn)的關(guān)系,在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中顯示。
▲用來存儲參照完整性信息。這是永久關(guān)系的主要作用。永久關(guān)系的作用第29頁,講稿共70頁,2023年5月2日,星期三
建立永久關(guān)系的一般步驟是:①確定兩個(gè)存在一對多或一對一關(guān)系的表②建立主表的主索引或候選索引;③如果是一對多關(guān)系,則在子表中按外部關(guān)鍵字建立普通索引;如果是一對一關(guān)系,則在子表中以與主表相同的關(guān)鍵字建立主索引或候選索引;④從主表的主索引或候選索引到子表相關(guān)的索引建立永久關(guān)系。
方法一:在數(shù)據(jù)庫設(shè)計(jì)器中建立永久關(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頁,2023年5月2日,星期三刪除永久性關(guān)系在“數(shù)據(jù)庫設(shè)計(jì)器”中,單擊關(guān)聯(lián)連線后,該線變粗,此時(shí),按【Del】鍵即可刪除關(guān)系;或用鼠標(biāo)右鍵單擊關(guān)系連線,在快捷菜單中單擊“刪除關(guān)系”后,關(guān)聯(lián)的線被擦除。編輯修改永久性關(guān)系用鼠標(biāo)右鍵單擊關(guān)系連線,在快捷菜單中單擊“編輯關(guān)系”后出現(xiàn)“編輯關(guān)系”對話框。刪除、編輯修改永久性關(guān)系
第31頁,講稿共70頁,2023年5月2日,星期三永久關(guān)系連線拖放第32頁,講稿共70頁,2023年5月2日,星期三永久關(guān)系連線快捷菜單第33頁,講稿共70頁,2023年5月2日,星期三“編輯關(guān)系”對話框第34頁,講稿共70頁,2023年5月2日,星期三引言
數(shù)據(jù)庫表的字段除了具有字段的基本屬性外,還含有自由表所沒有的擴(kuò)展屬性:包括字段的顯示格式、輸入掩碼、默認(rèn)值、標(biāo)題、注釋以及字段的驗(yàn)證規(guī)則和驗(yàn)證信息等。這些高級屬性都保存在庫表所在的數(shù)據(jù)庫文件中。
字段的高級屬性都可以在數(shù)據(jù)庫表的“表設(shè)計(jì)器”中進(jìn)行設(shè)置,還可以用函數(shù)SETDBPROP()設(shè)置。
打開數(shù)據(jù)庫表設(shè)計(jì)器和自由表設(shè)計(jì)器進(jìn)行比較,可看到二者之間的差別。第35頁,講稿共70頁,2023年5月2日,星期三字
段
的
格
式
字段的格式用于指定字段顯示時(shí)的格式。設(shè)置字段的顯示格式的方法與步驟(以JS表為例)如下:(1)打開JS表設(shè)計(jì)器(2)選擇要加格式的字段(3)在格式框中鍵入格式內(nèi)容。如:設(shè)置JS表的JBGZ字段格式為“^”;
設(shè)置JS表的JBGZ字段格式為“L$”;
設(shè)置JS表的CSRQ字段格式為“E”以上字段格式符號的意義見“字段格式表”。第36頁,講稿共70頁,2023年5月2日,星期三第37頁,講稿共70頁,2023年5月2日,星期三
字段的輸入掩碼用于指定字段中輸入數(shù)據(jù)的格式。設(shè)置字段輸入掩碼的方法與步驟如下:(1)在表設(shè)計(jì)器中打開表;(2)選擇要加輸入掩碼的字段;(3)在“輸入掩碼”框中鍵入掩碼。如:為JS表的JBGZ字段設(shè)置掩碼為“$$9,999.99”JBGZ字段類型為N型,寬度為9,小數(shù)位為2。輸入掩碼的具體含義見“輸入掩碼表”。字
段
的
輸
入
掩
碼第38頁,講稿共70頁,2023年5月2日,星期三輸入掩碼表第39頁,講稿共70頁,2023年5月2日,星期三
字段標(biāo)題的作用是為了使表具有更好的可讀性。在取字段名時(shí),為了在命令方式下更方便地使用字段,字段名常常采用簡練的形式,常用拼音字母代替漢字,如“出生日期”的字段名取為“CSRQ”,在瀏覽時(shí)也以字段名作為列的標(biāo)題,不直觀,可讀形不好。利用數(shù)據(jù)庫表字段的標(biāo)題屬性,可以為字段設(shè)置一個(gè)含義明確的標(biāo)題,但標(biāo)題只是在瀏覽、顯示時(shí)起作用,并不能作為字段名用于表達(dá)式及命令中。
字段注釋也是為了使表具有更好的可讀性,所以在注釋框中可以填入對字段的文字說明。字段的標(biāo)題與注釋第40頁,講稿共70頁,2023年5月2日,星期三
字段驗(yàn)證用來限定字段的取值及取值范圍。 在所選字段的字段驗(yàn)證規(guī)則框內(nèi)鍵入一邏輯表達(dá)式,當(dāng)往字段中輸入數(shù)據(jù)并當(dāng)焦點(diǎn)離開該字段時(shí),將數(shù)據(jù)代入邏輯表達(dá)式,若表達(dá)式的值為真則接受該數(shù)據(jù)作為該字段的值,否則拒絕將該數(shù)據(jù)作為該字段的值。如將JS表的JBGZ字段驗(yàn)證規(guī)則設(shè)為:
JBGZ>=500ANDJBGZ<=2000
當(dāng)關(guān)閉表設(shè)計(jì)器并保存對結(jié)構(gòu)的修改時(shí),可以選擇用此規(guī)則對照現(xiàn)有的數(shù)據(jù)或不對照現(xiàn)有的數(shù)據(jù)。字段驗(yàn)證規(guī)則第41頁,講稿共70頁,2023年5月2日,星期三
在字段驗(yàn)證信息框中鍵入對驗(yàn)證規(guī)則的說明文本,當(dāng)字段值不滿足字段驗(yàn)證規(guī)則時(shí)將顯示該說明。如在上述JS表的JBGZ字段驗(yàn)證信息框中輸入文本“基本工資必須在500-2000之間”(作為字符串常量必須加引號),當(dāng)在JBGZ字段中輸入2100時(shí)就會顯示信息:“基本工資必須在500-2000之間”,并拒絕接受2100作為JBGZ字段的值。該屬性為可選項(xiàng),既字段可以有字段驗(yàn)證規(guī)則而沒有字段驗(yàn)證信息,當(dāng)出現(xiàn)違背字段驗(yàn)證規(guī)則的數(shù)據(jù)時(shí),系統(tǒng)顯示默認(rèn)的信息,如“違反了字段JBGZ的驗(yàn)證規(guī)則”。字段驗(yàn)證信息第42頁,講稿共70頁,2023年5月2日,星期三
當(dāng)向一個(gè)數(shù)據(jù)庫表中添加記錄時(shí),為字段所指定的最初的值,稱為該字段的默認(rèn)值。如為JS表的JBGZ字段設(shè)置默認(rèn)值為800,則每次向JS表中追加新記錄時(shí),JBGZ字段都已有數(shù)據(jù)800。如果沒有設(shè)置默認(rèn)值。則在追加新記錄時(shí),各字段也有系統(tǒng)自動設(shè)置的默認(rèn)值,如下表所示。
字
段
的
默
認(rèn)
值第43頁,講稿共70頁,2023年5月2日,星期三
上述7個(gè)屬性均為數(shù)據(jù)庫表字段的擴(kuò)展屬性,這些屬性存儲為數(shù)據(jù)庫的一部分,而且只要表屬于該數(shù)據(jù)庫,它們就一定存在,而在VFP中數(shù)據(jù)庫實(shí)質(zhì)是一個(gè)表文件,可用USE命令打開查看,也可用DISPLAYDATABASE命令查看。例如:
USEJXSJ.DBC BROWSE
或
OPENDATABASEJXSJDISPLAYDATABASE在數(shù)據(jù)庫中查看字段的擴(kuò)展屬性第44頁,講稿共70頁,2023年5月2日,星期三
如果為數(shù)據(jù)庫表設(shè)置了長表名屬性,則該數(shù)據(jù)庫表在各種選項(xiàng)卡、窗口中均以長表名代替表名。在打開數(shù)據(jù)庫表時(shí),長表名與文件名可以同樣使用。例如,用表設(shè)計(jì)器為JS表設(shè)置長表名“TEACHER”,以后打開該表可以有兩種方法:
USEJS &&此時(shí)表的別名為“JS”USETEACHER&&此時(shí)表的別名為“TEACHER”也可以在使用CREATETABLE命令創(chuàng)建表時(shí):
CREATETABLEB01NAMETAB01(F01C(3))長
表
名(NAME)第45頁,講稿共70頁,2023年5月2日,星期三
在向表中輸入記錄時(shí),當(dāng)兩個(gè)字段之間存在一定的關(guān)系,如出生日期總是比工作日期小,這是可以通過設(shè)置數(shù)據(jù)庫表的記錄驗(yàn)證規(guī)則來實(shí)現(xiàn)。例如,在教師表JS中可以設(shè)置如下記錄級規(guī)則:“工齡<年齡-15”。則應(yīng)在“規(guī)則”框中輸入如下規(guī)則的表達(dá)式:
js.gl<year(date())-year(js.csrq)-15
或者使用CREATETABLE或ALTERTABLE命令的CHECK子句。
ALTERTABLEJSSET
CHECK;
js.gl<year(date())-year(js.csrq)-15表
記
錄
的
驗(yàn)
證
規(guī)
則(1)第46頁,講稿共70頁,2023年5月2日,星期三
和字段級規(guī)則一樣,記錄級規(guī)則在記錄值改變時(shí)被激活。如果該記錄中的值沒有變化,則在移走記錄指針時(shí),不檢查記錄級規(guī)則。因此可以自由地在記錄間移動指針,而系統(tǒng)卻不會檢查任何數(shù)據(jù)。如果修改了記錄,若沒有移動記錄指針,則在關(guān)閉“瀏覽”窗口時(shí)檢查記錄級規(guī)則,并對所發(fā)生的任何錯誤提出警告,然后才關(guān)閉“瀏覽”窗口;若記錄指針移離記錄時(shí),立即檢查記錄級規(guī)則,并對所發(fā)生的任何錯誤提出警告。和字段級驗(yàn)證規(guī)則一樣,在設(shè)置結(jié)束時(shí)可以選擇是否用此規(guī)則對照現(xiàn)有的記錄。表
記
錄
的
驗(yàn)
證
規(guī)
則(2)第47頁,講稿共70頁,2023年5月2日,星期三
在記錄驗(yàn)證信息框中鍵入對驗(yàn)證規(guī)則的說明文本,當(dāng)記錄不滿足驗(yàn)證規(guī)則時(shí)將顯示該說明。如在上述JS表的記錄驗(yàn)證信息框中輸入文本“參加工作年齡必須大于15歲”(作為字符串常量必須加引號),當(dāng)JS表中某記錄的CSRQ和GL字段不滿足這一條件時(shí),就會顯示信息:“參加工作年齡必須大于15歲”,并拒絕接受該記錄。該屬性為可選項(xiàng),即可以有記錄驗(yàn)證規(guī)則而沒有記錄驗(yàn)證信息,當(dāng)出現(xiàn)違背記錄驗(yàn)證規(guī)則的記錄時(shí),系統(tǒng)顯示默認(rèn)的信息,如“違反了記錄驗(yàn)證規(guī)則”。表記錄的驗(yàn)證信息第48頁,講稿共70頁,2023年5月2日,星期三“表的觸發(fā)器”是綁定在表上的表達(dá)式,當(dāng)表中任何記錄被指定的操作命令(插入、更新或刪除)修改時(shí),在進(jìn)行其他所有檢查之后(例如有效性規(guī)則,主關(guān)鍵字的實(shí)施,以及null值的實(shí)施)被激活。 表的觸發(fā)器是表在插入、更新或刪除記錄時(shí)進(jìn)行的檢驗(yàn)規(guī)則??煞譃椴迦胗|發(fā)器、更新觸發(fā)器和刪除觸發(fā)器。觸發(fā)器的基本概念第49頁,講稿共70頁,2023年5月2日,星期三
可使用“表設(shè)計(jì)器”或CREATETRIGGER命令來創(chuàng)建觸發(fā)器。
插入觸發(fā)器:向表中插入或追加記錄時(shí)觸發(fā)該規(guī)則;更新觸發(fā)器:在表中修改記錄時(shí)觸發(fā)該規(guī)則;刪除觸發(fā)器:在表中刪除記錄時(shí)觸發(fā)該規(guī)則。上述觸發(fā)器的默認(rèn)設(shè)置是.T.。創(chuàng)建觸發(fā)器的一個(gè)方法是,在表設(shè)計(jì)器中為觸發(fā)器設(shè)置一個(gè)邏輯表達(dá)式,其返回值是“真”(.T.)或“假”(.F.)。如將JS表的刪除觸發(fā)器設(shè)置為GL>40,則JS表中只有GL大于40年的記錄才可以做邏輯刪除。另一個(gè)方法是用CREATETRIGGER命令:
CREATETRIGGERON<表名>FOR;
INSERT|UPDATE|DELETEAS<邏輯表達(dá)式>例:CREATETRIGGERONJSFORDELETEASJS.GL>40創(chuàng)
建
表
的觸發(fā)器第50頁,講稿共70頁,2023年5月2日,星期三
在“表設(shè)計(jì)器”的“表”選項(xiàng)卡的“觸發(fā)器”區(qū)中,從“插入觸發(fā)器”、“更新觸發(fā)器”或“刪除觸發(fā)器”框里選定觸發(fā)器表達(dá)式,并刪除它。使用DELETETRIGGER命令。格式如下:
DELETETRIGGERON<表名>FORDELETE|INSERT|UPDATE
如果從數(shù)據(jù)庫中移去或刪除表,則所有屬于該表的觸發(fā)器都從數(shù)據(jù)庫中刪除。但是,由被移去或刪除的觸發(fā)器引用的存儲過程沒有刪除。移去或刪除觸發(fā)器第51頁,講稿共70頁,2023年5月2日,星期三
數(shù)據(jù)庫表的字段級和記錄級規(guī)則以及表的觸發(fā)器,為數(shù)據(jù)的輸入和修改實(shí)施了約束。庫表的約束機(jī)制及其激活時(shí)機(jī)第52頁,講稿共70頁,2023年5月2日,星期三第53頁,講稿共70頁,2023年5月2日,星期三第54頁,講稿共70頁,2023年5月2日,星期三
“參照完整性”(ReferentialIntegrity—RI)是用來控制數(shù)據(jù)的完整性,尤其是控制數(shù)據(jù)庫中相關(guān)表之間的主關(guān)鍵字和外部關(guān)鍵字之間數(shù)據(jù)一致性的規(guī)則。數(shù)據(jù)一致性要求相關(guān)表之間滿足如下規(guī)則:(1)子表中的每一個(gè)記錄在對應(yīng)的主表中必須有一個(gè)父記錄,否則子表中的記錄是“孤立記錄”。(2)在子表中插入記錄時(shí),其外部關(guān)鍵字必須是父表主關(guān)鍵字值中的一個(gè)。(3)在父表中刪除記錄時(shí),與該記錄相關(guān)的子表中的記錄必須全部刪除。參照完整性的概念第55頁,講稿共70頁,2023年5月2日,星期三
設(shè)置參照完整性是利用數(shù)據(jù)庫表之間的永久關(guān)系,控制記錄如何在相關(guān)表中被插入、更新或刪除。參照完整性規(guī)則被設(shè)置在主表或子表的觸發(fā)器中,規(guī)則的代碼被保存在數(shù)據(jù)庫的存儲過程中。設(shè)置過程如下:在“數(shù)據(jù)庫設(shè)計(jì)器”中,用鼠標(biāo)右擊永久性關(guān)系聯(lián)線,出現(xiàn)快捷菜單,單擊其中的“編輯參照完整性”項(xiàng)(或者單擊“數(shù)據(jù)庫”菜單中的“編輯參照完整性”),出現(xiàn)“參照完整性”生成器。
VFP中的參照完整性規(guī)則包括更新規(guī)則、刪除規(guī)則和插入規(guī)則三種。參
照
完
整
性
的
設(shè)
置第56頁,講稿共70頁,2023年5月2日,星期三參
照
完
整
性規(guī)則表第57頁,講稿共70頁,2023年5月2日,星期三VFP引進(jìn)了關(guān)系數(shù)據(jù)庫的三類完整性:實(shí)體完整性、參照完整性和用戶自定義完整性。前兩類是數(shù)據(jù)庫本身自我約束的完整性規(guī)則,由系統(tǒng)自動支持。實(shí)體完整性包括兩級:字段和記錄的數(shù)據(jù)完整性。字段的數(shù)據(jù)完整性通過設(shè)置字段的有效性規(guī)則實(shí)現(xiàn)。記錄的數(shù)據(jù)完整性通過設(shè)置記錄的有效性規(guī)則實(shí)現(xiàn)。參照完整性是指相關(guān)表之間的數(shù)據(jù)一致性。通過字段級、記錄級和表間三級完整性約束,有效地實(shí)現(xiàn)了數(shù)據(jù)的完整性和一致性。從而方便和簡化了用戶的數(shù)據(jù)維護(hù)。數(shù)
據(jù)
完
整
性
綜
述
第58頁,講稿共70頁,2023年5月2日,星期三第59頁,講稿共70頁,2023年5月2日,星期三打開一個(gè)數(shù)據(jù)庫1)界面方式2)命令方式OPENDATABASE[Database];[EXCLUSIVE][SHARED][NOUPDATE][VALIDATE]2.打開多個(gè)數(shù)據(jù)庫
正如表可以打開多個(gè)一樣,數(shù)據(jù)庫也可以打開多個(gè),但不必在多個(gè)工作區(qū)打開。 打開數(shù)據(jù)庫第60頁,講稿共70頁,2023年5月2日,星期三
打開多個(gè)數(shù)據(jù)庫的方法很簡單,只要多次使用打開一個(gè)數(shù)據(jù)庫的命令。例如,要同時(shí)打開三個(gè)數(shù)據(jù)庫DB1、DB2、DB3的命令是:
OPENDATABASEDB1 OPENDATABASEDB2 OPENDATABASEDB3第61頁,講稿共70頁,2023年5月2日,星期三
所有打開的數(shù)據(jù)庫中,只有一個(gè)是當(dāng)前數(shù)據(jù)庫。在打開數(shù)據(jù)庫時(shí),最后一個(gè)打開的數(shù)據(jù)庫為當(dāng)前數(shù)據(jù)庫。也可把其他打開的數(shù)據(jù)庫設(shè)置為當(dāng)前數(shù)據(jù)庫。(1)在“常用”工具條的“數(shù)據(jù)庫”下拉列表中,顯示了所有已打開的數(shù)據(jù)庫??梢栽诹斜碇羞x擇一個(gè)作為當(dāng)前數(shù)據(jù)庫。(2)用SETDATABASETO命令將某一已打開的數(shù)據(jù)庫設(shè)置為當(dāng)前數(shù)據(jù)庫。如:SETDATABASETODB2
(3)與數(shù)據(jù)庫相關(guān)的兩個(gè)函數(shù)
▲函數(shù)DBC()返回當(dāng)前打開的數(shù)據(jù)庫的完整文件名。?DBC()&&返回a:\db1.dbc
▲函數(shù)DBUSED(數(shù)據(jù)庫名)返回指定的數(shù)據(jù)庫文件是否已經(jīng)打開的狀態(tài)。如果已打開,則函數(shù)返回值為.T.;否則函數(shù)返回值為.F.。例如:?DBUSED(”DB1”)&&返回.T.設(shè)
置
當(dāng)
前
數(shù)
據(jù)
庫
第62頁,講稿共70頁,2023年5月2日,星期三
數(shù)據(jù)庫表和自由表都可以使用USE命令打開。但是,如果打開的是數(shù)據(jù)庫表,則系統(tǒng)會首先自動打開表所在的數(shù)據(jù)庫。(打開數(shù)據(jù)庫時(shí)不會自動打開表,關(guān)閉數(shù)據(jù)庫時(shí)會自動關(guān)閉數(shù)據(jù)庫中所有已打開的表,關(guān)閉表時(shí)不會自動關(guān)閉數(shù)據(jù)庫。)
要打開非當(dāng)前數(shù)據(jù)庫中的表,可以使用“!”符號。例如: USEjxsj!xs也可以直接使用表文件名打開數(shù)據(jù)庫表,如:
USEjs使用數(shù)據(jù)庫中的表第63頁,講稿共70頁,2023年5月2日,星期三
(1)從項(xiàng)目管理器中,選定要關(guān)閉的數(shù)據(jù)庫并選擇“關(guān)閉”按鈕。(2)使用CLOSEDATABASE
命令:
▲CLOSEDATABASES
關(guān)閉當(dāng)前數(shù)據(jù)庫和表。若沒有當(dāng)前數(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è)計(jì)器,包括項(xiàng)目管理器。并選擇工作區(qū)1
。關(guān)閉數(shù)據(jù)庫第64頁,講稿共70頁,2023年5月2日,星期三DBC()函數(shù)返回當(dāng)前打開數(shù)據(jù)庫的完整文件名,該函數(shù)無參數(shù)。DBUSED()函數(shù)返回指定的數(shù)據(jù)庫文件是否已經(jīng)打開,如果打開,則函數(shù)的值為.T.,否則為.F.。語法:DBUSED(數(shù)據(jù)庫名)其中:數(shù)據(jù)庫名為字符表達(dá)式。第65頁,講稿共70頁,2023年5月2日,星期三
語法:DBGETPROP(cName,cType,cProperty)
功能:返回當(dāng)前數(shù)據(jù)庫的屬性,或者
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玫瑰花購銷合同
- 工業(yè)設(shè)備維修保養(yǎng)服務(wù)合同
- 出售房屋委托代理合同書
- 固體廢物處理處置服務(wù)合同
- 水電接入合同協(xié)議書
- 承包建造船舶合同
- 電子政務(wù)系統(tǒng)合同
- 內(nèi)蒙古北方職業(yè)技術(shù)學(xué)院《美容外科學(xué)醫(yī)學(xué)美容》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧稅務(wù)高等??茖W(xué)?!峨姎鈧鲃幼詣涌刂葡到y(tǒng)綜合課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連裝備制造職業(yè)技術(shù)學(xué)院《智慧教學(xué)與微課制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 2023新蘇教版六年級下冊科學(xué)學(xué)生活動手冊答案
- 【老齡化背景下商業(yè)銀行養(yǎng)老金融發(fā)展探究文獻(xiàn)綜述3400字】
- 《用戶側(cè)電化學(xué)儲能系統(tǒng)接入配電網(wǎng)技術(shù)規(guī)定》
- 安徽省醫(yī)療保障基金使用違法違規(guī)問題檢查指引2023版
- (幻燈片)湘教版七年級下冊地理復(fù)習(xí)課件
- 食堂油鍋起火演練方案及流程
- 2024年江西電力職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 醫(yī)療器械銷售渠道管理
- 幼兒園中班跳繩實(shí)施方案及措施
- 2024年中考政治總復(fù)習(xí)初中道德與法治知識點(diǎn)總結(jié)(重點(diǎn)標(biāo)記版)
- 小學(xué)學(xué)校培優(yōu)輔差計(jì)劃
評論
0/150
提交評論