关于双向关系,我遇到了这堵墙。
假设我正在尝试创建一个代表家谱的图表。这里的问题是:
* Timmy 可以是 Suzie 的兄弟,但
* Suzie 不能是 Timmy 的兄弟。
因此,有必要在两个方向上对此进行建模:
(当然,从技术上讲,我可以说 SIBLING_TO 并且只留下一个优势......当我试图将祖母与孙子联系起来时,我不确定词汇是什么。)
当一切都说完了,我很确定在这个例子中方向很重要这一事实是没有办法的。
我正在阅读这篇关于 Neo4j 常见错误的博文。作者指出,这种双向性并不是在 Neo4j 中建模数据的最有效方式,应该避免。
我开始同意了。我建立了一个由 2 个系列组成的模拟集:
我发现我尝试运行的很多查询都非常非常慢。这是因为图表的“所有连接到所有”的性质,至少在每个相应的系列中。
我的问题是:
1)我是否正确地说双向性并不理想?
2)如果是这样,我的家谱示例是否可以以任何其他方式表示......在我的问题可能出现的许多情况下,“最佳实践”是什么?
3) 如果无法以另一种方式表示家谱,在技术上是否仍然可以以某种方式编写查询来解决 1) 的问题?
感谢您阅读本文和您的想法。