ACCESS:定義表之間的關系
來源:程序員人生 發布時間:2013-10-07 14:50:12 閱讀次數:3925次
“關系”簡介
在Access數據庫中不同表中的數據之間都存在一種關系這種關系將數據庫里各張表中的每條數據記錄都和數據庫中唯一的主題相聯系使得對一個數據的操作都成為數據庫的整體操作正所謂“牽一發而動全身”
就拿上幾課建立的表來說吧“客戶信息表”中的“公司名稱”和“訂單信息表”中的“訂貨單位”所包含的值有很多是相同的因為簽了訂單的“訂貨單位”肯定已經是公司的客戶了這些客戶的名稱也被記載在“客戶信息表”的“公司名稱”字段中當我們已知一個客戶的名稱時既可以通過“客戶信息表”知道它的“客戶信息”也可以通過“訂單信息表”了解它所簽訂的“訂單信息”所以說“公司名稱”作為紐帶將“客戶資料表”和“訂單信息表”中的相應字段信息連接在了一起為了把數據庫中表之間的這種數據關系體現出來Access提供一種建立表與表之間“關系”的方法用這種方法建立了關系的數據只需要通過一個主題就可以調出來使用非常方便
當我們在“客戶信息表”和“訂單信息表”中建立這樣的關系以后只需要看看“客戶信息表”在不增加表內容的情況下就可以看到所有客戶的信息及其所有“訂單”的情況使這些數據一目了然

表之間的三種關系
在建立表之間的關系前我們還是要提一下“關系”的三種類型“一對一”“一對多”和“多對多”在Access中可以在兩個表之間直接建立“一對一”和“一對多”關系而“多對多”關系則要通過“一對多”關系來實現我們分別來說說這三種“關系”
首先是“一對一”關系比如下面的兩個表某學校學生月副食補助

和某學校學生月助學金

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

由于姓名字段可能會出現重復的情況所以只有通過不可能出現重復的值的字段“學號”才能將這兩個表唯一地聯系起來保證“副食補貼”和“助學金”不至于錯誤地發放這樣“月副食補助表”中的一個學號就只對應“月助學金”中的一個學號絕對不會弄錯這樣兩個表的關系很明顯就是“一對一”了
下面來看看“一對多”關系在“客戶信息表”和“訂單信息表”中“訂單信息表”中的“訂貨單位”字段和“客戶信息表”中的“公司名稱”字段中的值都是一樣的其實只有那些訂貨了的單位才是公司的客戶所以這兩個表之間是靠客戶公司的名字聯系在一起的但是每個客戶都可以訂很多份訂單所以在“客戶信息表”中的一個“公司名稱”就能對應“訂單信息表”中的幾份“訂單”這樣的關系就是“一對多”
最后使“多對多”關系我們知道書店中有很多書同時一種書也可以在很多書店里找到這時“書”和“書店”的關系就是“多對多”關系了
怎樣在表之間建立關系
現在我們就開始在表之間建立“關系”首先單擊“工具”菜單下的“關系”命令彈出“關系”對話框上面還有一個“顯示表”對話框如下圖通過“顯示表”對話框可以把需要建立關系的“表”或“查詢”加到“關系”對話框中去

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

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

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

現在在兩個列表框間就出現了一條“折線”將“訂貨公司”和“公司名稱”兩個選項聯接在一起關閉“關系”對話框并保存對“關系”布局的修改在表間建立關系就是這樣的
“關系”與“子數據表”
打開“客戶信息表”你會發現這個表中增加了一些新的表它們是“客戶信息表”的子表也就是“訂單信息表”

在這種“一對多”的情況下完全可以通過“客戶信息表”中的“公司名稱”信息將這兩個表的內容都串起來在主表中的每一個記錄下面都會帶著一個甚至幾個子表中的“訂單”記錄具有“一對一”關系的兩個表之間互為對方的“子表”
通常在建立表之間的關系以后Access會自動在主表中插入子表但這些子表一開始都是不顯示出來的在Access中讓子表顯示出來叫做“展開”子數據表讓子表隱藏叫做將子數據表“折疊”展開的時候方便查閱訂單信息而折疊起來以后有可以比較方便的管理“客戶信息表”
要“展開”子數據表只要用鼠標單擊主表第一個字段前面一格對應記錄的子記錄就“展開”了并且格中的小方框內“加號”變成了“減號”如果再單擊一次就可以把這一格的子記錄“折疊”起來了小方框內的“減號”也變回“加號”如果主表很大的話這樣一個一個地“展開”和“折疊”子數據表就顯得太麻煩了Access為我們提供了一種操作方式它可以一下子“展開”或“折疊”當前數據表的所有子數據表打開一個帶有子數據表的表時在“格式”菜單“子數據表”項的子菜單中有三個命令“全部展開”“全部折疊”和“刪除”“全部展開”命令可以將主表中的所有子數據表都“展開”“全部折疊”命令可以將主表中的所有子數據表都“折疊”起來不需要在主表中顯示子數據表的這種方式來反映兩個表之間的“關系”時就可以使用“刪除”命令來把這種用子數據表顯示的方法刪除但這時兩個表的“關系”并沒有被刪除如果想恢復在主表上顯示“子數據表”的形式可以先打開主表比如“客戶信息表”單擊“插入”菜單下的“子數據表”命令彈出“插入子數據表”對話框如下圖

在列表框中選取“表”“訂單信息表”然后在“鏈接子字段”組合框中選取“訂貨單位”字段并在“鏈接主字段”組合框中選取“公司名稱”字段單擊“確定”按鈕就可以在主數據表“客戶信息表”中重新插入子數據表“訂單信息表”了必須要注意的是在任何一個數據表中插入子數據表都需要在兩個表之間建立“關系”如果這兩個表的“主鏈接字段”和“子鏈接字段”之間還沒有建立聯結的話在單擊“確定”按鈕插入“子數據表”的時候就會詢問是否要在這兩個表之間建立相應的“關系”只有建立“關系”以后才能完成“插入子數據表”過程用這樣的方式在表之間建立“關系”不像在“關系”對話框中建立的“關系”那樣直觀所以我們提倡在關系對話框中建立好表與表之間的“關系”由Access自動地創建子數據表
結束語這一課通過“客戶信息表”和“訂單信息表”將表與表之間的“關系”展現在我們面前如果你已經掌握了表的操作那就開始看下一課;如果你還沒有完全掌握“表”就將這四課再好好看一看因為表是數據庫中最重要的一個部分了
實施參照完整性
在我們建立表之間的關系時窗口上有一個復選框“實施參照完整性”單擊它之后“級聯更新相關字段”和“級聯刪除相關字段”兩個復選框就可以用了
如果選定“級聯更新相關字段”復選框則當更新父行(一對一一對多關系中“左”表中的相關行)時Access就會自動更新子行(一對一一對多關系中的“右”表中的相關行)選定“級聯刪除相關字段”后當刪除父行時子行也會跟著被刪除而且當選擇“實施參照完整性”后在原來折線的兩端會出現“”或“OO”符號在一對一關系中“”符號在折線靠近兩個表端都會出現而當一對多關系時“OO”符號則會出現在關系中的右表對應折線的一端上
設置了實施參照完整性就可以使我們在表中修改了一個記錄的時候不會影響到查詢的操作特別是在有很多表而且各個表之間都有關系聯接時“實施參照完整性”會帶來更多的方便
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