明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ACCESS:定義表之間的關(guān)系

[摘要]“關(guān)系”簡介在Access數(shù)據(jù)庫中,不同表中的數(shù)據(jù)之間都存在一種關(guān)系,這種關(guān)系將數(shù)據(jù)庫里各張表中的每條數(shù)據(jù)記錄都和數(shù)據(jù)庫中唯一的主題相聯(lián)系,使得對一個數(shù)據(jù)的操...

  “關(guān)系”簡介

  在Access數(shù)據(jù)庫中,不同表中的數(shù)據(jù)之間都存在一種關(guān)系,這種關(guān)系將數(shù)據(jù)庫里各張表中的每條數(shù)據(jù)記錄都和數(shù)據(jù)庫中唯一的主題相聯(lián)系,使得對一個數(shù)據(jù)的操作都成為數(shù)據(jù)庫的整體操作,正所謂“牽一發(fā)而動全身”。

  就拿上幾課建立的表來說吧,“客戶信息表”中的“公司名稱”和“訂單信息表”中的“訂貨單位”所包含的值有很多是相同的。因?yàn)楹灹擞唵蔚?ldquo;訂貨單位”肯定已經(jīng)是公司的客戶了,這些客戶的名稱也被記載在“客戶信息表”的“公司名稱”字段中。當(dāng)我們已知一個客戶的名稱時,既可以通過“客戶信息表”知道它的“客戶信息”,也可以通過“訂單信息表”了解它所簽訂的“訂單信息”,所以說“公司名稱”作為紐帶將“客戶資料表”和“訂單信息表”中的相應(yīng)字段信息連接在了一起,為了把數(shù)據(jù)庫中表之間的這種數(shù)據(jù)關(guān)系體現(xiàn)出來,Access提供一種建立表與表之間“關(guān)系”的方法。用這種方法建立了關(guān)系的數(shù)據(jù)只需要通過一個主題就可以調(diào)出來使用,非常方便。

  當(dāng)我們在“客戶信息表”和“訂單信息表”中建立這樣的關(guān)系以后,只需要看看“客戶信息表”,在不增加表內(nèi)容的情況下,就可以看到所有客戶的信息及其所有“訂單”的情況,使這些數(shù)據(jù)一目了然。

ACCESS:定義表之間的關(guān)系 三聯(lián)

  表之間的三種關(guān)系

  在建立表之間的關(guān)系前,我們還是要提一下“關(guān)系”的三種類型“一對一”、“一對多”和“多對多”。在Access中,可以在兩個表之間直接建立“一對一”和“一對多”關(guān)系,而“多對多”關(guān)系則要通過“一對多”關(guān)系來實(shí)現(xiàn)。我們分別來說說這三種“關(guān)系”。

  首先是“一對一”關(guān)系,比如下面的兩個表:某學(xué)校學(xué)生月副食補(bǔ)助:

ACCESS:定義表之間的關(guān)系

  和某學(xué)校學(xué)生月助學(xué)金:

ACCESS:定義表之間的關(guān)系

  我們降這兩個表中的數(shù)據(jù)進(jìn)行匯總生成新的表:“某學(xué)校學(xué)生月實(shí)發(fā)金額匯總”:

ACCESS:定義表之間的關(guān)系

  由于姓名字段可能會出現(xiàn)重復(fù)的情況,所以只有通過不可能出現(xiàn)重復(fù)的值的字段“學(xué)號”,才能將這兩個表唯一地聯(lián)系起來,保證“副食補(bǔ)貼”和“助學(xué)金”不至于錯誤地發(fā)放,這樣“月副食補(bǔ)助表”中的一個學(xué)號就只對應(yīng)“月助學(xué)金”中的一個學(xué)號,絕對不會弄錯。這樣兩個表的關(guān)系很明顯就是“一對一”了。

  下面來看看“一對多”關(guān)系。在“客戶信息表”和“訂單信息表”中,“訂單信息表”中的“訂貨單位”字段和“客戶信息表”中的“公司名稱”字段中的值都是一樣的。其實(shí)只有那些訂貨了的單位才是公司的客戶,所以這兩個表之間是靠客戶公司的名字聯(lián)系在一起的。但是每個客戶都可以訂很多份訂單。所以在“客戶信息表”中的一個“公司名稱”就能對應(yīng)“訂單信息表”中的幾份“訂單”。這樣的關(guān)系就是“一對多”。

  最后使“多對多”關(guān)系,我們知道,書店中有很多書,同時一種書也可以在很多書店里找到。這時“書”和“書店”的關(guān)系就是“多對多”關(guān)系了。

  怎樣在表之間建立關(guān)系

  現(xiàn)在我們就開始在表之間建立“關(guān)系”,首先單擊“工具”菜單下的“關(guān)系”命令,彈出“關(guān)系”對話框,上面還有一個“顯示表”對話框如下圖,通過“顯示表”對話框可以把需要建立關(guān)系的“表”或“查詢”加到“關(guān)系”對話框中去。

