套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

移除不必要的資料 (重複的資料),是理想資料庫設計的其中一項目標。 為達成此目的,您可以將資料分割成許多不同主題的資料表,讓每項事實只呈現一次。 然後,您可以為 Access 提供一種將分割的資訊重新組合在一起的方法 — 您可以透過將公共欄位放在相關的表格中來做到這一點。 但若要能夠正確地執行此步驟,必須先了解資料表之間的關聯,才能在資料庫中指定這些關聯。

本文內容

簡介

在資料庫中為每個主題建立表格之後,您必須為 Access 提供一種方法,以便在需要時將該資訊重新整合在一起。 您可以在相關的資料表中放入共同欄位,同時定義不同資料表間的關聯以達成此目的。 接著您可以建立查詢、表單及報表,藉此同時顯示不同資料表的資訊。 舉例來說,此處所示的表單包含了來自數個資料表的資訊:

同時顯示取自五個資料表之相關資訊的訂單表單

1. 此表單的資訊來自 [客戶] 資料表...

2. ...[訂單] 資料表...

3. ...[產品] 資料表 ...

4. ...及 [訂單詳細資料] 資料表。

[付款人] 方塊中的 [客戶名稱] 是來自 [客戶] 資料表,[訂單識別碼] 和 [訂單日期] 的值來自 [訂單] 資料表,[產品名稱] 來自 [產品] 資料表,[單價] 與 [數量] 的值則來自 [訂單詳細資料] 資料表。 這些資料表會以各種方式互相連結,以便將資訊從各個資料表帶入此表單。

前述範例的資料表各欄位必須經過調整,才會顯示同筆訂單的資訊。 您可以利用資料表關聯進行此項調整。 資料表關聯會比對兩個資料表內,名稱相同之索引鍵欄位內的資料。 在大部分情況下,這些相符的欄位通常是某個資料表的主索引鍵 (提供每筆記錄的唯一識別碼),在其他資料表中則是外部索引鍵。 例如員工可以藉由建立 [員工] 資料表與 [訂單] 資料表之 [員工識別碼] 欄位間的關聯,而與其所負責的訂單建立關聯。

[員工識別碼] 用來當做 [員工] 資料表中的主索引鍵和 [訂單] 資料表中的外部索引鍵。

1. [員工識別碼] 在兩個資料表中出現時,一個會用為主索引鍵...

2. ...另一個用為外部索引鍵。

頁面頂端

資料表關聯的類型

Access中有三種類型的表關係。

  • 一對多關聯

    讓我們以包含 Customers 資料表和 Orders 資料表的訂單追蹤資料庫為例。 客戶可以下許多筆訂單。 所以 [客戶] 資料表中的每位客戶在 [訂單] 資料表中可能會有很多筆訂單。 因此,[客戶] 資料表和 [訂單] 資料表之間的關聯就會是一對多關聯。

    若要在資料庫設計中表示一對多關聯,可以將「單端」關聯的主索引鍵,新增到「多端」關聯的資料表中做為其欄位。 以此案例為例,您可以將新欄位 (即 [客戶] 資料表中的 [識別碼] 欄位) 加入 [訂單] 資料表,然後將其命名為「客戶識別碼」。 然後Access 可以使用「訂單」表格中的客戶 ID 號碼來尋找每個訂單的正確客戶。

  • 多對多關聯

    現在讓我們看看 Products 資料表和 Orders 資料表之間的關係。 單筆訂單可以包含多項產品。 另一方面,單項產品也可以出現在許多訂單上。 因此,[訂單] 資料表的每一筆記錄,在 [產品] 資料表中都可以包含許多筆記錄。 而 [產品] 資料表的每一筆記錄,在 [訂單] 資料表中也都可以有許多筆記錄。 此關係稱為多對多關聯。 請注意,若要偵測資料表之間現有的多對多關聯,必須同時考量關聯的兩端。

    若要表示多對多關聯,必須建立稱為連接資料表的第三個資料表,將多對多關聯分成兩個一對多關聯。 將兩個資料表中的主索引鍵都插入到第三個資料表。 如此一來,第三個資料表就會記錄關聯中每一個出現的項目或執行個體。 例如,[訂單] 資料表及 [產品] 資料表具有多對多關聯,這種關聯是藉由建立兩個與 [訂單詳細資料] 資料表的一對多關聯來定義。 一個訂單可以含有多項產品,而每項產品可以出現在多筆訂單上。

  • 一對一關聯

    在一對一關聯中,第一個資料表的每一筆記錄在第二個資料表中只能有一筆相符的記錄,而第二個資料表中的每一筆記錄在第一個資料表中也只能有一筆相符的記錄。 這種類型的關聯並不常見,因為以這種方式所產生的資訊通常會儲存在同一個資料表。 基於安全考量,您可以使用一對一關聯將一個含有許多欄位的資料表分成幾個獨立的部分資料表,或者使用一對一關聯儲存只適用於主資料表子集的資訊。 當您真正辨識出這類關聯時,兩個資料表必須共用一個共同欄位。

