我在双向关系中遇到了这堵墙。如何减轻Neo4j中家族树中的双向关系?
假设我试图创建一个代表家族树的图。这里的问题是:
*蒂米可以是苏丝的兄弟,但
*苏丝不能是蒂米的兄弟。
因此,有必要在两个方向来模拟这种:
(当然,技术上我可以说SIBLING_TO,只留下一个边缘......什么我不知道的词汇是当我试图将奶奶连接到孙子时。)
当这一切都说完之后,我非常确定在这个例子中方向很重要。
我正在读这个blog post,关于常见的Neo4j错误。作者指出,这种双向性不是在Neo4j中建模数据的最有效方式,应该避免。
我开始同意。我建立了2个系列的模拟集:
我发现我试图运行的很多查询都非常缓慢。这是因为图表的“全部连接到所有”性质,至少在每个相应的家庭中。
我的问题是这样的:
1)我正确地说双向性不理想吗? 2)如果是这样,我的家庭树的例子是以任何其他方式表示的......在我的问题可能发生的许多情况下,什么是'最佳实践'?
3)如果无法用另一种方式表示家谱,技术上仍然可以以某种方式写出查询以解决1)的问题?
感谢您阅读本文和您的想法。
相同边缘名的双向链接是多余的,不能增加价值。兄弟和姊妹传达一些信息,尽管这可以从物业推断出来。一个(孩子) - [:家长] - >(父母)关系让你成为父母/孩子的关系,并让你获得整个生物家庭关系,并且可以为每一代父母/孩子使用它。一步一步的孩子将是另一回事。 –