程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> ACCESS:定義表之間的關系

ACCESS:定義表之間的關系

編輯:關於Access數據庫

      “關系”簡介

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

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

      當我們在“客戶信息表”和“訂單信息表”中建立這樣的關系以後,只需要看看“客戶信息表”,在不增加表內容的情況下,就可以看到所有客戶的信息及其所有“訂單”的情況,使這些數據一目了然。

    ACCESS:定義表之間的關系 三聯

      表之間的三種關系

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

      首先是“一對一”關系,比如下面的兩個表:某學校學生月副食補助:

      和某學校學生月助學金:

      我們降這兩個表中的數據進行匯總生成新的表:“某學校學生月實發金額匯總”:

      由於姓名字段可能會出現重復的情況,所以只有通過不可能出現重復的值的字段“學號”,才能將這兩個表唯一地聯系起來,保證“副食補貼”和“助學金”不至於錯誤地發放,這樣“月副食補助表”中的一個學號就只對應“月助學金”中的一個學號,絕對不會弄錯。這樣兩個表的關系很明顯就是“一對一”了。

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

      最後使“多對多”關系,我們知道,書店中有很多書,同時一種書也可以在很多書店裡找到。這時“書”和“書店”的關系就是“多對多”關系了。

      怎樣在表之間建立關系

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

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

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

      這個對話框可以幫助我們編輯所建立的關系,通過左面的列表框可以改變建立關系的兩個字段的來源。可以單擊“新建...”按鈕創建新的關系,或者單擊“聯接類型”為聯接選擇一種聯接類型。單擊“聯接類型”按鈕,在彈出的新對話框中選擇第三項,然後單擊“確定”按鈕就可以了。回到“編輯關系”對話框後單擊“創建”按鈕。

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

      “關系”與“子數據表”

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

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

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

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

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

      結束語:這一課通過“客戶信息表”和“訂單信息表”將表與表之間的“關系”展現在我們面前,如果你已經掌握了表的操作,那就開始看下一課;如果你還沒有完全掌握“表”,就將這四課再好好看一看,因為表是數據庫中最重要的一個部分了。

      實施參照完整性

      在我們建立表之間的關系時,窗口上有一個復選框“實施參照完整性”,單擊它之後,“級聯更新相關字段”和“級聯刪除相關字段”兩個復選框就可以用了。

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved