第7章數(shù)據(jù)庫與多表操作_第1頁
第7章數(shù)據(jù)庫與多表操作_第2頁
第7章數(shù)據(jù)庫與多表操作_第3頁
第7章數(shù)據(jù)庫與多表操作_第4頁
第7章數(shù)據(jù)庫與多表操作_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、7.1 關系數(shù)據(jù)庫的基礎知識7.1.1 基本概念1. 關鍵字、主關鍵字、組合關鍵字與候選關鍵字 關系表中,其值可以唯一地標識一條記錄的字段稱為關鍵字。如果幾個字段的值組合后可以唯一地標識一條記錄,則這幾個字段就稱為組合關鍵字。表中可能有多個關鍵字,選取表中的一個關鍵字作為對該表進行各種操作時,用以區(qū)別每條記錄的唯一性標志,并作為該表與其他表實現(xiàn)關聯(lián)的關鍵字,則該關鍵字稱為主關鍵字或主碼。其他的關鍵字,稱為候選關鍵字。2. 數(shù)據(jù)之間的聯(lián)系類型 一對多關系;多對多關系;一對一關系。7.1.2 數(shù)據(jù)庫的設計1. 1. 數(shù)據(jù)庫表之間的聯(lián)系與外部關鍵字數(shù)據(jù)庫表之間的聯(lián)系與外部關鍵字 表與表之間是一對多的

2、聯(lián)系:實現(xiàn)該聯(lián)系需將父表中的主關鍵字放入子表當中,以實現(xiàn)兩表之間的有效關聯(lián)。 表1與表2之間是多對多的聯(lián)系:實現(xiàn)該聯(lián)系需另外增加一個新表,這個表稱為“關聯(lián)表”,其中包括表1和表2的主關鍵字,并且加進兩表之間的關聯(lián)字段。 表與表之間是一對一的聯(lián)系:實現(xiàn)該聯(lián)系需要根據(jù)實際情況而定,設計時可以分為兩個表或合并為一個表。u外部關鍵字 在一對多的關系表中,子表中的某一字段是父表的主關鍵字,則該字段稱為子表的外部關鍵字或外碼。u數(shù)據(jù)庫表、自由表 屬于數(shù)據(jù)庫的表稱為數(shù)據(jù)庫表;獨立存在、不與任何數(shù)據(jù)庫相關聯(lián)的表稱為自由表。2. 2. 關系數(shù)據(jù)庫的完整性關系數(shù)據(jù)庫的完整性 實體完整性。實體完整性是指一個表中主關

3、鍵字的取值必須是確定的、唯一的,不允許為null值。 參照完整性。數(shù)據(jù)庫的參照完整性是指在“子表”當中實現(xiàn)關聯(lián)的外部關鍵字,它的取值或者為“空”值、或者為“父表”中實現(xiàn)相應關聯(lián)的主關鍵字值的子集。 用戶自定義完整性。這部分是由實際應用環(huán)境當中的用戶需求決定的。通常為某個字段的取值限制、多個字段之間取值的條件等。7.2 數(shù)據(jù)庫的基本操作7.2.1 建立數(shù)據(jù)庫 建立數(shù)據(jù)庫主要有如下三種方法:1. 在“新建”菜單中建立數(shù)據(jù)庫2. 在項目管理器中建立數(shù)據(jù)庫3. 使用命令建立數(shù)據(jù)庫命令格式:Create Database 數(shù)據(jù)庫名 / ?例如,要創(chuàng)建學生“學籍”數(shù)據(jù)庫,可以使用以下命令:7.2.2 數(shù)據(jù)

4、庫設計器 打開數(shù)據(jù)庫設計器的方法有以下三種:打開數(shù)據(jù)庫設計器的方法有以下三種:1. 1. 從項目管理器中打開數(shù)據(jù)庫設計器從項目管理器中打開數(shù)據(jù)庫設計器2. 2. 從打開菜單中打開數(shù)據(jù)庫設計器從打開菜單中打開數(shù)據(jù)庫設計器3.3. 用命令打開數(shù)據(jù)庫設計器用命令打開數(shù)據(jù)庫設計器 打開數(shù)據(jù)庫設計器的命令的語法格式如下: MODIFY DATABASE 文件名 / ? NOWAIT NOEDIT 7.2.3 數(shù)據(jù)庫的基本操作1. 1. 打開數(shù)據(jù)庫打開數(shù)據(jù)庫打開數(shù)據(jù)庫的方式也有三種:在“項目管理器”中打開已存在的數(shù)據(jù)庫:從“打開”對話框打開數(shù)據(jù)庫:使用命令方式打開數(shù)據(jù)庫。格式:OPEN DATABASE

