我有三个数据库表:ALIENS,MONSTERS和TROPHIES。
每个ALIEN可以有多个TROPHIES。 每个MONSTER都可以有多个TROPHIES。 每个TROPHY必须只有一个WINNER(ALIEN XOR MONSTER)。
有没有办法让TROPHY表中的外键引用ALIEN或MONSTER的主键?
或者简单地使用两个表更容易:ALIEN_TROPHY表和MONSTER_TROPHY表(即使它们是相同的)?
答案 0 :(得分:1)
您可以使用检查约束创建两个外键,该约束表明其中一个是空的:
create table alien (id int primary key);
create table monster (id int primary key);
create table trophy (id int primary key,
alien_id int references alien(id),
monster_id int references monster(id),
check (alien_id is null <> monster_id is null)
);