参照完整性问题(Access 2007)

参照完整性问题(Access 2007)

我恳请一位专家提供帮助,可能是数据库设计师或管理员。

我在为两个表设置参照完整性时遇到了这个问题,设置参照完整性不是问题,但我遇到的挑战是,当我完成设置这个参照完整性时,它不允许另一个表中出现空值,这意味着两个表应该包含相同数量的行,这将使两个表相对应

这就是我想要做的一个例子:

  • 我正在创建一张表,一张名为“Stock”的表用于存储商店中可用的商品或配件,另一张名为“Customer_Details”的表
  • 我想在两个字段中设置一个字段(即名为“可用性”的字段),该字段将是“是/否”数据类型,该字段应该存在于两个字段中
  • 每当客户购买从“库存”表中选择的特定配件时,它都会自动更改库存中“可用性”字段的值,

我所知道并一直试图做的是在关系窗口中设置参照完整性,但不幸的是,这行不通,

我恳请一位可以指导我如何进行此操作的人,因为我刚开始使用 Access 2007。

答案1

“我面临的挑战是,当我完成此参照完整性的设置后,它不允许另一个表中出现空值”

Nul值是允许的,但是有限制:

但是,您可以在外键中输入 Null 值。这指定记录不相关。例如,您不能将订单分配给不存在的客户。但是,您可以通过在 CustomerID 字段中输入 Null 值来获得未分配给任何人的订单。


来源如何定义 Access 数据库中表之间的关系

参照完整性

引用完整性是 Access 使用的一套规则,用于确保相关表中的记录之间的关系有效,并且您不会意外删除或更改相关数据。当满足以下所有条件时,可以设置引用完整性:

  • 主表中的匹配字段是主键或具有唯一索引。
  • 相关字段具有相同的数据类型。有两个例外。自动编号字段可以与 FieldSize 属性设置为长整型的数字字段相关,而 FieldSize 属性设置为复制 ID 的自动编号字段可以与 FieldSize 属性设置为复制 ID 的数字字段相关。
  • 两个表都属于同一个 Access 数据库。如果表是链接表,则它们必须是 Access 格式的表,并且您必须打开存储它们的数据库才能设置引用完整性。无法对来自其他格式数据库的链接表强制实施引用完整性。

使用参照完整性时适用以下规则:

  • 您不能在相关表的外键字段中输入主表主键中不存在的值。但是,您可以在外键中输入 Null 值。这指定记录不相关。例如,您不能将订单分配给不存在的客户。但是,您可以通过在 CustomerID 字段中输入 Null 值来获得未分配给任何人的订单。
  • 如果相关表中存在匹配的记录,则您无法从主表中删除记录。例如,如果“订单”表中有分配给员工的订单,则您无法从“员工”表中删除员工记录。
  • 如果该记录具有相关记录,则您无法更改主表中的主键值。例如,如果“订单”表中有分配给该员工的订单,则您无法更改“员工”表中的员工 ID。

相关内容