如何在数据库中创建关系

时间:2021-02-05 13:01:14

标签: sql postgresql jpa database-design

我必须创建三个表 ACCOUNTING_POINT 作为 AP,METER_CHANGE 作为 MC,METER 作为 M 表 MC 会将 AP 与 M 连接,但我应该确保 M.id 在从 AP 到 MC 的行中是唯一的。所以我应该确定 AP 永远不会引用具有相同 M.id 的某些 MC。它看起来像这样:

这是描述我的问题的图片红色行表示问题

image

我知道我可以在表 MC 中使用属性“actual”并创建 pk_meter_id_actual = unique 但我想避免使用这个属性。我应该保留 MC.ap_id 用于历史记录和 AP.meter_change 用于连接

1 个答案:

答案 0 :(得分:0)

It looks like this:

我通过在表 MC 中添加布尔属性“actual”和两个约束来解决它: CREATE UNIQUE INDEX meter_id ON MC (meter_id, actual) WHERE (actual is true); CREATE UNIQUE INDEX ap_id ON MC (ap_id, actual) WHERE (actual is true);