Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019

以下部分演示如何设计数据库表关系。 提供了对象名称,以便你可以在 Northwind 2.0 Starter Edition 数据库中轻松检查它们。

若要打开关系图,显示六个表及其之间的关系,请选择“ 数据库工具 > 关系”。

数据库关系图

此图显示了所有六个表。 在关系图中,表之间的线条标识它们之间的关系。 行尾的 1 和无穷大符号 () 表示关系 (例如,一个客户) 和关系的多侧。 例如,一个客户提交许多订单。 有关详细信息,请参阅 表关系指南

以下原则适用于 Northwind 2.0 Starter Edition 中的表以及一般表。

主键      唯一标识表中的每条记录。 所有表都有一个主键。 在关系图中,键符号标识这些主键。 主键命名约定是针对它们所在表命名的,例如“TableNameID”。 

效率    为了获得更好的性能和更高效的存储,主键应为数值。 此外,让 Access 为每个新记录的主键自动生成新的唯一值会更方便。 自动编号数据类型具有这两个特征。 自动编号是非有意义的数字,不用于其他目的。 有关详细信息,请参阅 添加自动编号字段作为主键

外键      表还可以具有一个或多个外键,具体取决于它是否与数据库中的其他表相关。 外键包含与相关表的主键中的值对应的值。 

唯一索引      表中的其他字段可能也有其自己的唯一索引,例如 OrderStatus.StatusCode。 在 OrderStatus 表中具有相同代码的两个 Order Statuss 是不合逻辑的,即使 StatusCode 本身不是主键。 唯一索引指示 Access 防止该字段中出现重复值。

非唯一索引      表可能还具有索引来加快对这些字段的搜索和排序速度,例如 Orders.OrderDate。 许多订单可以放在同一天,并且你经常希望在“订单日期”上搜索和排序。 该字段上有一个非唯一索引,可加快搜索和排序速度。