5、文件名 / ?2. 2. 關閉數(shù)據(jù)庫關閉數(shù)據(jù)庫關閉數(shù)據(jù)庫一般有兩種方性:是在項目管理器中關閉數(shù)據(jù)庫二是用命令方式關閉數(shù)據(jù)庫格式:CLOSE DATABASES ALL功能:不帶選項:表示關閉當前數(shù)據(jù)庫和表。帶“ALL”:表示關閉當前打開的數(shù)據(jù)庫和數(shù)據(jù)庫表、自由表及索引文件等。3. 在打開的多個數(shù)據(jù)庫間切換在打開的多個數(shù)據(jù)庫間切換 Visual FoxPro在同一時刻可以打開多個數(shù)據(jù)庫,但在同一時刻只有一個當前數(shù)據(jù)庫。也就是說,所有作用于數(shù)據(jù)庫的命令或函數(shù)是對當前數(shù)據(jù)庫而言的。 指定當前數(shù)據(jù)庫的命令是: SET DATABASE TO DatabaseName 4. 4. 修改數(shù)據(jù)庫修改數(shù)據(jù)庫使

6、用“項目管理器”修改數(shù)據(jù)庫使用命令修改一個數(shù)據(jù)庫格式: MODIFY DATABASE 數(shù)據(jù)庫名 / ? NOWAIT NOEDIT例如,要修改學生“學籍”數(shù)據(jù)庫,可用命令: MODIFY DATABASE 學籍5. 5. 刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫在“項目管理器”中刪除數(shù)據(jù)庫使用命令刪除數(shù)據(jù)庫例如,要刪除學生“學籍”數(shù)據(jù)庫,可用命令: DELETE DATABASE 學籍7.2.4 數(shù)據(jù)庫表和自由表的相互轉換1. 概念概念數(shù)據(jù)庫表:已加入到某個數(shù)據(jù)庫中的表。自由表:不屬于任何數(shù)據(jù)庫的表。2. 將表加入到數(shù)據(jù)庫將表加入到數(shù)據(jù)庫為了把一個已存在的表加入到數(shù)據(jù)庫,可從“數(shù)據(jù)庫”菜單中選擇“添加表”,或者

7、單擊工具欄中的“添加表”按鈕。 使用命令方式 格式:ADD TABLE 表名 / ? 長表名 例如,打開“學籍”數(shù)據(jù)庫,并向其中添加表“學生.DBF”: ADD TABLE 學生3. 從數(shù)據(jù)庫中移出表從數(shù)據(jù)庫中移出表從“數(shù)據(jù)庫”菜單中選擇“移出表”,或者單擊工具欄中的“移出表”按鈕。使用REMOVE TABLE命令。格式: REMOVE TABLE 表名 / ? DELETE RECYCLE 例如,打開“學籍”數(shù)據(jù)庫,并將其中的表“學生.DBF”移出: REMOVE TABLE 學生4. 刪除表文件刪除表文件使用DROP TABLE命令刪除表文件格式: DROP TABLE 表名 / 文件名

8、/ ? RECYCLE 7.2.5 工作區(qū)1 工作區(qū)工作區(qū) 工作區(qū)是Visual FoxPro在內存中開辟的臨時區(qū)域。用戶可以在不同的工作區(qū)中打開多個不同的表,并且可以利用多種方法訪問不同工作區(qū)中的表。工作區(qū)及工作區(qū)編號 每一個工作區(qū)都有一個編號區(qū)域,它標識一個已打開的表。Visual FoxPro中最多允許使用32767個工作區(qū),可以用工作區(qū)編號1、2、3、4、32767來標識。當前工作區(qū)及當前表 當前正在操作的工作區(qū)為當前工作區(qū),稱在當前工作區(qū)中打開的表文件為當前表。當前工作區(qū)是可變的,可以根據(jù)需要選擇任意一個工作區(qū)做為當前工作區(qū)。工作區(qū)的別名 給工作區(qū)取一個除工作區(qū)編號外的名字,它可以用

