0

我有 2 个表都有主 ID:

CREATE TABLE Table1
(   Id  INT NOT NULL AUTO_INCREMENT,
CONSTRAINT t1_pkey PRIMARY KEY (Id));

CREATE TABLE Table2
(   Id  INT NOT NULL AUTO_INCREMENT,
CONSTRAINT t2_pkey PRIMARY KEY (Id));

我有第三张表,我正在尝试设置外键

CREATE TABLE Action
(   TableId INT NOT NULL AUTO_INCREMENT,
CONSTRAINT ac_pkey PRIMARY KEY (Id));

我需要添加一个可以引用 table1 或 table2 的外键,具体取决于哪个具有值。这是可能的还是我必须为表 1 和 2 设置父表?

4

1 回答 1

1

外键不可能引用一个表或另一个。

  • 您可以将table1andtable2type列组合,然后将组合id, type作为组合表的主键和中的外键Action
  • 您可以创建一个新表,它是两者的父表,table1以及table2Action
  • Action您可以在, 在该引用上创建两个单独的列,在table1另一个引用上创建两个单独的列,table2然后创建一个检查约束以确保仅填充其中一个。

您更喜欢哪种方法将归结为您要建模的内容。

于 2013-11-12T05:50:19.147 回答