一对多关系失败

Posted

技术标签:

【中文标题】一对多关系失败【英文标题】:One to many relationship failure 【发布时间】:2014-05-27 18:02:05 【问题描述】:

我正在尝试在 Access 中创建一对多关系。这是我的挑战:

我在一个专门的表格中有一个资产经理列表(一个),另一个表格中有一个基金列表(多个)。

每个资产经理可能有多个基金与其关联,因此我决定通过创建两个表将两者分开。

我在asset managers 表中有SponsorID 作为我的PK,我在funds 表中有CounterpartyID 作为我的PK。

我在funds 表中添加了一个名为SponsorID 的字段以创建链接表的可能性,然后我打开关系对话框以构成实际链接,其中资产经理表中的字段SponsorID (一)链接到资金表中的SponsorID 字段,这应该将FK 带入资金表中。

当我运行查询以查看与给定资产管理公司关联的所有资金时,我得到空白结果。我不知道为什么会这样,所以任何帮助都将不胜感激。

【问题讨论】:

您应该提供您正在使用的查询。您所描述的是 1 对 N 关系的标准原则,因此缺陷必须在您的查询中。 可能,但这里可能存在更根本的缺陷。我应该提一下,资金表中的 SponsorID 字段是空的,这意味着我没有填充它。当然,如果我填充它,那么一切正常,但如果我必须手动填充它,那么创建关系的目的是什么?我可以将所有内容存储在一张表中...我希望我可以上传文件,但似乎不允许 仅仅创建一个关系不会填充另一个表。怎么可能?是否由关系决定经理将拥有哪些资金?不。当然,您需要手动填充它。对外部连接(左/右)做一些阅读,以找到一种方法来检索没有相应资金的经理,但除此之外,您需要更好地理解关系数据库的概念。祝你好运。 @parakmaikos ...我的话 ;) 【参考方案1】:

Bernardo,请阅读有关数据库创建和管理的内容。网上有很多不错的免费教程。 表格无法神奇地嗅出哪些资金属于哪个经理:您必须告诉他们。你是怎么做到的?确切地说:通过将资金表中的 managerID 设置为应该连接到该资金的经理的 ID。然后关系开始有意义:当您打开经理表时,您还可以看到哪些资金是相关的(因为访问找到它们,因为您提供了连接......)

【讨论】:

是的,我错过了一个关键部件。使用子表单顶部填充信息!谢谢

以上是关于一对多关系失败的主要内容,如果未能解决你的问题,请参考以下文章

EF Core / Sqlite 一对多关系在唯一索引约束上失败

跨一对多关系选择 COUNT

Spring Data REST 多对多失败:一对多工作

EF Core SQLite 错误 19:尽管配置了一对多,但“外键约束失败”

Laravel 一对多关系和一对一关系

数据库一对一对多多对多关系