Database design Neo4j设计:何时为关系使用属性
在中使用a属性的合适情况是什么?(包括何时和何时不使用它们的示例)Database design Neo4j设计:何时为关系使用属性,database-design,neo4j,Database Design,Neo4j,在中使用a属性的合适情况是什么?(包括何时和何时不使用它们的示例) 例子 考虑团队a和团队B使用的计算机,其中每个团队都有自己的计算机内部值id: Node = Team : properties = {'name'='Team A'} ^ | Relationship = "Used By..." | Node = Computer : properties = {'Type':'MacBook', 'CPU':'i7', 'id'='TeamA1-MBKi7'} 如果
例子 考虑
团队a
和团队B
使用的计算机,其中每个团队都有自己的计算机内部值id
:
Node = Team : properties = {'name'='Team A'}
^
|
Relationship = "Used By..."
|
Node = Computer : properties = {'Type':'MacBook', 'CPU':'i7', 'id'='TeamA1-MBKi7'}
如果团队B
具有相同的关系,但id的值不同
:
将属性id
移出Computer
节点并移动到关系属性中是否正确
e、 g
为了解决您的具体示例,您可以添加一个新的
模型
节点标签来描述一种计算机类型,如下所示:
(:Team {name: 'Team A'})<-[:USED_BY]-(:Computer {id: 'TeamA1-MBKi7'})-[:IS_A]->(:Model {type:'MacBook', cpu:'i7'})
(:Team{name:'Team A'})(:Model{type:'MacBook',cpu:'i7'})
这将允许多个计算机
节点共享相同的型号信息
为了回答您更一般的问题,以下是一些想法:
有很多方法可以对其进行建模。但是要回答你应该怎么做,你能告诉我们更多关于这个ID应该是什么意思吗?好的,一个团队使用一台特定的计算机。其他团队可能使用同一台计算机。
TeamA1-MBKi7
是什么意思?TeamA1-MBKi7
只是每个团队中使用的唯一参考,用于说明他们对特定计算机的使用情况。这个示例只是一个假设的示例,问题实际上是关于何时以及为什么可以在关系中使用属性字段。这个例子只是作为一个理论案例来引发讨论。这个问题实际上是针对何时以及何时不在关系中使用属性。我试图确定您为什么不想使用关系中的属性来描述数据
(:Team {name: 'Team A'})<-[:USED_BY]-(:Computer {id: 'TeamA1-MBKi7'})-[:IS_A]->(:Model {type:'MacBook', cpu:'i7'})