Northwind 2.0 入門版:資料庫設計

Applies To
Access for Microsoft 365 Access 2024 Access 2021 Access 2019

下列各節顯示資料庫資料表關聯的設計方式。 提供物件名稱,方便您在 Northwind 2.0 Starter Edition 資料庫中檢查它們。

資料表和關聯的資料庫設計

若要開啟顯示六個資料表及其之間關聯的關聯圖表,請選取 [資料庫工具] [資料庫工具>關聯]。

資料庫關聯圖表

此圖表顯示所有六個資料表。 在圖表中,資料表之間的線條可識別資料表之間的關聯。 1 和無限符號 () 在行尾代表關係的單端 (例如,一個客戶) 和多端關係。 例如,一位客戶提交了許多訂單。 如需詳細資訊,請參閱資料表關聯指南

深入了解資料表原則

下列原則適用於 Northwind 2.0 Starter Edition 中的資料表,以及一般資料表。

主索引鍵 唯一識別資料表中的每筆記錄。 所有資料表都有主索引鍵。 在關聯圖表中,按鍵符號可識別這些主索引鍵。 主索引鍵命名慣例是以其所在的資料表命名,例如 “TableNameID”。 

效率 為了獲得更好的效能和更有效率的儲存,主索引鍵應該是數字。 此外,讓 Access 自動為每筆新記錄的主索引鍵產生新的唯一值會更方便。 [自動編號] 資料類型同時具有這兩個特性。 自動號碼在其他方面是毫無意義的數字,沒有其他用途。 如需詳細資訊,請參閱 新增 [自動編號] 欄位當做主索引鍵

外部索引鍵 根據資料表是否與資料庫中的其他資料表相關,也可以有一或多個外部索引鍵。 外部索引鍵包含的值會對應至相關資料表的主索引鍵中的值。 

唯一索引 資料表中的其他欄位可能也有自己的唯一索引,例如 OrderStatus.StatusCode。 即使 StatusCode 本身不是主索引鍵,在 OrderStatus 資料表中有兩個具有相同代碼的訂單狀態是不合邏輯的。 唯一索引可讓 Access 防止該欄位中有重複的值。

非唯一索引 資料表也可能有索引,以加速這些欄位的搜尋和排序,例如 Orders.OrderDate。 許多訂單可以在同一天下達,而且您通常想要在訂單日期上搜尋和排序。 該欄位上有一個非唯一索引,可以加速搜尋和排序。

