我有以下数据库架构:
members_company1(id,name,...); members_company2(id,...); profiles(memberid,membertypeid,...); membertypes(id,...) [ { id : 1,name : 'company1',... },{ id : 2,name : 'company2',... } ];
因此,每个配置文件属于某个成员,来自company1或company2,具体取决于membertypeid值
members_company1 ————————— members_company2 ———————————————— ———————————————— id ——————————> memberid <——————————— id name membertypeid name /|\ | | profiles | —————————— | memberid ————————+ membertypeid
我想知道是否可以在配置文件表中创建基于memberid和membertypeid对的引用完整性的外键来引用members_company1或members_company2表记录?
解决方法
外键只能引用一个表,如
documentation(强调我的)中所述:
A foreign key (FK) is a column or combination of columns that is used
to establish and enforce a link between the data in two tables.
但是如果你想开始清理,可以创建一个@KevinCrowell建议的成员表,从两个members_company表中填充它并用视图替换它们.您可以在视图上使用INSTEAD OF触发器将更新重定向到新表.这仍然是一些工作,但它将是一种修复您的数据模型而不破坏现有应用程序的方法(当然,如果它在您的情况下是可行的)