下列各節顯示資料庫資料表關聯的設計方式。 提供物件名稱,方便您在 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 | 所有產品都以每件商品的單價出售,這簡化了數據庫作為功能展示。 在大多數現實情況下,定價通常要複雜得多。 |
另請參閱