You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access迁移至SSMS:同RDB表经中间表双实例关联的实现问题

解决SSMS中自关联表的关系图展示问题

完全不需要创建T-Organisation的物理副本,用表别名就能完美解决,不管是写查询SQL还是在SSMS关系图里展示关联都适用,这也是符合数据库设计规范的最优方案。

一、SQL查询里的实现

和你Access生成的逻辑一致,只是可以用更易懂的别名代替自动生成的T-Organisation_1,比如用ParentOrg代表父组织,SubsidiaryOrg代表子组织,可读性更强:

SELECT ParentOrg.[Organisation Unit Id] AS ParentOrgId,
       ParentOrg.[Organisation UnitName] AS ParentOrgName,
       SubsidiaryOrg.[Organisation Unit Id] AS SubsidiaryOrgId,
       SubsidiaryOrg.[Organisation UnitName] AS SubsidiaryOrgName
FROM [T-Organisation] AS ParentOrg
INNER JOIN [T-OrganisationSubsidiary] 
  ON ParentOrg.[Organisation Unit Id] = [T-OrganisationSubsidiary].[Parent Organisation Unit]
INNER JOIN [T-Organisation] AS SubsidiaryOrg
  ON [T-OrganisationSubsidiary].[Subsidiary Organisation Unit] = SubsidiaryOrg.[Organisation Unit Id];

二、SSMS关系图里的操作步骤

SSMS其实支持添加同一个表的多个实例,只是操作和Access不一样,步骤如下:

  1. 打开数据库关系图,右键空白处选「添加表」;
  2. 找到T-Organisation双击添加第一次;
  3. 再找到T-Organisation双击添加第二次,SSMS会自动给第二个实例命名为T-Organisation_1;
  4. 接下来建立关联:
    • 把T-Organisation的Organisation Unit Id拖到T-OrganisationSubsidiary的Parent Organisation Unit字段;
    • 把T-Organisation_1的Organisation Unit Id拖到T-OrganisationSubsidiary的Subsidiary Organisation Unit字段;
  5. 要是觉得默认别名不好懂,右键关系图里的表实例,选「属性」,在「别名」栏改成ParentOrg这类有意义的名字就行。

别创建物理副本的原因

  • 纯纯浪费存储空间,同一个数据存两份完全没必要;
  • 维护起来麻烦,更新父表时还得同步副本,很容易出现数据不一致;
  • 违反数据库规范化设计原则,冗余数据会引发一堆后续问题。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:56:16