gpt4 book ai didi

database-design - Neo4j 设计 : When to use Properties for Relationships

转载 作者:行者123 更新时间:2023-12-04 02:20:20 25 4
gpt4 key购买 nike

使用 Property 的正确大小写是什么? Relationship 的属性在 Neo4j ? (包括何时以及何时不使用它们的示例)


例子

考虑 Team ATeam B 使用的计算机,其中每个团队都有自己的计算机内部值 id:

Node = Team : properties = {'name'='Team A'}
^
|
Relationship = "Used By..."
|
Node = Computer : properties = {'Type':'MacBook', 'CPU':'i7', 'id'='TeamA1-MBKi7'}

如果 Team B 具有相同的关系但具有不同的 id 值:

将属性 idComputer 节点移到关系属性中是否正确?

例如

Node = Team : properties = {'name'='Team A'}
^
|
Relationship = "Used By..." : properties = {'id'='TeamA1-MBKi7'}
|
Node = Computer : properties = {'Type':'MacBook', 'CPU':'i7'}

最佳答案

为了解决您的具体示例,您可以添加一个新的 Model 节点标签来描述一种计算机,如:

(:Team {name: 'Team A'})<-[:USED_BY]-(:Computer {id: 'TeamA1-MBKi7'})-[:IS_A]->(:Model {type:'MacBook', cpu:'i7'})

这将允许多个 Computer 节点共享相同的模型信息。

为了解决您更笼统的问题,这里有一些想法:

  1. Neo4j 目前不允许您在关系上创建索引或唯一性约束。 (请记住,对于节点:索引或唯一性约束始终与节点标签和节点属性相关联。)因此,如果您想要(或可能想要)创建涉及属性的索引或唯一性约束,您应该将它在一个节点中。
  2. 关系只能使用一次,以在 2 个节点之间建立单一连接。如果您想要(或可能曾经想要)在多个连接中包含相同的属性值,您应该考虑将它放在一个节点中。
  3. 如果一个属性总是与特定的一对节点相关(而不是只与其中一个节点相关),那么它应该是一个关系属性。

关于database-design - Neo4j 设计 : When to use Properties for Relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com