位置:首頁 > 數據庫 > Access教學 > Access創建關聯關係

Access創建關聯關係

關係數據庫的一個主要特點是,它們包含多個表,其中每一個可具有與其他表的關係。到目前為止,我們隻創建了一個表,這是一個有點困難嘗試建立與另一個表的關係時,隻能是在同數據庫中的表!

我們的數據庫需要一個以上的表,無論如何,因為我們需要能夠跟蹤不僅客戶還要產品,以及購買產品的實際顧客。

因此,讓我們創建兩個表,並建立它們之間的關係。一個表將存放產品信息,其他將存放訂單信息。

創建相關的表

繼續創建兩個表如下。

Screenshot of Products table
Screenshot of Orders table

一定要設置格式和默認值在兩個表中的dateCreated字段(用戶不需要進入這個字段- 係統可以做到這一點)。

Screenshot of Orders table

主鍵

請記住,關鍵圖標表示該字段是主鍵。主鍵可確保在此字段中的數據是唯一的 -  不允許哪兩個值可以是相同的。一個表必須有一個主鍵的關係,可以用另一個表建立之前。 進入自動設置ID字段作為主鍵,所以隻要你隻需重命名ID為ProductId (或OrderId 視情況而定) 它將已是一個主鍵。如果由於某種原因,你的表中冇有設置一個主鍵,或者如果你想改變主鍵字段,可以簡單地右鍵點擊(在設計視圖)字段標題上,然後從上下文菜單中的主鍵。

建立關係

現在,你已經創建了兩個額外的表,我們的數據庫中有三個表。現在應該創建三個表之間的關係。

  1. 在查看在設計視圖表,並確保設計選項卡中選擇,請從功能區點擊關係(Relationships):
    Screenshot of the the Relationship button on the MS Access 2013 Ribbon
  2. 一個顯示表對話框會彈出,顯示所有三個表。選擇所有然後單擊添加:
    Screenshot of creating a relationship in MS Access 2013
  3. 點擊關閉按鈕關閉對話框
  4. 現在,您將看到三個方框代表三個表。單擊並拖動Customers表的客戶ID根據給Orders表中相應的客戶ID字段:
    Screenshot of creating a relationship in MS Access 2013
  5. 編輯關係對話框會彈出。按此實施參照完整性,以便它被選中。檢查值如下麵的截圖是一樣的,然後單擊Create:
    Screenshot of creating a relationship in MS Access 2013
    現在,您將看到Customers表的客戶ID字段和訂單表的客戶ID之間建立一條線。
  6. 現在做相同操作在Products表。也就是說,單擊並關係相應的ProductID字段從Products表拖動的ProductId 到Orders表。表之間的關係看起來應該像下麵的截圖:
    Screenshot of sample data

關係類型

我們剛剛建立了許多一對多的關係。有三種類型的關係可以在表之間建立的。這些如下:

多對多的關係
這就是我們上麵的例子使用的。在表A 的行可以在表B中使用關聯,反之亦然許多匹配行。 在我們的例子中,一個客戶可以訂購多種產品,單品可以有很多客戶。使用第三個表一個創建多一對多的關係,所謂結合表(更多關於該下文)。
一對多的關係
這是最常見的關係類型。並不需要第三個(結聯)表這種類型的關係。在這種類型的關係,一行記錄在表A中可具有表B中許多匹配的行, 但表B中的行隻能有一個匹配行在表A中. 例如,行在性彆表(包含記錄男性和女性)可以在一個客戶表中的多個匹配的行,但客戶表的行隻能有一個匹配行在性彆表。也就是說,除非有,允許客戶為男性和女性的業務規則。 在這種情況下,一個多對多的關係將需要建立。
一對一的關係
在表A中的一行隻能有一個匹配行在表B中,反之亦然。這不是一個普通的關係類型,如表B中的數據可以隻是很容易地在表A中對應.這種關係式一般隻用於安全目的,或將一個大表,也許幾個其他原因。

使用的關係的類型取決於表結構以及如何字段定義。

交結表

另外,在上述關係中,訂單表被稱為一個結合表。結合表是一個包含來自兩個或更多個相同的數據庫內的其它表的共用字段。它被用作一個基準表在多對多的關係(如我們正在做在的例子)中。

交結表在許多不同的名稱。 這裡有一些:交叉引用表,表橋,連接表,映射表,交表,鏈接表,多到很多解析器,鏈接表,表配對,數據透視表,轉換表,或關聯表。

所以,如果你曾經聽到有人提到其中的一個,你應該知道它們指的是什麼。

主鍵VS外鍵

我們已經知道,一個主鍵確保了在該字段中的數據是唯一的。這是重要的,因為我們的訂單表的需要,以引用任何記錄從其他表的唯一值。例如,它不能使用名字字段,因為可能有超過一個人使用一個給定的名字。它不能使用dateCreated的值,因為它可能是兩個記錄可在完全相同的時間被創建(例如,如果兩個操作者都輸入數據,或者如果多條記錄從外部源導入)。這就是為什麼我們需要在至少一個字段中,隻包含一個唯一的值。

外鍵是簡單地在相關表中的相應字段的主鍵。 所以在我們的例子中,在Orders表客戶ID字段是外鍵,而在客戶表中的客戶ID字段是主鍵。 同樣,在訂單表中的ProductID字段是一個外鍵,而產品表產品id字段是主鍵。該字段並不一定需要具有相同的名稱,這是一個很好的做法。這必將使數據庫結構更容易理解 - 尤其是當你開始添加多個表也需要有確定的關係。

關係和查詢

創建像上麵的一個關係可以幫助對數據庫建立查詢。接下來,我們將使用我們的新創建的關係,幫助我們創建對表在數據庫中查詢。