下列各節顯示資料庫數據表關聯的設計方式。 提供的物件名稱可讓您輕鬆地在 Northwind 2.0 Starter Edition 資料庫中進行檢查。
若要開啟顯示六個數據表及其間關聯的關聯圖,請選取 [ 資料庫工具 ] > 關聯圖]。
此圖表會顯示六個數據表。 在圖表中,數據表之間的線條可識別它們之間的關係。 行尾 (∞) 的 1 和無限符號代表關聯 (的一端,例如,一個客戶) ,以及關聯的多端。 例如,一位客戶會提交許多訂單。 如需詳細資訊,請參閱 數據表關聯指南。
下列原則適用於 Northwind 2.0 Starter Edition 中的數據表,以及一般數據表。
主鍵 唯一識別數據表中的每一筆記錄。 所有數據表都有主鍵。 在關聯圖中,按鍵符號可識別這些主鍵。 主鍵命名慣例是以其所在數據表命名,例如「TableNameID」。
效率 為了獲得更好的效能和更有效率的儲存空間,主鍵應為數值。 此外,讓 Access 自動為每一筆新記錄的主鍵產生新的唯一值也比較方便。 [自動編號] 資料類型有兩種特性。 [自動編號] 是非有意義的數字,沒有其他用途。 如需詳細資訊,請參閱外鍵 根據數據表是否與資料庫中的其他數據表相關,數據表也可以有一或多個外鍵。 外鍵包含的值會對應到相關數據表主鍵中的值。
唯一索引 數據表中的其他欄位也可能有自己的唯一索引,例如 OrderStatus.StatusCode。 即使 StatusCode 本身不是主鍵,但 OrderStatus 數據表中有兩個具有相同程式代碼的 [訂單狀態] 是不合邏輯的。 唯一索引會告訴 Access 避免該欄位中的值重複。
非唯一索引 數據表可能也有能加速搜尋的索引,並排序這些欄位,例如 Orders.OrderDate。 您可以在同一天下許多訂單,而您通常想要搜尋訂單日期並排序。 該欄位上有一個非唯一的索引,可加速搜尋和排序。
數據表和功能變數名稱 您可以用任何您想要的方式為專案命名,但一致性很重要。 我們建議數據表和功能變數名稱應為一個或多個文字,兩者之間不要有空格,且不包含特殊字元,例如斜線 (/) 、井字型大小 (#) ,或百分比 (%) 。 例如,使用 OrderDate,但不使用訂單日期;使用 OrderNumber 或 OrderNo,但不使用 Order#。
駱駝 將單字大寫以醒目提示名稱的個別部分,例如 OrderDate,但不要醒目提示 Orderdate 或 orderDate。
必要值 此原則會說明商務規則對於應用程式的重要性。 在某些情況下,某些欄位中需要值或特定值。 例如,在不知道下單客戶的情況下,什麼是「訂單」? 這表示 CustomerID 是 [訂單] 資料表的必要字段。
匯出欄位 Access 支援數據表中的匯出欄位,例如 Employees.FullName 字段。 您可能會想要在查詢中建立匯出字段,而不是在數據表中建立計算欄位。
附件欄位 Access 支援附件字段,例如 Employees.Picture,其中包含員工的圖片。 附件可以儲存影像、文件、電子郵件及其他二進位資訊。 附件在資料庫中佔用許多空間。 改為將附件儲存在檔案伺服器上更有效率。
多重值欄位 顧名思義,多重值字段會在單一字段中儲存一或多個值,例如 Employees.Title。 我們建議您謹慎使用,特別是如果您想要將資料庫升級。 大部分其他資料庫系統沒有這些資料庫系統,因此需要大量重新運作。
如需數據類型的詳細資訊,請參閱數據類型和字段屬性簡介。
本節討論每個數據表最重要的功能。 若要檢閱數據表的設計,請在 [導航窗格] 中選取該數據表,以滑鼠右鍵按兩下該資料表,選擇 [ 設計檢視],或選取 [ 資料庫工具 > 關聯 圖],然後以滑鼠右鍵按兩下資料表物件。 如需詳細資訊,請參閱 數據表簡介。
重要: 避免使用可能會導致命名衝突的保留字。 如需詳細資訊,請參閱 瞭解 Access 保留字和符號。
員工數據表
此表格儲存 Northwind 員工的相關信息。
領域 |
描述 |
FirstName、LastName |
這兩個名稱都是必要的,而在北風中,它們必須是唯一的組合。 在數據表設計中,當您開啟 [ 索引 ] 對話框時,您可以看到 FirstName + LastName 有唯一索引。 由於 FirstName 和 LastName 是唯一編製索引,因此 [北風] 資料表無法儲存兩個名稱相同的員工。 在其他情況下,您可以使用不同的商務規則。 |
FullNameFNLN, FullNameLNFN |
查看匯出欄位的表示式屬性,以瞭解 Access 如何合併匯出欄位中的值。 若要包含中間名縮寫,請將它新增到元件之間具有適當間距的現有表達式。 |
電話欄位 |
手機的商務規則是員工偏好設定比服務類型更相關。 因此,主要和次要電話號碼是用於行動電話、辦公室、住家電話等等。 |
稱呼 |
[問候語] 是 [簡短文字] 字段。 若要說明 Access 中的多重值欄位功能,它是具有預先定義值可編輯清單的下拉式方塊。 簡短的靜態清單通常是多重值欄位的候選字段,因為這些字段不會經常變更。 |
JobTitle |
JobTitle 是另一個必要欄位。 |
客戶數據表
此表格儲存 Northwind 客戶的相關信息。
領域 |
描述 |
CustomerName |
Northwind 的客戶是企業,需要有客戶名稱。 不過,與員工名稱不同的是,索引並不是唯一的,讓兩個或多個客戶擁有相同的名稱。 |
PrimaryContactFirstName、PrimaryContactLastName、 PrimaryContactJobTitle |
主要聯繫人的名字和姓氏及職稱不需要,因為客戶可能沒有一個人做為其主要聯繫人。 聯繫人不得為訂單提供職稱。 |
BusinessPhone |
Northwind 每位客戶只需要一個電話號碼,不過這可讓客戶擷取多個電話號碼或客戶的聯繫人。 在實際情況下,較複雜的商務規則通常會套用至連絡資訊。 |
位址、縣/市 縣/市、郵遞區號 |
Northwind 需要一個位址,才能將訂單寄送給客戶。 客戶只能有一個一般位址。 在實際情況下,客戶通常會有個別的帳單、出貨或其他位址。 貴組織的其他商務規則需要額外的欄位。 |
注意事項 |
[備忘稿] 字段是長文字數據類型,儲存最多 1 GB 的文字。 這可讓您輸入客戶的詳細批注,以便在後續的排序情況下使用。 |
訂單數據表
此表格儲存 Northwind 訂單的相關信息。
領域 |
描述 |
OrderDate、ShippedDate、PaidDate |
訂單需要三個日期。 它們都是 [日期/時間] 數據類型,但有兩種格式。 OrderDate 有一個日期和時間,因為您可能有興趣分析一天中不同部分的訂單量。 針對另外兩個日期,只需要日期。 ShippedDate 和 PaidDate 的數據表驗證規則可確保這些日期不會早於 OrderDate。 |
OrderStatusID |
訂單狀態會指出訂單在 [北風] 工作流程中的所在位置。 訂單會移至四個階段:新 > 發票 - > 出貨 - > 關閉。目前 OrderStatus 的外鍵會使用 OrderStatus 查閱表格中的 OrderStatusID。 使用狀態查閱表格可確保只有四個預先定義的狀態可以指派給訂單。 |
訂單詳細數據表
此表格會儲存 Northwind 訂單詳細數據的相關信息。
領域 |
描述 |
OrderID |
[訂單詳細數據] 數據表中的每個明細項目必須屬於 [訂單] 數據表中的一個 [訂單]。 OrderID 是識別該訂單的外鍵。 如先前所述,包含一或多個明細專案的一筆訂單會說明一對多關係。 |
ProductID |
[訂單詳細數據] 資料表中的每一筆記錄都包含訂購產品的產品標識碼。 ProductID 是 [訂單詳細數據] 資料表中的外鍵,可識別該順序的產品。 這也是一對多關係。 |
OrderID+ ProductID |
如您在 [員工] 數據表中所看到的,多個字段可以擁有唯一的索引。 在 [訂單詳細數據] 數據表中,OrderID+ProductID 上的唯一索引可確保每個訂單只包含產品一次。 當您從功能區開啟 Index 屬性表時,您會看到這個唯一索引。 |
產品數據表
此表格儲存 Northwind 產品的相關信息。
領域 |
描述 |
ProductCode |
除了主鍵 ProductID 之外,Northwind 產品還具有人性化、唯一索引的產品代碼。 員工通常會參照產品代碼,而非主鍵值。 產品代碼是包含類別指定和數位的複合值,例如 B-1 表示「飲料」,產品 1。 |
[產品名稱], 產品描述 |
除了簡短的文字產品名稱之外,產品也適用冗長的文字描述。 此值可用於型錄描述或回答客戶問題。 |
UnitPrice |
所有產品都會以單價銷售,以簡化資料庫做為功能展示的每個專案。 在大多數實際情況下,價格通常會大幅複雜。 |
另請參閱