SQL两个不同表的外键

时间:2017-08-10 12:43:40

标签: oracle foreign-keys data-modeling liquibase

我有一个问题,比如
表A:
- 表BCId
表B:
- Id
表C:
- Id

我正在寻找一种创建外键表A的方法,其中一个条目可以在表B或表C中

示例条目:
表A:
  - 表BCId:1
  - 表BCId:2
表B:
- Id:1
表C:
- Id:2

我想尽可能避免:
- 表A中的两列 - 默认值
- 附加表
- 无法创建基础实体

欢迎每一个想法

1 个答案:

答案 0 :(得分:0)

如果您不想在表A中创建新列。

然后您可以为B和C创建一个父表。

tableBC:
  id

然后创建与表B和C到表BC的1-1关系。

tableB:
  id,
  parent -- 1-1 foreign key to tableBC

tableC:
  id,
  parent -- 1-1 foreign key to tableBC

现在,在表A中

tableA:
  id,
  TableBCId -- foreign key to tableBC

我们已经使用这种方法解决了类似的问题。