ch4 數(shù)據(jù)庫的創(chuàng)建和使用 江蘇省二級 vfp ppt課件_第1頁
ch4 數(shù)據(jù)庫的創(chuàng)建和使用 江蘇省二級 vfp ppt課件_第2頁
ch4 數(shù)據(jù)庫的創(chuàng)建和使用 江蘇省二級 vfp ppt課件_第3頁
ch4 數(shù)據(jù)庫的創(chuàng)建和使用 江蘇省二級 vfp ppt課件_第4頁
ch4 數(shù)據(jù)庫的創(chuàng)建和使用 江蘇省二級 vfp ppt課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章 數(shù)據(jù)庫的創(chuàng)建和使用 4 1VFP數(shù)據(jù)庫概述4 2創(chuàng)建數(shù)據(jù)庫4 3數(shù)據(jù)庫的使用4 4VFP的數(shù)據(jù)字典 DataDictionary 4 5數(shù)據(jù)庫表4 6永久關(guān)系和參照完整性4 7操作數(shù)據(jù)庫及其對象的幾個常用函數(shù) 結(jié)束放映 YES 是 NO 否 數(shù)據(jù)庫是一個包容器 是許多相關(guān)的數(shù)據(jù)庫表的集合 是數(shù)據(jù)組織層次中目前已達(dá)到的最高級別 它包括數(shù)據(jù)表以及表之間的關(guān)系等 4 1VisualFoxPro數(shù)據(jù)庫 4 2創(chuàng)建數(shù)據(jù)庫 VFP數(shù)據(jù)庫的創(chuàng)建方法界面操作方式創(chuàng)建數(shù)據(jù)庫命令方式創(chuàng)建數(shù)據(jù)庫VFP數(shù)據(jù)庫的組成1 數(shù)據(jù)庫表2 本地視圖及遠(yuǎn)程視圖3 連接4 存儲過程 創(chuàng)建一個新的數(shù)據(jù)庫將生成三個文件 數(shù)據(jù)庫文件 dbc 關(guān)聯(lián)的數(shù)據(jù)庫備注文件 dct 和關(guān)聯(lián)的數(shù)據(jù)庫索引文件 dcx 4 3數(shù)據(jù)庫的使用 打開數(shù)據(jù)庫設(shè)置當(dāng)前數(shù)據(jù)庫使用數(shù)據(jù)庫中的表關(guān)閉數(shù)據(jù)庫刪除數(shù)據(jù)庫 數(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)程表的視圖 4 4VFP的數(shù)據(jù)字典 4 5數(shù)據(jù)庫表 數(shù)據(jù)庫表的字段擴(kuò)展屬性數(shù)據(jù)庫表的表屬性數(shù)據(jù)庫表的約束機(jī)制及其激活時機(jī)綜述數(shù)據(jù)庫表的索引數(shù)據(jù)庫表的添加與移去 數(shù)據(jù)庫表字段的擴(kuò)展屬性 引言字段的顯示屬性字段的格式 Format 字段的輸入掩碼 InputMask 字段的標(biāo)題 Caption 與注釋 Comment 字段驗(yàn)證規(guī)則字段驗(yàn)證規(guī)則 ruleexpression 字段驗(yàn)證信息 ruleexpressiontext 字段默認(rèn)值 defaultvalue 命令方法實(shí)現(xiàn)字段驗(yàn)證規(guī)則在數(shù)據(jù)庫中查看字段的擴(kuò)展屬性 在使用命令createtable sql創(chuàng)建表文件時 可以利用check子句 error子句和default子句設(shè)置字段的有效性規(guī)則 有效性信息和默認(rèn)值 在使用altertable sql命令修改表的結(jié)構(gòu)時 可以通過setcheck子句 setdefault子句設(shè)置字段的有效性規(guī)則 有效性信息和默認(rèn)值 刪除字段的有效性規(guī)則時 可以利用帶dropcheck子句的altertable sql命令 刪除字段的默認(rèn)值時 可以利用帶dropdefault子句的altertable sql命令 數(shù)據(jù)庫表的表屬性 長表名與表注釋表記錄的驗(yàn)證規(guī)則表記錄的驗(yàn)證信息表的觸發(fā)器 Trigger 觸發(fā)器的基本概念創(chuàng)建表的觸發(fā)器移去或刪除觸發(fā)器 相關(guān)表之間的參照完整性 參照完整性 RI 概念設(shè)置參照完整性參照完整性設(shè)置方法參照完整性規(guī)則VFP數(shù)據(jù)完整性綜述實(shí)體完整性參照完整性用戶自定義完整性 4 7操作數(shù)據(jù)庫及其對象的幾個常用函數(shù) DBC 函數(shù)與DBUSED 函數(shù)DBGETPROP 函數(shù)DBSETPROP 函數(shù) 1 一對多關(guān)系設(shè)有甲乙兩個表 如果甲表中的任意一個記錄在乙表中都有幾個記錄與之對應(yīng) 而乙表中的每個記錄在甲表中僅有一個記錄與之對應(yīng) 則稱甲乙兩個表之間存在一對多關(guān)系 并稱甲表為 一 表 或 主表 乙表為 多 表 或 子表 外部關(guān)鍵字首先必須是 一 表中存在的字段 外部關(guān)鍵字的值輸入到 多 表中的條件也必須是在 一 表中早已存在的 一般 將在 多 表中存在但在 一 表中不存在的記錄稱為 孤立記錄 表之間的關(guān)系 1 2 多對多關(guān)系遇到 多對多 的情況時 必須建立第三個表 把多對多的關(guān)系分解成兩個一對多關(guān)系 這第三個表就稱作 紐帶表 JunctionTable 因?yàn)樗趦杀碇g起著紐帶的作用 可以把兩個表的主關(guān)鍵字都放在這個紐帶表中 對于紐帶表 除了包含兩個外部關(guān)鍵字 即來自于學(xué)生表的主關(guān)鍵字Xh 學(xué)號 和課程表的主關(guān)鍵字Kcdh 課程代號 外 還可以有其他字段 如Cj 成績 字段 但允許沒有單個字段的主關(guān)鍵字 主關(guān)鍵字可以由兩個外部關(guān)鍵字組成 表之間的關(guān)系 2 3 一對一關(guān)系一對一關(guān)系是這樣一種關(guān)系 甲表的一個記錄在乙表中只能對應(yīng)一個記錄 而乙表中的一個記錄在甲表中也只能有一個記錄與之對應(yīng) 這種關(guān)系不經(jīng)常使用 因?yàn)樵谠S多情況下 兩個表的信息可以簡單地合并成一個表 出于一些原因 如字段項(xiàng)太多 不能合并的 可以建立一對一關(guān)系 只要把一個主關(guān)鍵字同時放到兩個表中 并以此建立一對一關(guān)系 表之間的關(guān)系 3 4 分析并確定表之間關(guān)系 表之間的關(guān)系 4 界面操作方式創(chuàng)建數(shù)據(jù)庫 在 項(xiàng)目管理器 中新建數(shù)據(jù)庫通過 新建 對話框新建數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫的命令 語法 CREATEDATABASE 說明 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ù)庫不會自動添加到項(xiàng)目管理器中 命令方式創(chuàng)建數(shù)據(jù)庫 從屬于某一個數(shù)據(jù)庫的表 稱為 數(shù)據(jù)庫表 也叫 相關(guān)表 1 前鏈和后鏈庫表與數(shù)據(jù)庫之間的相關(guān)性是通過表文件 DBF 與庫文件 DBC 之間的雙向鏈接實(shí)現(xiàn)的 雙向鏈接包括前鏈和后鏈 2 在數(shù)據(jù)庫中添加 新建和移去表在數(shù)據(jù)庫中添加表是指把自由表添加到數(shù)據(jù)庫中使之成為庫表 本質(zhì)上是建立了庫與表之間的雙向鏈接 新建數(shù)據(jù)庫表是指把新建的表直接創(chuàng)建成數(shù)據(jù)庫中的表 從數(shù)據(jù)庫中移去表是指把庫表從數(shù)據(jù)庫中釋放為自由表 本質(zhì)上是刪除了庫文件與表文件中的雙向鏈接信息 在數(shù)據(jù)庫中添加 新建和移去表的方法有多種 3 更新表和數(shù)據(jù)庫的鏈接如果移動了數(shù)據(jù)文件 DBC DCT和 DCX 或與數(shù)據(jù)庫關(guān) 數(shù)據(jù)庫表 1 聯(lián)的表文件 則這些文件的相對路徑會改變 可能會破壞已有的前鏈或后鏈 如將庫表XS由C盤移至A盤 由于表文件的移動引起庫文件中的前鏈被破壞 可使用命令VALIDATEDATABASERECOVER 更新相對路徑信息以重建前鏈 也可用USE命令打開表 系統(tǒng)會顯示 打開 對話框 允許重新定位該表所屬的數(shù)據(jù)庫或刪除鏈接 如果從磁盤中意外地刪除了某個數(shù)據(jù)庫文件 那么原來此數(shù)據(jù)庫中包含的表仍然保留對該數(shù)據(jù)庫引用的后鏈 這些表就不能再被添加到其他的數(shù)據(jù)庫中 這時就需要從表中刪除后鏈 其命令是 FREETABLE表文件名如 FREETABLEXS表被刪除了后鏈以后 便成為自由表 可再添加到其他的數(shù)據(jù)庫中 數(shù)據(jù)庫表 2 前鏈?zhǔn)潜4嬖跀?shù)據(jù)庫容器 DBC 中的有關(guān)表文件的路徑和文件名信息 它將數(shù)據(jù)庫與庫表文件相鏈接 前鏈指向數(shù)據(jù)庫中包含的表 它由各個表文件的相對路徑和文件名稱構(gòu)成 后鏈?zhǔn)谴娣旁谝粋€表的表頭中的數(shù)據(jù)庫的路徑和文件名 用以將自身與包含自身的數(shù)據(jù)庫容器相鏈接 后鏈指向擁有該表的數(shù)據(jù)庫 它由數(shù)據(jù)庫的相對路徑和數(shù)據(jù)庫名稱構(gòu)成 前鏈和后鏈 1 利用 項(xiàng)目管理器 在數(shù)據(jù)庫中添加 新建和移去表2 利用 數(shù)據(jù)庫設(shè)計器 在數(shù)據(jù)庫中添加 新建和移去表3 使用命令在數(shù)據(jù)庫中添加 移去表語法 ADDTABLE自由表表文件名 NAME長表名 功能 向數(shù)據(jù)庫中添加自由表 語法 REMOVETABLE表名 DELETE 功能 從數(shù)據(jù)庫中移去表 添加 新建和移去數(shù)據(jù)庫表的方法 例 OPENDATABASEjxsjEXCLUSIVEADDTABLExs 使用ADDTABLE命令往數(shù)據(jù)庫中添加表時 必須保證數(shù)據(jù)庫處于打開狀態(tài) REMOVETABLEXS 將XS表從數(shù)據(jù)庫中移出 若加上DELETE可選項(xiàng) 則不僅將XS從數(shù)據(jù)庫中移出 而且還把表文件從磁盤上刪除 一個表在同一時間內(nèi)只能屬于一個數(shù)據(jù)庫 如果所需要的數(shù)據(jù)表已隸屬于其他數(shù)據(jù)庫 則必須先從其他數(shù)據(jù)庫移去此表 使其成為自由表 然后才能將其添加到當(dāng)前數(shù)據(jù)庫中來 使用命令在數(shù)據(jù)庫中添加 移去表 一 表之間的關(guān)系二 表之間的永久關(guān)系1 永久關(guān)系 persistentrelationship 的概念2 永久關(guān)系的作用3 永久關(guān)系的建立4 刪除 編輯修改永久性關(guān)系 庫表之間的關(guān)系 永久關(guān)系是庫表之間的一種關(guān)系 不僅在運(yùn)行時存在 而且一直保留 擁有永久關(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)系中 兩個表必須都用主索引關(guān)鍵字 或標(biāo)識 或候選索引關(guān)鍵字 或標(biāo)識 永久關(guān)系 persistentrelationship 的概念 在 查詢設(shè)計器 和 視圖設(shè)計器 中 自動作為默認(rèn)聯(lián)接條件 作為表單和報表的默認(rèn)的關(guān)系 在 數(shù)據(jù)環(huán)境設(shè)計器 中顯示 用來存儲參照完整性信息 這是永久關(guān)系的主要作用 永久關(guān)系的作用 建立永久關(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 FOREIGNKEYxhTAGcjxhREFERENCExs ALTERTABLEcjADDFOREIGNKEYxh TAGcjxhREFERENCExs 永久關(guān)系的建立 刪除永久性關(guān)系在 數(shù)據(jù)庫設(shè)計器 中 單擊關(guān)聯(lián)連線后 該線變粗 此時 按 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)系 永久關(guān)系連線 拖放 永久關(guān)系連線 快捷菜單 編輯關(guān)系 對話框 引言 數(shù)據(jù)庫表的字段除了具有字段的基本屬性外 還含有自由表所沒有的擴(kuò)展屬性 包括字段的顯示格式 輸入掩碼 默認(rèn)值 標(biāo)題 注釋以及字段的驗(yàn)證規(guī)則和驗(yàn)證信息等 這些高級屬性都保存在庫表所在的數(shù)據(jù)庫文件中 字段的高級屬性都可以在數(shù)據(jù)庫表的 表設(shè)計器 中進(jìn)行設(shè)置 還可以用函數(shù)DBSETPROP 設(shè)置 打開數(shù)據(jù)庫表設(shè)計器和自由表設(shè)計器進(jìn)行比較 可看到二者之間的差別 字段的格式 字段的格式用于指定字段顯示時的格式 設(shè)置字段的顯示格式的方法與步驟 以JS表為例 如下 1 打開JS表設(shè)計器 2 選擇要加格式的字段 3 在格式框中鍵入格式內(nèi)容 如 設(shè)置JS表的JBGZ字段格式為 設(shè)置JS表的JBGZ字段格式為 L 設(shè)置JS表的CSRQ字段格式為 E 以上字段格式符號的意義見 字段格式表 字段的輸入掩碼用于指定字段中輸入數(shù)據(jù)的格式 設(shè)置字段輸入掩碼的方法與步驟如下 1 在表設(shè)計器中打開表 2 選擇要加輸入掩碼的字段 3 在 輸入掩碼 框中鍵入掩碼 如 為JS表的JBGZ字段設(shè)置掩碼為 9 999 99 JBGZ字段類型為N型 寬度為9 小數(shù)位為2 輸入掩碼的具體含義見 輸入掩碼表 字段的輸入掩碼 輸入掩碼表 字段標(biāo)題的作用是為了使表具有更好的可讀性 在取字段名時 為了在命令方式下更方便地使用字段 字段名常常采用簡練的形式 常用拼音字母代替漢字 如 出生日期 的字段名取為 CSRQ 在瀏覽時也以字段名作為列的標(biāo)題 不直觀 可讀形不好 利用數(shù)據(jù)庫表字段的標(biāo)題屬性 可以為字段設(shè)置一個含義明確的標(biāo)題 但標(biāo)題只是在瀏覽 顯示時起作用 并不能作為字段名用于表達(dá)式及命令中 字段注釋也是為了使表具有更好的可讀性 所以在注釋框中可以填入對字段的文字說明 字段的標(biāo)題與注釋 字段驗(yàn)證用來限定字段的取值及取值范圍 在所選字段的字段驗(yàn)證規(guī)則框內(nèi)鍵入一邏輯表達(dá)式 當(dāng)往字段中輸入數(shù)據(jù)并當(dāng)焦點(diǎn)離開該字段時 將數(shù)據(jù)代入邏輯表達(dá)式 若表達(dá)式的值為真則接受該數(shù)據(jù)作為該字段的值 否則拒絕將該數(shù)據(jù)作為該字段的值 如將JS表的JBGZ字段驗(yàn)證規(guī)則設(shè)為 JBGZ 500ANDJBGZ 2000當(dāng)關(guān)閉表設(shè)計器并保存對結(jié)構(gòu)的修改時 可以選擇用此規(guī)則對照現(xiàn)有的數(shù)據(jù)或不對照現(xiàn)有的數(shù)據(jù) 字段驗(yàn)證規(guī)則 在字段驗(yàn)證信息框中鍵入對驗(yàn)證規(guī)則的說明文本 當(dāng)字段值不滿足字段驗(yàn)證規(guī)則時將顯示該說明 如在上述JS表的JBGZ字段驗(yàn)證信息框中輸入文本 基本工資必須在500 2000之間 作為字符串常量必須加引號 當(dāng)在JBGZ字段中輸入2100時就會顯示信息 基本工資必須在500 2000之間 并拒絕接受2100作為JBGZ字段的值 該屬性為可選項(xiàng) 既字段可以有字段驗(yàn)證規(guī)則而沒有字段驗(yàn)證信息 當(dāng)出現(xiàn)違背字段驗(yàn)證規(guī)則的數(shù)據(jù)時 系統(tǒng)顯示默認(rèn)的信息 如 違反了字段JBGZ的驗(yàn)證規(guī)則 字段驗(yàn)證信息 當(dāng)向一個數(shù)據(jù)庫表中添加記錄時 為字段所指定的最初的值 稱為該字段的默認(rèn)值 如為JS表的JBGZ字段設(shè)置默認(rèn)值為800 則每次向JS表中追加新記錄時 JBGZ字段都已有數(shù)據(jù)800 如果沒有設(shè)置默認(rèn)值 則在追加新記錄時 各字段也有系統(tǒng)自動設(shè)置的默認(rèn)值 如下表所示 字段的默認(rèn)值 上述7個屬性均為數(shù)據(jù)庫表字段的擴(kuò)展屬性 這些屬性存儲為數(shù)據(jù)庫的一部分 而且只要表屬于該數(shù)據(jù)庫 它們就一定存在 而在VFP中數(shù)據(jù)庫實(shí)質(zhì)是一個表文件 可用USE命令打開查看 也可用DISPLAYDATABASE命令查看 例如 USEJXSJ DBCBROWSE或OPENDATABASEJXSJDISPLAYDATABASE 在數(shù)據(jù)庫中查看字段的擴(kuò)展屬性 如果為數(shù)據(jù)庫表設(shè)置了長表名屬性 則該數(shù)據(jù)庫表在各種選項(xiàng)卡 窗口中均以長表名代替表名 在打開數(shù)據(jù)庫表時 長表名與文件名可以同樣使用 例如 用表設(shè)計器為JS表設(shè)置長表名 TEACHER 以后打開該表可以有兩種方法 USEJS 此時表的別名為 JS USETEACHER 此時表的別名為 TEACHER 也可以在使用CREATETABLE命令創(chuàng)建表時 CREATETABLEB01NAMETAB01 F01C 3 長表名 NAME 在向表中輸入記錄時 當(dāng)兩個字段之間存在一定的關(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子句 ALTERTABLEJSSETCHECK js gl year date year js csrq 15 表記錄的驗(yàn)證規(guī)則 1 和字段級規(guī)則一樣 記錄級規(guī)則在記錄值改變時被激活 如果該記錄中的值沒有變化 則在移走記錄指針時 不檢查記錄級規(guī)則 因此可以自由地在記錄間移動指針 而系統(tǒng)卻不會檢查任何數(shù)據(jù) 如果修改了記錄 若沒有移動記錄指針 則在關(guān)閉 瀏覽 窗口時檢查記錄級規(guī)則 并對所發(fā)生的任何錯誤提出警告 然后才關(guān)閉 瀏覽 窗口 若記錄指針移離記錄時 立即檢查記錄級規(guī)則 并對所發(fā)生的任何錯誤提出警告 和字段級驗(yàn)證規(guī)則一樣 在設(shè)置結(jié)束時可以選擇是否用此規(guī)則對照現(xiàn)有的記錄 表記錄的驗(yàn)證規(guī)則 2 在記錄驗(yàn)證信息框中鍵入對驗(yàn)證規(guī)則的說明文本 當(dāng)記錄不滿足驗(yàn)證規(guī)則時將顯示該說明 如在上述JS表的記錄驗(yàn)證信息框中輸入文本 參加工作年齡必須大于15歲 作為字符串常量必須加引號 當(dāng)JS表中某記錄的CSRQ和GL字段不滿足這一條件時 就會顯示信息 參加工作年齡必須大于15歲 并拒絕接受該記錄 該屬性為可選項(xiàng) 即可以有記錄驗(yàn)證規(guī)則而沒有記錄驗(yàn)證信息 當(dāng)出現(xiàn)違背記錄驗(yàn)證規(guī)則的記錄時 系統(tǒng)顯示默認(rèn)的信息 如 違反了記錄驗(yàn)證規(guī)則 表記錄的驗(yàn)證信息 表的觸發(fā)器 是綁定在表上的表達(dá)式 當(dāng)表中任何記錄被指定的操作命令 插入 更新或刪除 修改時 在進(jìn)行其他所有檢查之后 例如有效性規(guī)則 主關(guān)鍵字的實(shí)施 以及null值的實(shí)施 被激活 表的觸發(fā)器是表在插入 更新或刪除記錄時進(jìn)行的檢驗(yàn)規(guī)則 可分為插入觸發(fā)器 更新觸發(fā)器和刪除觸發(fā)器 觸發(fā)器的基本概念 可使用 表設(shè)計器 或CREATETRIGGER命令來創(chuàng)建觸發(fā)器 插入觸發(fā)器 向表中插入或追加記錄時觸發(fā)該規(guī)則 更新觸發(fā)器 在表中修改記錄時觸發(fā)該規(guī)則 刪除觸發(fā)器 在表中刪除記錄時觸發(fā)該規(guī)則 上述觸發(fā)器的默認(rèn)設(shè)置是 T 創(chuàng)建觸發(fā)器的一個方法是 在表設(shè)計器中為觸發(fā)器設(shè)置一個邏輯表達(dá)式 其返回值是 真 T 或 假 F 如將JS表的刪除觸發(fā)器設(shè)置為GL 40 則JS表中只有GL大于40年的記錄才可以做邏輯刪除 另一個方法是用CREATETRIGGER命令 CREATETRIGGERONFOR INSERT UPDATE DELETEAS例 CREATETRIGGERONJSFORDELETEASJS GL 40 創(chuàng)建表的觸發(fā)器 在 表設(shè)計器 的 表 選項(xiàng)卡的 觸發(fā)器 區(qū)中 從 插入觸發(fā)器 更新觸發(fā)器 或 刪除觸發(fā)器 框里選定觸發(fā)器表達(dá)式 并刪除它 使用DELETETRIGGER命令 格式如下 DELETETRIGGERONFORDELETE INSERT UPDATE如果從數(shù)據(jù)庫中移去或刪除表 則所有屬于該表的觸發(fā)器都從數(shù)據(jù)庫中刪除 但是 由被移去或刪除的觸發(fā)器引用的存儲過程沒有刪除 移去或刪除觸發(fā)器 數(shù)據(jù)庫表的字段級和記錄級規(guī)則以及表的觸發(fā)器 為數(shù)據(jù)的輸入和修改實(shí)施了約束 庫表的約束機(jī)制及其激活時機(jī) 參照完整性 ReferentialIntegrity RI 是用來控制數(shù)據(jù)的完整性 尤其是控制數(shù)據(jù)庫中相關(guān)表之間的主關(guān)鍵字和外部關(guān)鍵字之間數(shù)據(jù)一致性的規(guī)則 數(shù)據(jù)一致性要求相關(guān)表之間滿足如下規(guī)則 1 子表中的每一個記錄在對應(yīng)的主表中必須有一個父記錄 否則子表中的記錄是 孤立記錄 2 在子表中插入記錄時 其外部關(guān)鍵字必須是父表主關(guān)鍵字值中的一個 3 在父表中刪除記錄時 與該記錄相關(guān)的子表中的記錄必須全部刪除 參照完整性的概念 設(shè)置參照完整性是利用數(shù)據(jù)庫表之間的永久關(guān)系 控制記錄如何在相關(guān)表中被插入 更新或刪除 參照完整性規(guī)則被設(shè)置在主表或子表的觸發(fā)器中 規(guī)則的代碼被保存在數(shù)據(jù)庫的存儲過程中 設(shè)置過程如下 在 數(shù)據(jù)庫設(shè)計器 中 用鼠標(biāo)右擊永久性關(guān)系聯(lián)線 出現(xiàn)快捷菜單 單擊其中的 編輯參照完整性 項(xiàng) 或者單擊 數(shù)據(jù)庫 菜單中的 編輯參照完整性 出現(xiàn) 參照完整性 生成器 VFP中的參照完整性規(guī)則包括更新規(guī)則 刪除規(guī)則和插入規(guī)則三種 參照完整性的設(shè)置 參照完整性規(guī)則表 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ù)完整性綜述 打開一個數(shù)據(jù)庫1 界面方式2 命令方式OPENDATABASE Database EXCLUSIVE SHARED NOUPDATE VALIDATE 2 打開多個數(shù)據(jù)庫正如表可以打開多個一樣 數(shù)據(jù)庫也可以打開多個 但不必在多個工作區(qū)打開 打開數(shù)據(jù)庫 打開多個數(shù)據(jù)庫的方法很簡單 只要多次使用打開一個數(shù)據(jù)庫的命令 例如 要同時打開三個數(shù)據(jù)庫DB1 DB2 DB3的命令是 OPENDATABASEDB1OPENDATABASEDB2OPENDATABASEDB3 所有打開的數(shù)據(jù)庫中 只有一個是當(dāng)前數(shù)據(jù)庫 在打開數(shù)據(jù)庫時 最后一個打開的數(shù)據(jù)庫為當(dāng)前數(shù)據(jù)庫 也可把其他打開的數(shù)據(jù)庫設(shè)置為當(dāng)前數(shù)據(jù)庫 1 在 常用 工具條的 數(shù)據(jù)庫 下拉列表中 顯示了所有已打開的數(shù)據(jù)庫 可以在列表中選擇一個作為當(dāng)前數(shù)據(jù)庫 2 用SETDATABASETO命令將某一已打開的數(shù)據(jù)庫設(shè)置為當(dāng)前數(shù)據(jù)庫 如 SETDATABASETODB2 3 與數(shù)據(jù)庫相關(guān)的兩個函數(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ù)庫 數(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ù)庫 要打開非當(dāng)前數(shù)據(jù)庫中的表 可以使用 符號 例如 USEjxsj xs也可以直接使用表文件名打開數(shù)據(jù)庫表 如 USEjs 使用數(shù)據(jù)庫中的表 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 CLOSEALL該命令除了不關(guān)閉 命令窗口 調(diào)試窗口 幫助 和 跟蹤窗口 外 將關(guān)閉所有的數(shù)據(jù)庫 表 索引以及各種設(shè)計器 包括項(xiàng)目管理器 并選擇工作區(qū)1 關(guān)閉數(shù)據(jù)庫 DBC 函數(shù)返回當(dāng)前打開數(shù)據(jù)庫的完整文件名 該函數(shù)無參數(shù) DBUSED 函數(shù)返回指定的數(shù)據(jù)庫文件是否已經(jīng)打開 如果打開 則函數(shù)的值為 T 否則為 F 語法 DBUSED 數(shù)據(jù)庫名 其中 數(shù)據(jù)庫名為字符表達(dá)式 語法 DBGETPROP cName cType

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論