如何设计Access数据库表,其中两个字段中只有一个字段有数据



我正在创建一个Access数据库,其中包含一个与ITEMS表相关的SALES表,ITEMS表包含所购买的服务和用品。ITEMS表中的每个记录都有一个物资或服务名称,每个记录都在各自的表中,包含定价和相关信息。如何在Access中创建此ITEMS表,以允许每个记录的两个字段中的一个为空?这会在查询此表时产生错误吗?

本质上,你可以做3件事:

  1. 别担心

    Access可以查询其中一列为null的行,这很好,不需要在列中输入数据,也不需要弹出错误。唯一真正的限制是不能添加唯一的索引,因为列的数据不是唯一的。

  2. 强制一个约束,使其中一列为空

    您可以添加一个检查约束来强制其中一个字段为null。由于这是一个表级检查约束,您甚至不需要做复杂的事情来添加它。只需在设计视图中打开表,打开属性窗格,然后在验证规则中添加[SupplyName] Is Null Or [ServiceName] Is Null

  3. 不要将供应名称和服务名称存储在单独的列中,而是将它们存储在单个列中,并使用第二列来指定该列中存储的名称类型。

我强烈建议使用选项3。它将需要更少的存储空间(因为说明符列可能很小(,允许使用一个唯一的复合索引,该索引可以在联接时提高性能,并且扩展性更强(如果您有第三种类型的名称,则可以在不修改索引或表设计的情况下添加它(。

方法3的缺点是,Access查询设计器不支持使用指定要加入哪种名称的文字的联接。对于内部联接,只需在WHERE子句中指定即可轻松修复。此外,Access将无法对像这样的关系强制执行引用完整性。

最新更新