資料表和欄位名稱 您可以按照任何您想要的方式命名事物,但一致性很重要。 我們建議資料表和欄位名稱應為一或多個字詞,之間不得有空格,且不得使用特殊字元,例如斜線 (/) 、井號 (#) 或百分比 (%) 。 例如,使用 [訂單日期],但不要使用 [訂單日期];使用 OrderNumber 或 OrderNo,但不要使用 Order#。 

駝峰命名法 將字詞大寫以醒目提示名稱的個別部分,例如 OrderDate,但不是 Orderdate 或 orderDate。

必要值 此原則說明商務規則對於應用程式的重要性。 在某些情況下,某些欄位中需要值甚至特定值。 例如,在不認識下訂單的客戶的情況下,訂單有什麼用? 這表示 CustomerID 為 [訂單] 資料表的必要欄位。 

導出欄位 Access 支援資料表中的導出欄位,例如 [Employees.FullName ] 欄位。 建議您在查詢中建立導出欄位,而不是在資料表中建立導出欄位。

附件欄位 Access 支援附件欄位,例如 [Employees.Picture],其會保留員工的相片。 附件可以儲存影像、文件、電子郵件和其他二進位資訊。 附件在資料庫中佔用大量空間。 將附件儲存在檔案伺服器上會更有效率。

多重值欄位 正如其名,多重值欄位會將一或多個值儲存在單一欄位中,例如 Employees.Title。 我們建議您謹慎使用它們,特別是如果您想要升級資料庫。 大多數其他資料庫系統都沒有它們,因此需要大量返工。 

如需資料類型的詳細資訊,請參閱 資料類型和欄位屬性簡介。

Northwind 中的個別資料表

本節討論每個資料表最重要的功能。 若要檢閱資料表的設計,請在 [功能窗格] 中選取資料表,然後按一下滑鼠右鍵,選擇 [ 設計檢視],或選取 [ 資料庫工具>關聯],然後以滑鼠右鍵按一下資料表物件。 如需詳細資訊,請參閱資料表簡介

重要

避免使用可能導致命名衝突的保留字詞。 如需詳細資訊,請參閱了解 Access 保留字詞和符號

員工資料表

此表格會儲存 Northwind 員工的相關資訊。 

欄位 描述
FirstName, LastName 這兩個名稱都是必要項目,且在 Northwind 中,它們加在一起必須是唯一的組合。 在資料表設計中,當您開啟 [ 索引 ] 對話方塊時,您可以看見 FirstName + LastName 具有唯一索引。 由於 FirstName 和 LastName 具有唯一索引,因此 Northwind 資料表無法儲存兩個具有相同名稱的員工。 在其他情況下,您可以使用不同的商務規則。
FullNameFNLN,
FullNameLNFN
查看導出欄位的 expression 屬性,以了解 Access 如何結合導出欄位中的值。 若要包含中間字母縮寫,請將其新增到現有運算式中,並在元件之間留出適當的間距。
手機欄位 電話的商務規則是員工偏好比服務類型更相關。 因此,使用主要和次要電話號碼,而不是手機、辦公室、住家等。
稱呼 稱呼是簡短的文字欄位。 為了說明 Access 中的多重值欄位功能,它是一個下拉式方塊,其中包含可編輯的預先定義值清單。 像這樣的簡短靜態清單通常是多重值欄位的候選項目,因為它們不會有太大變化(如果有的話)。
JobTitle JobTitle 是另一個必要欄位。

客戶資料表

此表格會儲存有關 Northwind 客戶的資訊。 

欄位 描述
CustomerName Northwind 的客戶是企業,因此需要客戶名稱。 不過,與員工姓名不同的是,它沒有唯一索引,因此允許兩個或多個客戶具有相同的姓名。
PrimaryContactFirstName, PrimaryContactLastName,
PrimaryContactJobTitle
不需要主要連絡人的名字和姓氏以及職稱,因為客戶可能不會有一個人做為主要連絡人。 連絡人可能不會提供訂單的職稱。
商務電話 Northwind 只需要每個客戶一個電話號碼,不過這會排除為客戶或客戶的連絡人擷取多個電話號碼的功能。 在實際情況下,更複雜的商務規則通常適用於聯絡資訊。
地址,城市
州,郵遞區ᠤ
Northwind 需要一個地址,才能將訂單運送給客戶。 客戶只有一個通用地址。 在實際情況下,客戶通常有單獨的帳單、送貨或其他地址。 您的組織使用不同的商務規則可能需要其他欄位。
記事​​ 備忘稿欄位是長文字資料類型,最多可儲存 1 GB 的文字。 這可讓您輸入有關客戶的詳細註解,以便在後續訂購情況下使用。

訂單資料表

此表格儲存有關 Northwind 訂單的資訊。 

欄位 描述
OrderDate, ShippedDate, PaidDate 訂單需要三個日期。 它們都是日期/時間資料類型,但有兩種格式。 OrderDate 同時具有日期和時間,因為您可能有興趣分析一天中不同時段的訂單量。 對於其他兩個日期,則僅要求填寫日期。 ShippedDate 和 PaidDate 的資料表驗證規則可確保這些日期不早於 OrderDate。
OrderStatusID 訂單狀態指出訂單在 Northwind 工作流程中的位置。 訂單會經歷四個階段: 全新 —>已開立發票 —>已發貨 —>已關閉。 目前 OrderStatus 的外部索引鍵使用來自 OrderStatus 查閱資料表中的 OrderStatusID。 使用狀態查詢資料表可確保訂單只能指派四個預先定義的狀態。

訂單詳細資料資料表

此表格儲存有關 Northwind 訂單詳細資料的資訊。 

欄位 描述
訂單編號 OrderDetails 資料表中的每個明細項目都必須屬於 Orders 資料表中的一個 Order。 OrderID 是識別該訂單的外部索引鍵。 如先前所述,一個包含一或多個委刊項的訂單說明了一對多關聯性。
ProductID OrderDetails 資料表中的每筆記錄都包括所訂購產品的 ProductID。 ProductID 是 OrderDetails 資料表中的外部索引鍵,會依該順序識別該產品。 這也是一種一對多關係。
OrderID+ ProductID 如您在 [員工] 資料表中所見,多個欄位可以有唯一的索引。 OrderDetails 資料表中 OrderID+ProductID 的唯一索引可確保每個訂單只包含一次產品。 當您從功能區開啟 [索引] 屬性表時,可以看到這個唯一索引。

產品資料表

此表格儲存有關 Northwind 產品的資訊。 

欄位 描述
ProductCode 除了主索引鍵 ProductID 之外,Northwind 產品還有一個方便人性、唯一索引的產品代碼。 員工通常參照的產品代碼,而不是主索引鍵值。 產品代碼是由類別名稱和數字組成的綜合值,例如,B-1 代表「飲料」、產品 1。
產品名稱,
產品敘述
除了簡短文字產品名稱,長文字說明也適用於產品。 此值可用於目錄描述或回答客戶問題。
UnitPrice 所有產品都以每件商品的單價出售,這簡化了數據庫作為功能展示。 在大多數現實情況下,定價通常要複雜得多。

另請參閱

Northwind 2.0 入門版