SQL Server外键到多个表

Mak*_*Vi. 6 sql t-sql sql-server referential-integrity foreign-keys

我有以下数据库架构:

members_company1(id, name, ...);
members_company2(id, name, ...);
profiles(memberid, membertypeid, ...);
membertypes(id, name, ...)
[ 
       { id : 1, name : 'company1', ... }, 
       { id : 2, name : 'company2', ... }
];
Run Code Online (Sandbox Code Playgroud)

因此,每个配置文件属于某个成员,来自company1或company2,具体取决于membertypeid

members_company1     —————————      members_company2     
————————————————                    ————————————————
id      ——————————> memberid <———————————         id
name               membertypeid                 name
                       /|\
                        |  
                        |  
      profiles          |  
      ——————————        |  
      memberid  ————————+  
      membertypeid
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以在profiles表中为参照完整性创建一个外键,memberid并且membertypeid可以引用member_company1或members_company2表记录?

Pon*_*ife 5

外键只能引用一个表,如文档中所述(强调我的):

外键 (FK) 是一个列或列的组合,用于建立和强制两个表中的数据之间的链接。

但是,如果您想开始清理内容,您可以members按照 @KevinCrowell 建议创建一个表,从两个members_company表中填充它并用视图替换它们。您可以INSTEAD OF在视图上使用触发器将更新“重定向”到新表。这仍然是一些工作,但这将是在不破坏现有应用程序的情况下修复数据模型的一种方法(当然,如果在您的情况下可行的话)