我有三个数据库表:ALIENS、MONSTERS 和 TROPHIES。
每个 ALIEN 可以有多个 TROPHIES。每个 MONSTER 可以有多个奖杯。每个 TROPHY 必须有一个 WINNER (ALIEN XOR MONSTER)。
有没有办法在 TROPHY 表中有一个引用 ALIEN 或 MONSTER 主键的外键?
还是简单地拥有两个表更容易:一个 ALIEN_TROPHY 表和一个 MONSTER_TROPHY 表(即使它们是相同的)?
您可以创建两个带有检查约束的外键,其中一个为空:
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)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
681 次 |
最近记录: |