定義在 Microsoft Access 資料庫中資料表之間的關聯性

文章翻譯 文章翻譯
文章編號: 304466 - 檢視此文章適用的產品。
初級使用者 ︰ 須具備知識單一使用者的使用者介面電腦。

這份文件僅適用於 Microsoft Access 資料庫 (.mdb 或.accdb)。
在 Access 2000 版本的本文中,請參閱 304467.
本篇文章中,Microsoft Access 97 版本請參閱 304468.
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您如何定義中的關聯性Microsoft Access 資料庫中。它包括下列主題:
  • 資料表關聯性有哪些?
  • 資料表關聯性類型
    • 若要從一對多關聯性
    • 多對多關聯性
    • 一對一關聯性

  • 如何定義資料表之間的關聯
    • 若要定義一個一對多或一對一的方式關聯性
    • 如何定義多對多關聯性

  • 參考完整性
  • 階層式更新和刪除
  • 聯結類型

其他相關資訊

資料表關聯性有哪些?

在關聯式資料庫中,關聯性可避免重複的資料。比方說,如果您正在設計的資料庫,將追蹤書籍的相關資訊,您可能必須名為 Titles 的資料表儲存每一本書的資料,如書名,出版日期、 和「 發行者 」。此外,還有您可能想要儲存的相關資訊「 發行者 」,例如出版商的電話號碼、 地址和郵遞區號。如果您要將這些資訊全部儲存在 titles 資料表中,「 發行者 」 的電話號碼都會重複為每一個書名,「 發行者 」列印。

更好的解決方案是用來儲存發行者資訊一次在不同的資料表,「 發行者 」。然後,您會將指標放在書名資料表中參考發行者資料表項目。

若要請確定您的資料不是同步時,您可以強制執行參考標題和出版資料表之間的完整性。參考完整性關聯性可確保在一個資料表的資訊比對中的資訊另一個。比方說,每本著作計算 Titles 資料表中的必須與其產生關聯發行者資料表中的特定 「 發行者 」。無法加入標題如果出版商不存在於資料庫的資料庫。

資料表關聯性類型

關聯性會找出相符的索引鍵的資料行中的資料通常有兩個資料表中的同名的資料行。在大多數情況下,關聯性比對從提供的唯一識別項中的一個資料表的主索引鍵每個資料列,在另一個資料表的外部索引鍵的項目。比方說,銷售可與特定著作計算銷售量建立相關聯在 Titles 表格 (主索引鍵) 的 title_id 資料行之間的關聯性和銷售資料表 (外部索引鍵) 的 title_id 資料行。

有有三種類型的資料表之間的關聯。關聯性的型別,建立關聯的資料行的定義方式而定。

若要從一對多關聯性

若要從一對多關聯性是最常見的類型關聯性。在這種關聯性中,資料表 A 中的資料列可以有很多在資料表 B 中相符的資料列,但資料表 B 中的資料列可以有一個相符的資料列在資料表 a。比方說,發行者和書名資料表皆有一對多關聯性: 每個出版商可出版許多書,但每本書卻只有一個出版商。

如果是只有一個,則會建立一個一對多關聯性關聯的資料行主索引鍵或唯一條件約束。

在 Access 中,以表示一個一對多關聯性的主索引鍵索引鍵符號。關聯性外部索引鍵側可用無限表示符號。

多對多關聯性

在多對多關聯中,資料表 A 中的資料列可以有很多比對在資料表 B 中的資料列,反之亦然。建立這類的關聯性定義第三個資料表,稱作連接資料表,其主索引鍵組成從這兩處的外部索引鍵資料表 A 和資料表 b。比方說,在 Authors 資料表和 Titles 資料表中具有多對多關聯性所定義的若要從一對多關係從這些資料表書名作者資料表。書名作者資料表的主索引鍵是 au_id 的組合資料行 (在 authors 資料表的主索引鍵) 和 title_id 資料行 (標題資料表的主索引鍵)。

一對一關聯性

在一對一關聯中,資料表 A 中的資料列可以有不必再苦苦超過一個在資料表 B 中相符的資料列,反之亦然。一對一關聯性如果兩個相關的資料行是主索引鍵或具有,建立唯一條件約束。

這種關聯性並不常見因為大部分都在一個資料表會以這種方式的相關資訊。您可以使用一對一關聯性:
  • 將資料表分割為許多資料行。
  • 隔離的資料表,基於安全性考量的部份。
  • 很短並且便可輕易刪除存放區資料只要刪除資料表。
  • 儲存只適用於主子集的資訊資料表。