表和字段名称    你可以根据需要任意命名内容,但一致性很重要。 建议表名和字段名称应为一个或多个字词,且之间没有空格,并且没有特殊字符,例如斜杠 (/) 、井号 (#) 或百分比 (%) 。 例如,使用 OrderDate,但不要使用订单日期;使用 OrderNumber 或 OrderNo,但不能使用 Order#。 

CamelCase    大写单词以突出显示名称的各个部分,例如 OrderDate,但不能突出显示 Orderdate 或 orderDate。

必需值    此原则提出业务规则对应用程序的重要性。 某些情况需要某些字段中的值甚至特定值。 例如,在不知道下订单的客户的情况下,订单有什么好处? 这意味着 CustomerID 是 Orders 表的必填字段。 

计算字段      Access 支持表中的计算字段,例如 Employees.FullName 字段。 你可能更倾向于在查询中创建计算字段,而不是在表中创建计算字段。

附件字段      Access 支持附件字段,例如 Employees.Picture,用于保存员工图片。 附件可以存储图像、文档、电子邮件和其他二进制信息。 附件在数据库中占用大量空间。 将附件存储在文件服务器上更为高效。

多值字段    顾名思义,多值字段在单个字段中存储一个或多个值,例如 Employees.Title。 建议谨慎使用它们,尤其是在想要扩大数据库时。 大多数其他数据库系统没有它们,因此需要大量重新工作。 

有关数据类型的详细信息,请参阅数据类型和字段属性简介。

本部分讨论每个表最重要的功能。 若要查看表的设计,请在导航窗格中将其选中,右键单击该表,选择 “设计视图”,或选择“ 数据库工具 > 关系”,然后右键单击表对象。 有关详细信息,请参阅 表简介

重要: 避免使用可能导致命名冲突的保留字。 有关详细信息,请参阅 了解 Access 保留字和符号

Employees 表

此表存储有关 Northwind 员工的信息。 

Fields

描述

FirstName、LastName

这两个名称是必需的,在 Northwind 中,它们必须是唯一的组合。 在表设计中,打开“ 索引 ”对话框时,可以看到 FirstName + LastName 具有唯一索引。 由于 FirstName 和 LastName 是唯一索引的,因此 Northwind 表无法存储两个具有相同名称的员工。 在其他情况下,可以使用其他业务规则。

FullNameFNLN、 FullNameLNFN

查看计算字段的表达式属性,了解 Access 如何合并计算字段中的值。 若要包含中间的首字母,请将其添加到在组件之间具有适当间距的现有表达式。

电话字段

电话的业务规则是,员工偏好比服务类型更相关。 因此,使用主要和次要电话号码,而不是手机、办公室、家庭等。

称呼

“称呼”是“短文本”字段。 为了说明 Access 中的多值字段功能,它是一个组合框,其中包含可编辑的预定义值列表。 此类简短的静态列表通常是多值字段的候选项,因为它们不会有太大变化(如果有的话)。

JobTitle

JobTitle 是另一个必填字段。

Customers 表

此表存储有关 Northwind 客户的信息。 

Fields

描述

CustomerName

Northwind 的客户是企业,需要客户名称。 不过,与员工姓名不同,它不是唯一的索引,允许两个或更多客户具有相同的名称。

PrimaryContactFirstName、PrimaryContactLastName、 PrimaryContactJobTitle

不需要主要联系人的名字和姓氏以及职务,因为客户可能没有一个人作为其主要联系人。 联系人不得为订单提供其职务。

BusinessPhone

Northwind 为每个客户只需要一个电话号码,不过这消除了为客户或客户联系人捕获多个电话号码的能力。 在实际情况下,更复杂的业务规则通常适用于联系信息。

地址、城市 State、ZIP

Northwind 需要地址才能将订单寄送给客户。 客户只有一个通用地址。 在实际情况下,客户通常具有单独的计费、发货或其他地址。 组织的其他业务规则需要其他字段。

注意

“备注”字段是一种长文本数据类型,最多可存储 1 GB 文本。 这样,就可以输入有关客户的详细注释,以便在后续订购情况下使用。

Orders 表

此表存储有关 Northwind 订单的信息。 

Fields

描述

OrderDate、ShippedDate、PaidDate

订单需要三个日期。 它们都是日期/时间数据类型,但有两种格式。 OrderDate 具有日期和时间,因为您可能有兴趣分析一天中不同部分的订单量。 对于其他两个日期,仅需要日期。 ShippedDate 和 PaidDate 的表验证规则可确保这些日期不早于 OrderDate。

OrderStatusID

订单状态指示订单在 Northwind 工作流中的位置。 订单将经历四个阶段: > 开> 发货 > 关闭。当前 OrderStatus 的外键使用 OrderStatus 查找表中的 OrderStatusID。 使用状态查找表可确保只能将四个预定义状态分配给订单。

订单详细信息表

此表存储有关 Northwind 的订单详细信息的信息。 

Fields

描述

OrderID

OrderDetails 表中的每个行项都必须属于 Orders 表中的一个 Order。 OrderID 是标识该订单的外键。 如前所述,包含一个或多个行项的订单说明了一对多关系。

ProductID

OrderDetails 表中的每个记录都包含订购的产品的 ProductID。 ProductID 是 OrderDetails 表中的外键,按该顺序标识该产品。 这也是一对多关系。

OrderID+ ProductID

正如你在 Employees 表中所看到的,多个字段可以具有唯一的索引。 OrderDetails 表中 OrderID+ProductID 的唯一索引可确保每个订单仅包含一次产品。 从功能区打开“索引”属性表时,可以看到此唯一索引。

产品表

此表存储有关 Northwind 产品的信息。 

Fields

描述

ProductCode

除了主键 ProductID 之外,Northwind 产品还有一个人性化且索引唯一的产品代码。 员工通常引用产品代码而不是主键值。 产品代码是一个复合值,由类别指定和数字组成,例如,B-1 表示“饮料”,产品 1。

产品名称, 产品说明

除了短文本产品名称外,长文本说明也适用于产品。 此值可用于目录说明或回答客户问题。

UnitPrice

所有产品均按单价出售,使数据库简化为功能展示。 在大多数实际情况下,定价通常要复杂得多。

另请参阅

Northwind 2.0 入门版

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。