ACCESS:定義表之間的關(guān)系

  將兩個表“客戶信息表”和“訂單信息表”都選中,單擊“添加”按鈕把它們都添加到“關(guān)系”對話框上,單擊“關(guān)閉”按鈕把“顯示表”對話框關(guān)閉。以后再需要打開它時,只要在“關(guān)系”對話框上單擊鼠標(biāo)右鍵,選擇“顯示表”命令就可以了。

ACCESS:定義表之間的關(guān)系

  在“關(guān)系”對話框中只有“客戶信息表”和“訂單信息表”的字段列表。怎么建立關(guān)系呢?其實(shí)表都是由字段構(gòu)成的,表之間的關(guān)系也由字段來聯(lián)系。讓不同表中的兩個字段建立聯(lián)系以后,表中的其他字段自然也就可以通過這兩個字段之間的關(guān)系聯(lián)系在一起了。也就是說在“客戶信息表”中的“公司名稱”和“訂單信息表”中的“訂貨單位”兩個字段之間建立關(guān)系就可以了。先在“客戶信息表”字段列表中選中“公司名稱”項,然后按住鼠標(biāo)左鍵并拖動鼠標(biāo)到“訂單信息表”中的“訂貨單位”項上,松開鼠標(biāo)左鍵,這時在屏幕上出現(xiàn)“編輯關(guān)系”對話框。

ACCESS:定義表之間的關(guān)系

  這個對話框可以幫助我們編輯所建立的關(guān)系,通過左面的列表框可以改變建立關(guān)系的兩個字段的來源?梢詥螕“新建...”按鈕創(chuàng)建新的關(guān)系,或者單擊“聯(lián)接類型”為聯(lián)接選擇一種聯(lián)接類型。單擊“聯(lián)接類型”按鈕,在彈出的新對話框中選擇第三項,然后單擊“確定”按鈕就可以了;氐“編輯關(guān)系”對話框后單擊“創(chuàng)建”按鈕。

ACCESS:定義表之間的關(guān)系

  現(xiàn)在在兩個列表框間就出現(xiàn)了一條“折線”,將“訂貨公司”和“公司名稱”兩個選項聯(lián)接在一起。關(guān)閉“關(guān)系”對話框,并保存對“關(guān)系”布局的修改。在表間建立關(guān)系就是這樣的。

  “關(guān)系”與“子數(shù)據(jù)表”

  打開“客戶信息表”,你會發(fā)現(xiàn)這個表中增加了一些新的表,它們是“客戶信息表”的子表,也就是“訂單信息表”。

