【发布时间】:2020-08-04 09:28:21
【问题描述】:
假设我有一个 Person 实体。
一个人可以与一个或多个其他人建立“友谊”关系。
我会用表格中的条目来建模
| Person Id 1 | Person Id 2 |
但是,从语义上讲,如果人 1 是人 2 的朋友
| Person Id 1 | Person Id 2 |
相当于说第 2 个人是第 1 个人的朋友
| Person Id 2 | Person Id 1 |
当然,Java 中有很多方法,在查询中,例如((person1=x AND person2=y) OR (person1=y AND person2=x)),我会确保这种等价性得到尊重。但是有什么更有效的方法可以在在数据库中 本身以及在后续的存储库、JPQL 查询等中进行建模。
总结;我希望能够检查第 1 个人是否是第 2 个人的朋友,而无需进行两次检查 - (第 1 个人与第 2 个人的朋友)或(第 2 个人与第 1 个人的朋友)。习惯上,我只想说(是第 1 个人和第 2 个人的朋友)。
我想隐含地模拟 A 与 B 成为朋友然后 B 自动与 A 成为朋友的等价性。
【问题讨论】: