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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論