MS Access - 資料關聯



本章我們將學習資料關聯的基礎知識。在討論和建立不同資料之間的關係之前,讓我們回顧一下為什麼我們需要它。這一切都回到了規範化。

規範化

資料庫規範化,或簡稱為規範化,是組織關係資料庫的列(屬性)和表(關係)以最大限度地減少資料冗餘的過程。它是將資料拆分到多個表中以提高整體效能、完整性和永續性的過程。

  • 規範化是組織資料庫中資料的過程。

  • 這包括根據旨在保護資料並透過消除冗餘和不一致的依賴性來提高資料庫靈活性的規則建立表並在這些表之間建立關係。

現在讓我們來看一下包含資料的下表,但問題是這些資料相當冗餘,這增加了資料輸入過程中出現錯別字和措辭不一致的可能性。

客戶ID 姓名 地址 餅乾種類 數量 價格 總計
1 Ethel Smith 12 Main St, Arlington, VA 22201 S 巧克力曲奇 5 $2.00 $10.00
2 Tom Wilber 1234 Oak Dr., Pekin, IL 61555 巧克力曲奇 3 $2.00 $6.00
3 Ethil Smithy 12 Main St., Arlington, VA 22201 巧克力曲奇 5 $2.00 $10.00

為了解決這個問題,我們需要重組資料並將其分解成多個表,以消除一些冗餘,如下面的三個表所示。

Three Tables

這裡,我們有一個客戶表,第二個是訂單表,第三個是餅乾表。

這裡的問題是,僅僅將資料分割成多個表並不能幫助說明一個表中的資料如何與另一個表中的資料相關聯。為了連線多個表中的資料,我們必須向**訂單**表新增外部索引鍵。

定義關係

關係透過匹配通常是兩個表中同名的鍵列中的資料來工作。在大多數情況下,關係將來自一個表的主鍵(為每一行提供唯一識別符號)與另一個表中外部索引鍵中的條目匹配。表之間有三種關係型別。建立的關係型別取決於相關列的定義方式。

現在讓我們來看看三種關係型別:

一對多關係

一對多關係是最常見的關係型別。在這種型別的關係中,表 A 中的一行可以有許多與表 B 中的行匹配,但表 B 中的一行只能與表 A 中的一行匹配。

例如,客戶表和訂單表具有一對多關係:每個客戶可以下許多訂單,但每個訂單隻來自一個客戶。

多對多關係

在多對多關係中,表 A 中的一行可以有許多與表 B 中的行匹配,反之亦然。

您可以透過定義第三個表(稱為**連線表**)來建立這種關係,其主鍵由表 A 和表 B 的外部索引鍵組成。

例如,客戶表和餅乾表具有多對多關係,該關係由這些表中的每一個與訂單表之間的一對多關係定義。

一對一關係

在一對一關係中,表 A 中的一行最多隻能與表 B 中的一行匹配,反之亦然。如果兩個相關列都是主鍵或具有唯一約束,則會建立一對一關係。

這種型別的關係並不常見,因為大多數以這種方式相關的資訊都位於一個表中。您可以使用一對一關係來:

  • 將表分成多個列。
  • 出於安全原因隔離表的一部分。
  • 儲存短暫的資料,只需刪除表即可輕鬆刪除。
  • 儲存僅適用於主表子集的資訊。
廣告