以下章節將展示資料庫資料表關係的設計方式。 物件名稱提供方便你在 Northwind 2.0 入門版資料庫中查閱。
資料表與關係的資料庫設計
要開啟顯示六個表格及其間關係的關係圖,請選擇 資料庫工具>關係。
這張圖展示了所有六張表格。 在圖中,表格之間的線條用來識別它們之間的關係。 線條末端的 1 和無限符號 (∞) 代表關係的一方 (例如,一個客戶) 與多面關係。 例如,一位客戶提交了許多訂單。 如需詳細資訊,請參閱資料表關聯指南。
更多關於表格原則的資訊
以下原則適用於 Northwind 2.0 入門版中的表格,以及一般表格。
主鍵 在表格中唯一識別每筆紀錄。 所有資料表都有主鍵。 在關係圖中,金鑰符號用來識別這些主要鍵。 主鍵命名慣例會依其所在的資料表命名,例如「TableNameID」。
效率 為了提升效能與更有效率的儲存,主鍵應該是數字鍵。 此外,讓 Access 自動產生每個新紀錄主鍵的唯一新值也更方便。 AutoNumber 資料類型同時具備這兩種特性。 自動號碼本身是無意義的數字,沒有其他用途。 欲了解更多資訊,請參閱 「新增自動號碼欄位作為主鍵」。
外鍵 資料表也可以有一個或多個外鍵,視其是否與資料庫中的其他資料表相關。 外鍵包含對應於相關資料表主鍵值的值。
唯一索引 表格中的其他欄位也可能有各自獨特的索引,例如 OrderStatus.StatusCode。 在 OrderStatus 表格中出現兩個 Order Status,且代碼相同,即使 StatusCode 本身並非主鍵,這也不合邏輯。 唯一的索引會告訴 Access 該欄位防止重複值。
非唯一索引 表格也可能有索引以加速搜尋與排序,例如 Orders.OrderDate。 許多訂單可以在同一天下達,你通常會想在訂單日期上搜尋和排序。 該欄位有一個非唯一索引,以加快搜尋和排序速度。
表格與欄位名稱 你可以隨意命名,但一致性很重要。 我們建議表格名稱和欄位名稱應包含一個或多個字,且中間不設空格,且不得使用特殊字元,如斜線 (/) 、井號 (#) 或百分比 (%) 。 例如,請使用 OrderDate,但不要使用 Order Date;使用 OrderNumber 或 OrderNo,但不要使用 Order#。
駱駝箱 請大寫字詞以突出名稱的各個部分,例如「OrderDate」,但不要「Orderdate」或「orderDate」。
所需值 這個原則凸顯了商業規則對應用程式的重要性。 有些情況需要某些領域中特定的價值觀,甚至是特定的價值觀。 例如,如果不知道下訂單的客戶,訂單有什麼用? 這表示 CustomerID 是訂單資料表的必填欄位。
計算場 Access 支援在表格中計算欄位,例如 Employees.FullName 欄位。 你可能偏好在查詢中建立計算欄位,而非表格。
附加欄位 Access 支援附件欄位,例如 Employees.Picture,裡面有員工的照片。 附件可以儲存圖片、文件、電子郵件及其他二進位資訊。 附件在資料庫中佔據了大量空間。 將附件存放在檔案伺服器上會更有效率。
多值場 顧名思義,多值欄位會將一個或多個值儲存在單一欄位,例如 Employees.Title。 我們建議您適度使用,尤其是當您想要擴充資料庫時。 大多數其他資料庫系統沒有這些系統,所以需要大量重新設計。
欲了解更多資料型態資訊,請參閱 資料型別與欄位屬性導論。
Northwind 中的個別表格
本節討論每張桌子最重要的特點。 要檢視資料表的設計,請在導覽窗格中選取,右鍵點擊,選擇 設計檢視,或選擇 資料庫工具>關聯,然後右鍵點擊資料表物件。 如需詳細資訊,請參閱資料表簡介。
重要
避免使用保留詞彙,以免引起命名衝突。 欲了解更多資訊,請參閱 「了解存取權限」保留詞彙與符號。
員工資料表
此表儲存 Northwind 員工的資訊。
| 欄位 | 描述 |
|---|---|
| 名字,姓氏 | 兩個名字都是必須的,在 Northwind 中,兩者合起來必須是唯一的組合。 在表格設計中,當你打開 索引 對話框時,可以看到 FirstName + LastName 有獨特的索引。 由於 FirstName 和 LastName 是唯一索引的,Northwind 表格無法同時儲存兩個同名的員工。 在其他情況下,你可能會使用不同的商業規則。 |
| 全名FNLN, 全名LNFN |
看看計算欄位的表達式屬性,可以看到 Access 如何將計算欄位中的值合併。 若要包含中間字母縮寫,請將其加入現有表達式中,並適當間隔於各部分。 |
| 電話欄位 | 手機的商業規則是員工偏好比服務類型更重要。 因此,會使用主要和次要電話號碼,而非手機、辦公室、家裡等。 |
| 敬禮 | 稱呼是短文字欄位。 為了說明 Access 中的多值欄位功能,它是一個組合框,裡面有一個可編輯的預設值清單。 像這樣短小、靜態的清單常常是多值欄位的候選,因為它們幾乎不會改變,甚至幾乎不會改變。 |
| 職稱 | 職稱也是必填欄位。 |
客戶資料表
此表格儲存 Northwind 客戶的資訊。
| 欄位 | 描述 |
|---|---|
| 客戶名稱 | Northwind 的客戶是企業,且必須提供客戶姓名。 但與員工姓名不同的是,它不會被唯一索引,允許兩位或更多客戶使用相同姓名。 |
| 主要聯絡人名、主要聯絡人姓氏, 主要聯絡人工作職稱 |
主要聯絡人的名字、姓氏及職稱不強制,因為客戶可能沒有單一個人作為主要聯絡人。 聯絡人不得透露訂單的職稱。 |
| 商務電話 | Northwind 只需為每位客戶提供一個電話號碼,但這會消除為客戶或客戶聯絡人擷取多個電話號碼的能力。 在現實情況下,聯絡資訊通常適用更複雜的商業規則。 |
| 地址,城市 州政府,郵區分 |
Northwind 需要一個地址才能將訂單寄給客戶。 客戶只有一個通用地址。 在現實生活中,客戶通常會有不同的帳單、運送或其他地址。 對你的組織來說,其他商業規則會需要額外的欄位。 |
| 記事 | 筆記欄位是一種長文字資料型態,可儲存最多 1 GB 的文字。 這樣你就能輸入詳細的顧客評論,方便後續點餐時使用。 |
訂單表
此表格儲存 Northwind 訂單的資訊。
| 欄位 | 描述 |
|---|---|
| 訂購日期、出貨日期、付款日期 | 訂單需要三個日期。 它們都是日期/時間資料類型,但有兩種格式。 OrderDate 有日期和時間,因為你可能想分析一天中不同時段的訂單量。 另外兩個日期只需日期。 ShippedDate 和 PaidDate 的表格驗證規則確保這些日期不早於 OrderDate。 |
| OrderStatusID | 訂單狀態顯示該訂單在 Northwind 工作流程中的位置。 訂單會經過四個階段:新訂單 —>發票 —>已出貨 —>已成交。 目前 OrderStatus 的外鍵使用 OrderStatus 查詢表中的 OrderStatusID。 使用狀態查找表確保每個訂單只能指派四個預先定義的狀態。 |
訂單詳情表
此表格儲存 Northwind 訂單細節資訊。
| 欄位 | 描述 |
|---|---|
| 訂單編號 | OrderDetails 資料表中的每個行項目必須屬於訂單表中的一個訂單。 OrderID 是一個外鍵,能識別該訂單。 如前所述,一個訂單包含一個或多個行項目,則顯示出一對多的關係。 |
| 產品識別碼 | OrderDetails 資料表中的每個紀錄都包含所訂購產品的 ProductID。 ProductID 是 OrderDetails 資料表中的外鍵,用來依照該順序識別該產品。 這也是一種一對多的關係。 |
| OrderID+ ProductID | 如你在員工表格中看到的,多個欄位可以有唯一的索引。 OrderDetails 資料表中 OrderID+ProductID 的唯一索引確保每個訂單只包含一次商品。 當你從色帶打開索引屬性表時,可以看到這個獨特的索引。 |
產品表
此表格儲存有關 Northwind 產品的資訊。
| 欄位 | 描述 |
|---|---|
| ProductCode | 除了主鍵 ProductID 外,Northwind 產品還有一個對人類友善且唯一索引的產品程式碼。 員工通常指的是產品代碼,而非主要關鍵值。 產品代碼是一個複合數值,包含類別名稱與數字,例如B-1代表「飲料」,產品1。 |
| 產品名稱, 產品說明 |
除了短文字產品名稱外,產品還需提供長文字描述。 此數值可用於目錄描述或回答顧客問題。 |
| UnitPrice | 所有產品均以單價銷售,簡化資料庫作為功能展示平台。 在大多數現實情況下,定價往往複雜得多。 |
另請參閱