orientdb - 如何确定图形数据库(如 OrientDB)中顶点之间的边的方向
问题描述
我们如何知道一条边是在 OrientDB 这样的图形数据库中是 out() 还是 in() ?我知道边充当顶点之间的链接(这与 RDMS 中的表之间的关系相同),但是我们如何确定方向。例如,我有一些 Lecturer 和 Courses 的顶点,在这里,我想要一 (1) 个 Lecturer 到多个 Courses,即一对多的关系。那么讲师和课程之间的边缘方向是什么,是in()来自讲师还是out()来自讲师我的意思是我如何使用“select in()从讲师”或选择来编写查询out() 来自讲师?谢谢。
解决方案
边的方向与域完全相关,不会影响遍历性能(即,从顶点开始,您可以遍历传入边,其性能与传出边完全相同)。
重要的是以有意义的方式定义边缘“名称”,以便边缘方向清晰。
我将尝试用一个例子来澄清
假设您有两个顶点类:Person 和 Car。假设您想在两者之间创建关系,以表示所有权(即一个人拥有一辆汽车)。
考虑这两种表示关系的方式:
Person -Owns-> Car
和
Person <-BelongsTo- Car
如您所见,两者都很清晰并且很好地代表了领域。
当然,您有无限的选择来选择边缘名称(顺便说一句,动词通常是一个非常好的选择),因此您可以选择“所有权”之类的名称。这绝对是一个糟糕的选择,因为它不会明确方向,例如。
是吗
Person -Ownership-> Car
或者是
Person <-Ownership- Car
想象一下,在几个月不使用它之后必须对这个模式进行查询,其中有数十个语义上不明确的关系。你看问题...
最后,这只是模型有多清晰的问题。这是人的问题,不是技术问题。
我希望它有帮助
推荐阅读
- solidity - Solidity中映射的映射
- javascript - 我可以在不弹出的情况下更改 create-react-app 中公用文件夹的名称吗?
- azure-active-directory - Azure AD B2C Graph Api - 如何获取所有组的用户
- sql - 结合 TG_TABLE_NAME 和 now() SQL 的简单触发器
- c# - 如何在 C# 中生成包含另一个模型的模型的 JSON 模式
- ios - 在 UITableView 和自定义单元格之间传递数据并存储它
- phylogeny - 在多少个内核上运行矩阵算法?
- jquery - CSS 变量不适用于多个 SVG 渐变
- coldfusion - 如何从 Array Coldfusion 中删除重复值
- javascript - 如何摆脱 Chrome 中的黄色自动完成填充物?