Neo4j 开发部门/供应商/项目的图形数据库模型

Neo4j 开发部门/供应商/项目的图形数据库模型,neo4j,cypher,Neo4j,Cypher,我目前正在加速图形数据库的开发,为此我正在通过一系列问题学习密码。但是,我对我选择的设计不是100%满意,因为我必须将关系与节点匹配,才能使一些查询工作 我发现了一些相关的建议,但它们涉及到复制节点(重复它们),而事实上它们确实表示相同的事情。这似乎是一个有待解决的更新问题 我的设计目前已经完成 (:Dept {name,floor})-[:SOLD {quantity}]->(:Item {name,type})<-[:SUPPLIES {dept,volume)]-(:Compa

我目前正在加速图形数据库的开发,为此我正在通过一系列问题学习密码。但是,我对我选择的设计不是100%满意,因为我必须将关系与节点匹配,才能使一些查询工作

我发现了一些相关的建议,但它们涉及到复制节点(重复它们),而事实上它们确实表示相同的事情。这似乎是一个有待解决的更新问题

我的设计目前已经完成

(:Dept {name,floor})-[:SOLD {quantity}]->(:Item {name,type})<-[:SUPPLIES {dept,volume)]-(:Company {name,address})

(:Dept{name,floor})-[:saled{quantity}]>(:Item{name,type})您想存储和查询
:Dept
:Item
:Company
之间的三角关系。这不能通过线性关系模式来实现。比较实体ID不是Neo4j的方法,您会忽略图形数据库的优势

(假设我理解您的用例场景)我将引入一个类型为
:SupplyEvent
的附加节点,它与
:Dept
:Item
:Company
有关系。如果您想要部门、项目和(例如)客户之间的关系,您还可以以类似的方式拆分
:销售的
关系

现在,您可以查询向哪些部门提供哪些项目的所有公司(无需比较任何ID):

匹配(公司:公司)(部门:部门),
(se)-[:提供的]->(项目:项目)
退货公司、物品、部门