在 Access 中,是一對一的關聯性的主索引鍵由一個鑰匙符號表示。外部索引鍵端也是由索引鍵符號表示。

如何定義資料表之間的關聯

當您建立相關的欄位的資料表之間的關聯性不需要有相同的名稱。不過,相關的欄位必須有相同資料型別,除非主索引鍵欄位是自動編號欄位。您可以比對[自動編號] 欄位與 [數字的比對兩個 [欄位大小] 屬性的欄位時,才是一樣的。比方說,如果二者欄位的 [欄位大小] 屬性是 [長整數,就可以相符,[自動編號] 和 [數字] 欄位。即使這兩個比對欄位是數字欄位時,檔案必須具有相同的[欄位大小]屬性設定值。

如何定義一個一對多或一對一的關聯性

若要建立為一對多或一對一關聯中,請依照下列下列步驟進行:
  1. 關閉任何您所開啟的資料表。您不能建立或修改已開啟的資料表之間的關聯。
  2. 在 Access 2002 或在 Access 2003 中,請依照下列步驟執行:
    1. 請按 f11 鍵切換到 [資料庫] 視窗。
    2. 在上 工具 功能表中,按一下 關聯性.
    在 Access 2007 中,按一下 關聯性顯示/隱藏 群組上 資料庫工具 索引標籤。
  3. 如果您尚未定義任何關聯,在您資料庫中,[顯示資料表] 對話方塊會自動顯示。如果您想要新增資料表的關聯,但沒有顯示 [顯示資料表] 對話方塊,在 [資料庫關聯圖] 功能表上,按一下 [顯示資料表
  4. 請按兩下您想要的資料表名稱彼此相關時,並接著關閉 [顯示資料表] 對話方塊。若要建立資料表和本身之間的關係您要新增該資料表兩次。
  5. 拖曳想要關聯到某一個資料表中的欄位在另一個資料表的相關的欄位。若要拖曳多個欄位,按住 ctrl 鍵,按一下每個欄位,然後拖曳它們。

    在大多數情況下,您可以拖曳主索引鍵欄位 (以粗體文字顯示) 從一個資料表,出現類似(通常具有相同的名稱) 的欄位稱為外部索引鍵,在另一個資料表中。
  6. [編輯關聯] 對話方塊隨即出現。請確定欄位名稱顯示在兩個資料行都是正確的。如有必要,您可以變更它們。

    設定如有必要關聯選項。如果您需要在特定的資訊在 [編輯關聯] 對話方塊中的項目,按一下 [問號] 按鈕,然後按一下項目。這些選項將在這稍後仔細說明發行項。
  7. 按一下 [建立],即可建立關聯性。
  8. 重複步驟 5 到 8,每一對的表格要做關聯。

    當您關閉 [編輯關聯] 對話方塊時,Microsoft Access 會詢問您是否要儲存的版面配置。您無法儲存此配置,是否已儲存您所建立的關聯性在資料庫中。

    附註:您可以在查詢和資料表建立關聯。不過,參考完整性不是使用查詢來執行。

如何定義多對多關聯性

若要建立多對多關聯性,請依照下列步驟執行:
  1. 建立兩個資料表都有多對多關聯性。
  2. 建立第三個資料表,稱作連接資料表,,然後加入若要與主索引鍵相同定義的連接資料表新欄位從其他兩個資料表的欄位。在聯合資料表中,主要索引鍵欄位作用同外部索引鍵。您可以新增其他欄位到 [連接點資料表,就像任何其他的資料表。
  3. 在聯合資料表中,設定 [主索引鍵,以包含其他兩個資料表的主索引鍵欄位。例如,在書名作者聯合資料表中,主索引鍵會由組成訂單編號及產品編號欄位。

    附註: 若要建立主索引鍵,請依照下列步驟執行:
    1. 在 [設計] 檢視中開啟資料表。
    2. 選取您想要定義為欄位主索引鍵。若要選取一個欄位,按一下您想要的列選取器欄位。

      若要選取多個欄位,請按住 CTRL 鍵,然後再按一下每個欄位的列選取器。
    3. 在 Access 2002 或在 Access 2003 中,按一下 主索引鍵 在工具列上。

      在 Access 2007 中,按一下 主索引鍵工具 群組上 設計 索引標籤。

      附註如果您想要在多重欄位主欄位的順序為資料表中的欄位順序不同,則按一下以顯示 [索引] 對話方塊中,然後再重新排列工具列上的索引鍵欄位名稱的索引稱為PrimaryKey
  4. 定義一個一對多關聯性之間的兩個主資料表和聯合資料表。

參考完整性

參考完整性是一種規則,Microsoft Access使用,以確保相關資料表中的資料錄之間的關聯性是正確的並且確保不會無意刪除或變更相關資料。您可以設定參考完整性符合下列所有情況成立時:
  • 從主資料表吻合的欄位是主索引鍵或具有唯一的索引。
  • 相關的欄位使用相同的資料類型。有兩個例外狀況。自動編號欄位可以與數字] 欄位與[欄位大小]屬性設定為長整數,相關,而且可以與相關數字欄位大小] 屬性設定為 [複製編號自動編號欄位欄位與[欄位大小]屬性設定為複製編號]。
  • 這兩個資料表都屬於同一個 Microsoft Access 資料庫。如果資料表是連結的資料表,它們必須是在 Access 中的資料表格式,而且您必須開啟儲存至設定的資料庫參考完整性。無法強制執行參考完整性,如連結資料庫中的其他格式的表格。
當您使用參考完整性時,就會套用下列規則:

  • 您不能輸入的外部索引鍵欄位值關聯的資料表不存在主資料表的主索引鍵。不過,您可以輸入 Null 值的外部索引鍵,指定的記錄之間並沒有關聯。比方說,不能有指定訂單客戶不存在,但您可以指定訂單為 [無人藉由在 [客戶編號] 欄位中輸入 Null 值。
  • 如果比對,就無法在主資料表中刪除一筆資料錄相關的資料表中存在的記錄。比方說,您不能刪除員工如果有指定訂單給員工,在 [錄製在員工資料表[訂單] 表格中。
  • 您不能變更在主資料表中,主索引鍵值如果該資料錄有相關的記錄。比方說,您不能變更如果有指定訂單給,[員工] 資料表內的員工的編號在 [訂單] 表格中的員工。

階層式更新和刪除

關聯性的參考完整性強迫的您可以指定是否要讓 Microsoft Access 自動串接式更新或串接式刪除相關的記錄。如果您設定這些選項時,刪除及更新通常也會限制由參考完整性規則的作業允許的。當您刪除資料錄,或變更主索引鍵值中為主要資料表中,Microsoft Access 所產生必要的變更到相關資料表保持參照完整性。

如果您按一下以選取 [串接式更新相關欄位] 核取方塊,當您定義的關聯,每當您變更主資料表中,Microsoft Access 中的資料錄的主索引鍵自動更新為新的值,所有相關記錄的主索引鍵。比方說,如果您變更 [客戶] 資料表中客戶的編號在 [訂單] 表格中的 [客戶編號] 欄位會自動更新為每一該客戶的訂單,使關聯性都不會中斷。Microsoft Access重疊顯示更新,但不顯示任何訊息。

附註:如果在主資料表的主索引鍵是自動編號欄位,選取 [串接式更新相關欄位] 核取方塊會有任何作用,因為您無法變更在 [自動編號欄位的值。

如果您選取 [串接式更新相關欄位] 核取方塊,當您定義的關聯,每當您刪除資料錄,在主資料表中,Microsoft Access 將自動刪除在相關資料表的關聯資料錄。比方說,如果您刪除客戶從 [客戶] 資料表的資料錄,此客戶的所有訂單都會自動從 [訂單] 資料表 (包含在 [訂貨明細] 資料表中刪除相關的訂單記錄)。當您從表單刪除記錄或選取 [串接式更新相關欄位] 核取方塊的資料工作表,Microsoft Access 就會警告您與相關的可能也會刪除資料錄。不過,當您刪除使用 [刪除資料錄查詢時,Microsoft Access 都會自動刪除相關聯的資料表中的記錄但不會顯示一則警告。

聯結類型

有三種聯結類型,如下:

選項 1定義內部連結。內部聯結被聯結位置中的記錄查詢的結果才會組合成兩個資料表聯結中的值欄位符合指定的條件。在查詢中,那麼預設連線是內部在 [結合欄位值時,才選取記錄的聯結。

選項 2定義左外部聯結。左外部聯結是這種聯結中從左邊的聯結作業中查詢的左下方的所有記錄SQL 陳述式會新增到查詢的結果,即使沒有符合的在右邊資料表的聯結欄位中的值。

選項 3定義右外部聯結。右外部聯結是這種聯結中從右下方的右邊加入操作在查詢中的所有記錄SQL 陳述式會新增到查詢的結果,即使沒有符合的在左邊資料表的聯結欄位中的值。

屬性

文章編號: 304466 - 上次校閱: 2013年7月16日 - 版次: 7.2
這篇文章中的資訊適用於:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
關鍵字:?
kbdesign kbdatabase kbhowto kbmt KB304466 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:304466
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com