頁面頂端

為何需要建立資料表關聯?

您可以使用 [資料庫關聯圖] 視窗明確地建立資料表關聯,也可從 [欄位清單] 窗格拖曳欄位以達成此目的。 Access 使用資料表關聯性來決定當您需要在資料庫物件中使用資料表時如何聯結資料表。 以下是您在建立其他資料庫物件 (如表單、查詢及報表) 之前,必須先建立資料表關聯的理由。

  • 資料表關聯會影響您的查詢設計

    若要使用多個資料表的記錄,通常必須建立連接數個資料表的查詢。 執行查詢時,會將第一個資料表的主索引鍵欄位值,與第二個資料表的外部索引鍵欄位值進行比對。 例如,若要傳回列有每位客戶之所有訂單的資料列,必須建立以 [客戶識別碼] 欄位為基礎的查詢,藉此連接 [客戶] 資料表與 [訂單] 資料表。 您可以在 [資料庫關聯圖] 視窗中手動指定要連接的欄位。 但是,如果您已經在資料表之間定義了關聯性, Access 會根據現有的資料表關聯性提供預設聯結。 此外,如果您使用其中一個查詢精靈, Access 會使用從您已定義的資料表關聯性收集的資訊,為您提供明智的選擇,並使用適當的預設值預先填入內容設定。

  • 資料表關聯會影響您的表單和報表設計

    當您設計表單或報表時, Access 會使用從您已定義的資料表關聯性收集的資訊,為您提供明智的選擇,並使用適當的預設值預先填入屬性設定。

  • 資料表關聯是用來執行強迫參考完整性、避免資料庫中發生記錄孤立的基礎。 孤立記錄是指所參考的記錄已經不存在的記錄,例如參考到某個不存在之客戶記錄的訂單記錄,就是一個孤立記錄。

    設計資料庫時,您會將所有資訊分成幾個資料表,且每一個資料表都有一個主索引鍵。 接著在參考這些主索引鍵的關聯資料表中新增外部索引鍵。 這些成對的外部索引鍵與主索引鍵是資料表關聯與多重資料表查詢的基礎。 這些外鍵主鍵引用保持同步非常重要。 參考完整性可以確保讓這些參考保持同步,而且必須依據資料表關聯。

頁面頂端

了解參考完整性

設計資料庫時,可以將資料庫資訊分成許多不同主題的資料表,藉此盡量避免資料重複。 然後,您可以 Access 一種將通用欄位放入相關表格中,將資料重新組合在一起的方法。 例如,若要表示一對多關聯,可以將「單端」的資料表主索引鍵,新增到「多端」的資料表中做為額外欄位。 為了將資料重新組合在一起, Access 會取得「許多」資料表中的值,並在「一個」資料表中查詢對應的值。 如此一來,「多端」資料表中的值即會參考「單端」資料表中對應的值。

假設 [貨運公司] 和 [訂單] 資料表之間存在一對多關聯,而您想要刪除某一家貨運公司的記錄。 如果想要刪除的貨運公司在 [訂單] 資料表中有一些訂單記錄,則當您將該貨運公司的記錄從 [貨運公司] 資料表中刪除之後,這些訂單記錄便會變成「孤立」記錄。 這些訂單記錄仍然留有貨運公司識別碼,但是該識別碼已經無效,因為所參考的記錄已經不存在。

參考完整性之目的,在避免出現孤立的記錄,並保持參考的同步,讓這種假設情況不會發生。

