首页 > 解决方案 > 如何确定图形数据库(如 OrientDB)中顶点之间的边的方向

问题描述

我们如何知道一条边是在 OrientDB 这样的图形数据库中是 out() 还是 in() ?我知道边充当顶点之间的链接(这与 RDMS 中的表之间的关系相同),但是我们如何确定方向。例如,我有一些 Lecturer 和 Courses 的顶点,在这里,我想要一 (1) 个 Lecturer 到多个 Courses,即一对多的关系。那么讲师和课程之间的边缘方向是什么,是in()来自讲师还是out()来自讲师我的意思是我如何使用“select in()从讲师”或选择来编写查询out() 来自讲师?谢谢。

标签: orientdbgraph-databases

解决方案


边的方向与域完全相关,不会影响遍历性能(即,从顶点开始,您可以遍历传入边,其性能与传出边完全相同)。

重要的是以有意义的方式定义边缘“名称”,以便边缘方向清晰。

我将尝试用一个例子来澄清

假设您有两个顶点类:Person 和 Car。假设您想在两者之间创建关系,以表示所有权(即一个人拥有一辆汽车)。

考虑这两种表示关系的方式:

Person -Owns-> Car

Person <-BelongsTo- Car

如您所见,两者都很清晰并且很好地代表了领域。

当然,您有无限的选择来选择边缘名称(顺便说一句,动词通常是一个非常好的选择),因此您可以选择“所有权”之类的名称。这绝对是一个糟糕的选择,因为它不会明确方向,例如。

是吗

Person -Ownership-> Car

或者是

Person <-Ownership- Car

想象一下,在几个月不使用它之后必须对这个模式进行查询,其中有数十个语义上不明确的关系。你看问题...

最后,这只是模型有多清晰的问题。这是人的问题,不是技术问题。

我希望它有帮助


推荐阅读