9、來標識一個工作區(qū)。每個工作區(qū)都有兩個等效的別名,一種是系統(tǒng)固有指定的,另一種是用戶自己定義的(表別名)。通過別名可以引用在工作區(qū)中打開的表。 指定在一個工作區(qū)中打開的表時,可以使用下列命令為該表定義一個別名: USE ALIAS 如果省略 ALIAS ,則該工作區(qū)的用戶自己定義默認別名為表文件名。 如果打開表時沒有指定別名,或別名發(fā)生沖突時,Visual FoxPro自動指定表的別名。系統(tǒng)固有指定的別名為:A、B、C、D、J,分別對應工作區(qū)1、2、3、4、10。工作區(qū)的選擇及當前工作區(qū)的轉換使用SELECT命令可以選擇或轉換當前工作區(qū)。格式:SELECT / 功能:帶表示激活指定該工作區(qū),帶表

10、示激活表別名代表的表打開時所用的工作區(qū)。 工作區(qū)之間的聯(lián)訪指系統(tǒng)在當前工作區(qū)訪問另一個工作區(qū)中表內容(字段)的一種聯(lián)系形式。工作區(qū)之間的聯(lián)訪是通過工作區(qū)的別名實現(xiàn)的。即用別名限制訪問的對象。具體訪問的格式如下: . 或 - 2 工作區(qū)使用規(guī)則工作區(qū)使用規(guī)則在一個工作區(qū)內只能存在一個打開的表文件;當前工作區(qū)只有一個,對非當前工作區(qū)中的表文件進行操作時,必須采取引用的方式(別名.字段名或別名-字段名);每個工作區(qū)中的表文件都有自己獨立的記錄指針;一個表文件能在多個工作區(qū)中打開;指定工作區(qū)可以使用命令: SELECT / USE IN / 由系統(tǒng)指定當前可用的最小號工作區(qū)可以使用: SELECT 0

11、 或 USE IN 03 工作區(qū)操作示例工作區(qū)操作示例7.2.6 建立表間的關聯(lián)1. 表間的永久關系表間的永久關系在數(shù)據(jù)庫表間建立永久關系 建立永久關系的目的是:l為實現(xiàn)參照完整性提供依據(jù);l在查詢設計器、視圖設計器中,作為默認連接條件;l在數(shù)據(jù)庫設計器、數(shù)據(jù)環(huán)境設計器中直接顯示為表索引之間的連線,作為表單和報表之間的默認關系;建立永久性關聯(lián)的方法:可以通過“數(shù)據(jù)庫設計器”建立永久關系 例如,要建立“學生”表和“成績”表之間的永久性關系,假定兩表已建索引,使用如下命令: ALTER TABLE 成績 ADD FOREIGN KEY 學號 TAG 學號 REFERENCES 學生刪除表間的永久性

12、關聯(lián) 通過“數(shù)據(jù)庫設計器” 刪除永久關系: 在“數(shù)據(jù)庫設計器”中,用鼠標單擊連接線使線條變粗(說明已被選中),再按鍵盤的DELETE 鍵即可。 使用命令刪除永久性關聯(lián): 例如,要刪除“學生”表和“成績”表之間的永久性關系 ALTER TABLE 成績 DROP FOREIGN KEY TAG 學號 SAVE2. 表之間的臨時關系表之間的臨時關系 表間的永久性關系并不能使子表的記錄指針隨父表的記錄指針產(chǎn)生聯(lián)動,而這一特性又是實際應用當中非常有用的,建立表間的臨時關系可以達到這一目的。在建立了表間的臨時關系后,父表可以控制子表。當在父表中移動記錄指針時,子表中的記錄指針也作相應移動。 創(chuàng)建表間的臨