您可以在資料表關聯中啟用強迫參考完整性。 強制執行之後, Access 會拒絕任何違反該資料表關聯性參考完整性的作業。 這表示 Access 會拒絕變更參照目標的更新,以及移除參照目標的刪除。 您可能完全有效地需要變更訂單表中有訂單的寄件人的主索引鍵。 對於這類情況,您真正需要的是 Access 自動更新所有受影響的資料列,作為單一作業的一部分。 如此一來, Access 可確保完整完成更新,讓您的資料庫不會處於不一致的狀態,有些列已更新,有些則未更新。 因此 Access 支援 串聯更新相關欄位 選項。 當您強制執行參考完整性並選擇串 聯更新相關欄位 選項,然後更新主索引鍵時, Access 會自動更新參考主索引鍵的所有欄位。

您偶爾可能也需要刪除資料列及其所有相關記錄  (例如,貨運公司的記錄及所有其相關的訂單)。 因此, Access 支援 串聯刪除相關記錄 選項。 當您強制執行參照完整性並選擇 串聯刪除相關記錄 選項,然後刪除關係主索引鍵端的記錄時, Access 會自動刪除參考主索引鍵的所有記錄。

頁面頂端

檢視資料表關聯

若要檢視資料表關聯,請按一下 [資料庫工具] 索引標籤上的 [資料庫關聯圖]。 [資料庫關聯圖] 視窗即會開啟並顯示所有現有的關聯。 如果尚未定義資料表關聯性,且您是第一次開啟 [關聯性] 視窗, Access 會提示您將資料表或查詢新增至視窗。

開啟資料庫關聯圖視窗

  1. 按一下 檔案,按一下 開啟,然後選取並開啟資料庫。

  2. 在 [資料庫工具] 索引標籤上的 [資料庫關聯圖] 群組中,按一下 [資料庫關聯圖]。

  3. [關聯性設計] 索引標籤的 [關聯性] 群組中,按一下 [所有關聯性]。這會顯示資料庫中所有已定義的關係。 請注意,只有在 [導覽選項] 對話方塊中選取了 [顯示隱藏物件] 核取方塊後,才會顯示隱藏的資料表 (在資料表 [屬性] 對話方塊中選取了 [隱藏] 核取方塊的資料表) 及其關聯。

資料表關聯是以 [資料庫關聯圖] 視窗中資料表之間所畫的關聯線來表示。 支援關聯的共同欄位之間若出現細線,表示是未執行強迫參考完整性的關聯。 當您按一下關聯線選取該關聯時,選取的線會變粗。 若您針對此關聯執行強迫參考完整性,這條線在兩端都會變得更粗。 此外,在關聯的一端線較粗的部分上方會出現數字 1,而另一端線較粗的部分上方則會出現無限符號 ()。

您可以從作用中之 [資料庫關聯圖] 視窗的功能區中選取下列命令:

「關係設計 」索引標籤的 「工具」 群組中:

  • 編輯關聯 開啟 [編輯關聯] 對話方塊。 當您選取關聯線時,您可以按一下 [編輯關聯],變更資料表的關聯。 您也可以按兩下關聯線。

  • 清除版面配置 移除 [資料庫關聯圖] 視窗顯示中的所有資料表與關聯。 請注意,此命令只會隱藏資料表與關聯 ,而不會實際將其刪除。

  • 關聯報表 建立報表顯示資料庫內之資料表與關聯。 此報表只會顯示 [資料庫關聯圖] 視窗中所未隱藏的資料表與關聯。

[關聯性設計 ] 索引標籤的 [關聯性] 群組中:

  • 新增表格    啟用要在「關聯性」視窗中顯示的資料表的選取範圍。

  • 隱藏資料表 在 [資料庫關聯圖] 視窗中隱藏所選的資料表。

  • 直接關聯​​ 在 [資料庫關聯圖] 視窗中顯示所選資料表尚未顯示之所有關聯與關聯資料表。

  • 所有關聯​​ 在 [資料庫關聯圖] 視窗中顯示資料庫內之所有關聯與關聯資料表。 請注意,只有在 [導覽選項] 對話方塊中選取了 [顯示隱藏物件] 核取方塊後,才會顯示隱藏的資料表 (在資料表 [屬性] 對話方塊中選取了 [隱藏] 核取方塊的資料表) 及其關聯。

  • 關閉​​ 關閉 [資料庫​​關聯圖] ​​視窗。 關閉 [資料庫關聯圖] 視窗。若您變更 [資料庫關聯圖] 視窗的版面配置,系統即會詢問您是否要儲存變更。

頁面頂端

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。