我正在研究将图形数据库用于需要对关系之间的关系进行建模的项目。例如,A 和 B 之间的平局可能以 C 和 D 之间的平局为条件。
我还需要对节点之间的关系和其他关系进行建模。催化关系可能是一个很好的例子。代理 X 加速代理 Y 和 Z 之间的关系。关系需要包含描述关系的属性。
我可以通过使节点和关系继承自同一类型来生成关系数据库来实现这一点。因此,每个类型数据库结构的表具有 BaseType 表中的主键以及与子类型表的一对一关系:节点和关系。然后,Relationship 表具有 BaseType 表的三个外键。一个是它的主键,另外两个构成关系的 Source 和 Target。因此,源和目标之一或两者可以是关系类型。
但这包含许多小对象的连接,这符合对使用 Graph DB 性能最好的数据库的描述。
根据要求提供图表 - 包括尝试的解决方案。
我尝试通过创建关系节点来解决问题。
所以我在这里提出的解决方案涉及创建更多节点。我想这可以工作,但想知道我是否让它变得不必要的复杂。
最后一张图 - 关系数据库解决方案。这看起来更简洁一些,但不如 Graph db 方法灵活。也许效率不高?