我正在研究将图形数据库用于需要对关系之间的关系进行建模的项目。例如,A 和 B 之间的平局可能取决于 C 和 D 之间的平局。
我还需要对节点和其他关系之间的关系进行建模。催化关系可能是一个很好的例子。代理 X 加速代理 Y 和 Z 之间的关系。关系需要包含描述关系的属性。
我可以通过使节点和关系从同一类型继承来生成关系数据库来实现这一点。因此,每个类型数据库结构的表在 BaseType 表中具有主键,并且与子类型表:节点和关系具有一对一的关系。关系表具有三个指向 BaseType 表的外键。一个是它的主键,另外两个构成关系的源和目标。因此,源和目标之一或两者都可以是关系类型。
但这包含了许多小对象的连接,这符合应该在图形数据库中表现最佳的数据库的描述。
根据要求绘制图表 - 包括尝试的解决方案。
我试图通过创建关系节点来解决这个问题。
所以我在这里提出的解决方案涉及创建更多节点。我想这可以工作,但想知道我是否让它变得不必要地复杂。
最后一张图 - 关系数据库解决方案。这看起来更简洁,但不如 Graph db 方法灵活。也许效率不高?
最佳答案
您通过添加节点/顶点来解决这些连接关系来对“带边的边”进行建模的方法是有意义的。对于公开属性图模型的图数据库(如 Neo4j 、 Titan 和其他 Blueprints 启用的图),模拟 hypergraph是获得该功能的正确方法。在 gremlin-users 邮件列表中有一个正在进行的讨论,现在正在蓝图的上下文中讨论这个主题...你可以阅读它 here .
关于nosql - Neo4j(或其他一些图形数据库)可以处理关系之间的关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601589/