13、時性關聯(lián)通過以下兩種方法可以創(chuàng)建表間的臨時性關聯(lián):通過“數(shù)據(jù)工作期”窗口創(chuàng)建表間的臨時性關聯(lián) 通過命令SET RELATION也可創(chuàng)建表間的臨時性關聯(lián)命令格式:SET RELATION TO INTO ,INTO IN ADDITIVE 在建立臨時關系之前,子表必須先建立與相匹配的結構復合索引(.CDX)或獨立索引(.IDX)。 例如,在“學生”表與“成績”表間建立臨時關系,假定“學生”表尚未建立了任何索引文件,則命令代碼如下: USE 成績 IN 1 USE 學生 IN 2 SELECT 成績 INDEX ON 學號 TO ICJ SELECT 學生 SET RELATION TO 學號 I

14、NTO 成績 這時打開“瀏覽”窗口,同時瀏覽“學生”表和“成績”表,改變學生表中的當前記錄,可以看到“成績”表瀏覽窗口中只顯示相關聯(lián)的記錄。解除表之間的臨時性關聯(lián)命令格式: SET RELATION OFF INTO 例如,要解除上述實例中已經(jīng)建立的關聯(lián),命令代碼如下: USE 學生 IN 2 USE 成績 IN 1 SELECT 學生 SET RELATION OFF INTO 成績 也可以使用不帶任何參數(shù)的SET RELATION TO命令,將當前工作區(qū)中的所有關系解除。7.3 有效性、觸發(fā)器與參照完整性7.3.1有效性1. 表的字段級屬性 定義長字段名 設置字段標題 設置字段注解 建立輸

15、入掩碼 設置字段的默認值 字段級有效性規(guī)則2. 數(shù)據(jù)庫表的其他屬性數(shù)據(jù)庫表的其他屬性長表名 數(shù)據(jù)庫表可以使用長達128個字符的名稱,作為數(shù)據(jù)庫引用該表的名稱。表的記錄級有效性規(guī)則 表的記錄級有效性規(guī)則可以在同一條記錄的多個字段間進行比較,完成有效性規(guī)則的約束。7.3.2 觸發(fā)器1. 觸發(fā)器觸發(fā)器是建立在表上的表達式,當表中的任何記錄被指定的操作命令修改時,在執(zhí)行了字段級、記錄級、主關鍵字等有效性檢查后,觸發(fā)器被激活。 利用觸發(fā)器的工作原理,可以完成特殊的數(shù)據(jù)檢驗、參照完整性實施及數(shù)據(jù)庫更新的維護操作等許多功能。觸發(fā)器分為插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器三種,分別對應于數(shù)據(jù)庫表記錄的插入、更新

16、和刪除操作。2. 創(chuàng)建觸發(fā)器 以創(chuàng)建“插入觸發(fā)器”為例,“插入觸發(fā)器”就是當向表中插入或 追加記錄時,將執(zhí)行對應該觸發(fā)器的一段程序或過程。3. 刪除、移出觸發(fā)器 直接在“表設計器”的觸發(fā)器框中,刪除指定的觸發(fā)器即可。 使用如下命令也可實現(xiàn): DELETE TRIGGER 學生 FOR INSERT如果從數(shù)據(jù)庫中移去或刪除表,則所有屬于該表的觸發(fā)器都從數(shù)據(jù)庫中刪除。4. 修改觸發(fā)器直接在“表設計器”的觸發(fā)器框中輸入新的表達式即可。7.3.3 參照完整性實現(xiàn)1. 參照完整性規(guī)則參照完整性規(guī)則 參照完整性規(guī)則主要為了保證數(shù)據(jù)庫表中數(shù)據(jù)的有效性和一致性,防止出現(xiàn)下列問題: ,造成子表中出現(xiàn)“孤立”記錄。 當父表中沒有關聯(lián)記錄時,將記錄添加到相關子表中; 改變父表關鍵字值,而子表未作相應的改變; 刪除父表記錄,而子表未作相應的改變。 利用“參照完整性生成器”能很好地實施參照完整性規(guī)則的類型、規(guī)則實施表等。當更改或刪除父表記錄時,“參照完整性生成器”自動完成相關子表中的記錄的級聯(lián)操作。2. 實現(xiàn)

溫馨提示

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

評論

0/150

提交評論