1

我试图限制两个实体之间的多对多关系确保这些实体都共享相同的附加父实体。

即,工作,索赔,类别,索赔类别

Claim 有一个 Job,Category 有一个 Job,ClaimCategory 分别有一个 Claim 和一个 Category。

ClaimCategory 行必须确保 Claim 和 Category 都属于同一个 Job。

我所做的是将列 ClaimJobId 和 CategoryJobId 添加到 ClaimCategory 表中。Claim 的外键是 (ClaimId, ClaimJobId),Category 的外键是 (CategoryId, CategoryJobId)。然后我添加一个约束,确保 ClaimJobId = CategoryJobId。

这是普遍接受的最佳做法吗?在连接行中重复指定 JobId 似乎是错误的。

如果该引擎提供任何独特的选项,我正在使用 postgresql。

谢谢。

4

1 回答 1

1

我认为更好的解决方案是在Claim的(ClaimId,JobId)和Category的(CategoryId,JobId)上添加唯一约束,然后我只需要在连接表中的一个JobId。我可以让连接中的外键分别是 (CategoryId, JobId) 和 (ClaimId, JobId)。

于 2013-09-06T22:06:59.407 回答