首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图数据库的边定义

图数据库的边定义
EN

Stack Overflow用户
提问于 2017-05-09 03:28:38
回答 1查看 129关注 0票数 1

我们将收到传达以下信息的数据:

代码语言:javascript
复制
Object1 **is related to** Object2
Object1 **has relationship ID R1** with Object2

Object1Object2都与任意数量的对象进一步相关。is related to的“轴”将用于递归地回答一个查询,例如“与Object1 1相关的人”。并且,has relationship ID R1的“轴”将用于回答一个查询,例如,“谁是关系ID R1的当事方”。

我对Neo4j有介绍性的知识,问题不在于在这样的图形上执行CRUD的代码。看来,边的数目应该等于在两个顶点之间运行的查询类型(可以预见)。

你能指导我一个设计模式来定义这个数据库吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 14:22:13

如果我正确理解,您关注的是由于边缘类型不断增加而导致的模式更改的影响。

图引擎中,您可以在架构中定义带有值的边缘,以便多个边缘类型('axis')可以用单个类型表示,该类型与指示边缘类型的枚举字段相关联。然后在您编写的查询中:

代码语言:javascript
复制
g.V(a).outE(e => e.type == EdgeType.isRelatedTo).outV(b => ...)
g.V(b).outE(e => e.type == EdgeType.hasRelationshipIDR1).outV(a => ...)

此模式也适用于没有显式支持带有值的边的后端,因为可以将边缘建模为顶点:

代码语言:javascript
复制
g.V(a).outE().outV(e => e.type == EdgeType.isRelatedTo).outE().outV(b => ...)
g.V(b).outE().outV(e => e.type == EdgeType.hasRelationshipIDR1).outE().outV(a => ...)

代价是额外的一步穿越。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43860567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档