Sql 如何在数据库中创建关系

Sql 如何在数据库中创建关系,sql,postgresql,jpa,database-design,Sql,Postgresql,Jpa,Database Design,我必须创建三个表,分别将AP、METER和M作为AP、METER作为MC和METER作为M。表MC将AP与M合并,但我应该确保M.id在从AP到MC的行中是唯一的。所以我应该确信AP永远不会引用具有相同M.id的MC。看起来是这样的: 这是一张描述我的问题的图片,红色的一行表示问题 我知道我可以在表MC中使用属性“actual”并创建pk\u meter\u id\u actual=unique,但我希望避免使用此属性。我应该保留MC.ap\u id作为历史记录,保留ap.meter\u更改作

我必须创建三个表,分别将AP、METER和M作为AP、METER作为MC和METER作为M。表MC将AP与M合并,但我应该确保M.id在从AP到MC的行中是唯一的。所以我应该确信AP永远不会引用具有相同M.id的MC。看起来是这样的:

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

我知道我可以在表MC中使用属性“actual”并创建pk\u meter\u id\u actual=unique,但我希望避免使用此属性。我应该保留MC.ap\u id作为历史记录,保留ap.meter\u更改作为连接

我通过在表MC中添加布尔属性“actual”和两个约束条件来解决此问题: 在MC(仪表id,实际值)上创建唯一的索引仪表id,其中(实际值为真); 在MC上创建唯一索引ap_id(ap_id,实际值),其中(实际值为true)