三表关系-三个ID的唯一性

时间:2019-04-02 12:54:08

标签: sql postgresql

我有三个表:

Table A (int id, String name)
Table B (int id, String processName)
Table C (int id, String containerName)

这里的关系是-表A的对象可以具有表B的对象。表B的对象可以具有表C的对象。表A的对象可以具有表C的对象。本质上-我有一个“三角形”工作流程。

所以这个想法是要有模仿这个的联结表:

Table A_B (aId, bId)
Table B_C (bId, cId)
Table A_C (aId, cId)

我还有一个业务需求,要求aId,bId和cId的组合必须唯一。如果我有一个“平面”表,它将看起来像这样:

Table X (aId, bId, cId)
    Unique key on the three

现在,很明显,我可以在每个引用表ID上都有一个主键,并在联结表的两列上都有一个主键。我宁愿不要将数据点粉碎在一起以符合业务需求。我想使对象解耦。

但是我将如何进一步代表这种关系以遵守业务要求呢?我一直在阅读复合键,我不确定这是否是我的解决方案。

0 个答案:

没有答案