You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在MS Access中建立Players与Goals表的指定关联并解决关系已存在提示?

解决Access中关联Players主键到Goals多个外键的关系已存在问题

首先,我得帮你理清这个问题的来龙去脉:你想让Players表的id_player(主键)分别关联Goals表的player_scoreplayer_assist两个字段,这个需求本身是完全符合数据库关系逻辑的(一个球员可以对应多条进球、多条助攻记录),但Access提示“The relationship already exist”,大概率是已存在其中一条关联,或者关系窗口有缓存残留,下面是具体的解决步骤,以及对你方案正确性的确认:

一、可行的解决步骤

1. 先清理现有关联关系

  • 打开Access的数据库工具选项卡,点击「关系」按钮打开关系窗口
  • 在窗口中找到PlayersGoals之间已有的关系连线(如果有的话),右键选择「删除」,确认删除操作(放心,这只会删除关系定义,不会删除任何表数据)
  • 关闭关系窗口,记得保存当前的关系更改

2. 重新建立两个独立的关联

  • 再次打开关系窗口,确保PlayersGoals表都已添加到窗口中
  • 拖动Players表的id_player字段,到Goals表的player_score字段上,弹出关系设置对话框
  • 根据需求勾选实施参照完整性(如果需要限制外键只能引用存在的球员ID),点击「创建」完成第一个关联
  • 重复上述拖动操作:把Playersid_player拖到Goalsplayer_assist字段,同样设置参照完整性后点击「创建」
  • 这时候你会看到关系窗口里有两条从PlayersGoals的连线,分别对应两个外键关联,不会再出现“关系已存在”的提示

二、为什么会出现这个提示?

  • 最常见的原因是你之前已经建立了id_player和其中一个外键(比如player_score)的关系,再次尝试建立时误操作重复选择了已有的关联对
  • 少数情况是Access的关系窗口缓存了旧的关系定义,关闭再重新打开窗口就能解决

三、你的方案正确性确认

你的核心需求(用Players的主键关联Goals的两个外键字段)是完全正确的!这是典型的一对多关系扩展:一个球员(主键)可以对应多条进球记录(player_score),也可以对应多条助攻记录(player_assist),分别建立两个独立的关联完全符合数据库设计规范。

如果你的截图显示关系窗口中已有一条PlayersGoals的连线,或者提示弹窗直接指向已存在的关联,那按照上面的步骤清理后重建就可以解决问题。


内容的提问来源于stack exchange,提问作者Radim

火山引擎 最新活动