ACCESS:定義表之間的關(guān)系

  在這種“一對多”的情況下,完全可以通過“客戶信息表”中的“公司名稱”信息將這兩個表的內(nèi)容都串起來。在主表中的每一個記錄下面都會帶著一個甚至幾個子表中的“訂單”記錄。具有“一對一”關(guān)系的兩個表之間互為對方的“子表”。

  通常在建立表之間的關(guān)系以后,Access會自動在主表中插入子表。但這些子表一開始都是不顯示出來的。在Access中,讓子表顯示出來叫做“展開”子數(shù)據(jù)表,讓子表隱藏叫做將子數(shù)據(jù)表“折疊”。展開的時候方便查閱訂單信息,而折疊起來以后有可以比較方便的管理“客戶信息表”。

  要“展開”子數(shù)據(jù)表,只要用鼠標(biāo)單擊主表第一個字段前面一格,對應(yīng)記錄的子記錄就“展開”了,并且格中的小方框內(nèi)“加號”變成了“減號”。如果再單擊一次,就可以把這一格的子記錄“折疊”起來了,小方框內(nèi)的“減號”也變回“加號”。如果主表很大的話,這樣一個一個地“展開”和“折疊”子數(shù)據(jù)表就顯得太麻煩了,Access為我們提供了一種操作方式,它可以一下子“展開”或“折疊”當(dāng)前數(shù)據(jù)表的所有子數(shù)據(jù)表。打開一個帶有子數(shù)據(jù)表的表時,在“格式”菜單“子數(shù)據(jù)表”項的子菜單中,有三個命令“全部展開”、“全部折疊”和“刪除”,“全部展開”命令可以將主表中的所有子數(shù)據(jù)表都“展開”,“全部折疊”命令可以將主表中的所有子數(shù)據(jù)表都“折疊”起來。不需要在主表中顯示子數(shù)據(jù)表的這種方式來反映兩個表之間的“關(guān)系”時,就可以使用“刪除”命令來把這種用子數(shù)據(jù)表顯示的方法刪除。但這時兩個表的“關(guān)系”并沒有被刪除。如果想恢復(fù)在主表上顯示“子數(shù)據(jù)表”的形式,可以先打開主表,比如“客戶信息表”,單擊“插入”菜單下的“子數(shù)據(jù)表”命令,彈出“插入子數(shù)據(jù)表”對話框如下圖:

ACCESS:定義表之間的關(guān)系

  在列表框中選取“表”----“訂單信息表”,然后在“鏈接子字段”組合框中選取“訂貨單位”字段,并在“鏈接主字段”組合框中選取“公司名稱”字段,單擊“確定”按鈕就可以在主數(shù)據(jù)表“客戶信息表”中重新插入子數(shù)據(jù)表“訂單信息表”了。必須要注意的是在任何一個數(shù)據(jù)表中插入子數(shù)據(jù)表都需要在兩個表之間建立“關(guān)系”,如果這兩個表的“主鏈接字段”和“子鏈接字段”之間還沒有建立聯(lián)結(jié)的話,在單擊“確定”按鈕插入“子數(shù)據(jù)表”的時候就會詢問是否要在這兩個表之間建立相應(yīng)的“關(guān)系”,只有建立“關(guān)系”以后,才能完成“插入子數(shù)據(jù)表”過程。用這樣的方式在表之間建立“關(guān)系”不像在“關(guān)系”對話框中建立的“關(guān)系”那樣直觀。所以我們提倡在關(guān)系對話框中建立好表與表之間的“關(guān)系”,由Access自動地創(chuàng)建子數(shù)據(jù)表。

  結(jié)束語:這一課通過“客戶信息表”和“訂單信息表”將表與表之間的“關(guān)系”展現(xiàn)在我們面前,如果你已經(jīng)掌握了表的操作,那就開始看下一課;如果你還沒有完全掌握“表”,就將這四課再好好看一看,因?yàn)楸硎菙?shù)據(jù)庫中最重要的一個部分了。

  實(shí)施參照完整性

  在我們建立表之間的關(guān)系時,窗口上有一個復(fù)選框“實(shí)施參照完整性”,單擊它之后,“級聯(lián)更新相關(guān)字段”和“級聯(lián)刪除相關(guān)字段”兩個復(fù)選框就可以用了。

  如果選定“級聯(lián)更新相關(guān)字段”復(fù)選框,則當(dāng)更新父行(一對一、一對多關(guān)系中“左”表中的相關(guān)行)時,Access就會自動更新子行(一對一、一對多關(guān)系中的“右”表中的相關(guān)行),選定“級聯(lián)刪除相關(guān)字段”后,當(dāng)刪除父行時,子行也會跟著被刪除。而且當(dāng)選擇“實(shí)施參照完整性”后,在原來折線的兩端會出現(xiàn)“1”或“OO”符號,在一對一關(guān)系中“1”符號在折線靠近兩個表端都會出現(xiàn),而當(dāng)一對多關(guān)系時“OO”符號則會出現(xiàn)在關(guān)系中的右表對應(yīng)折線的一端上。

  設(shè)置了實(shí)施參照完整性就可以使我們在表中修改了一個記錄的時候,不會影響到查詢的操作。特別是在有很多表,而且各個表之間都有關(guān)系聯(lián)接時,“實(shí)施參照完整性”會帶來更多的方便。

ACCESS:定義表之間的關(guān)系

Microsoft Access在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門。