Microsoft Access 2019,一对一关系 (SuperType -> SubType)

Microsoft Access 2019,一对一关系 (SuperType -> SubType)

我对如何在 Microsoft Access 2019 中设置一对一关系感到沮丧。我有一个tblAccounts子类型为tblVendors和的tblClients

现在我可能还没有完全理解它应该如何工作,但是我的“Access 2019 Bible”几乎没有涉及这个主题,而且我在网上也找不到任何这样的例子。

为了简单起见,我的设置是:

tblAccounts
-----------
AccountID    [AutoNumber, PK]
AccountName  [ShortText]
AccountData...

tblClients
---------
AccountID    [Number, PK-FK]
ClientData...

tblVendors
---------
AccountID    [Number, PK-FK]
VendorData...

我相信我已经正确设置了关系... 到目前为止,我可以创建一个帐户记录,然后单独创建一个客户/供应商记录。它与引用完整性是一对一的,因此只允许存在的 AccountID,并且只允许一次。但我必须手动输入帐户的 ID。

tblAccount当我在和子类型之间创建 SELECT 查询时,我正在寻找如何让记录AccountID自动共享相同的内容。或者我应该使用将次要记录添加到客户/供应商表中的宏吗?或者我的做法完全错误/我的表需要重新配置。

目前,我的项目还处于表和查询设计阶段。所以想知道在这个阶段是否无法完成?

谢谢大家!


编辑:

澄清一下,

我希望加强tblAccounts与其子类型之间的关联关系。因此,无论何时,只要通过 AccountID 创建与该客户或供应商相关的记录tblClienttblVendro晚餐记录,都可以。tblAccount

与现在相反,我必须tblAccounts先在中创建一个记录,然后在中创建一个记录tblClient/Vendor并手动输入 AccountID tblAccounta

在我的设计中,此时我并没有尝试提取、连接或推断任何额外的数据,我只是想了解一对一在 Access 中的实际工作方式,以及我是否真的应该使用它。客户表和供应商表是否应该彼此独立,尽管它们在大多数设置数据中都是相似的?我的“Microsoft Access 2019 Bible,由 Michael Alexander 和 Dick Kulsleika 编写”使用此帐户 -> 客户/供应商关系来描述一对一,但没有提供设置示例。我只是认为,如果他们花时间在一本实际出版的书中提到这种关系,那么这种关系应该存在。

答案1

您希望能够将一行存储在外键完整性约束中的从属表中,并且这将自动创建父行。但这行不通,因为:

  1. 从属表中的商店无法触发父表中的自动编号属性
  2. Access 不会为了完整性约束而这么做。

您应该考虑更适合您需求的其他机制:

  • 数据宏
    使用此功能,您可以创建一个宏,该宏将由从属表上的插入触发。

  • SQL 过程
    您可以使用它创建一个过程,在检查父行是否存在后,重复执行将行插入从属表的操作,如果不存在则使用默认值创建父行。您还可以创建用于更新或删除父表的过程。

使用上述方法之一可能会使外键完整性约束变得多余。如果没有它,某些数据库操作可能会变得更快。

相关内容