我担心我没有从Neo4J的关系中获得全部收益。虽然我们使用它们来关联两个节点(当然),但我们很少在关系中添加属性,我觉得我们错过了更大的图景。
考虑一个有EVENT并受影响的人的案例。我们希望所有人都确认他们已被告知此事件。
这是我们的工作,我认为这不是很好:
(e:EVENT)-[:NOTIFICATION]->(:EVENT_STATUS)-[:AFFECTED]->(a:PERSON)
现在情况并非如此糟糕,因为我们需要EVENT,而且我们已经拥有了PERSON。所以我们正在添加连接它们的东西。有用。但是,EVENT_STATUS的唯一目的是跟踪通知日期和PERSON的确认信息。事实是,感觉就像我们正在实现关系数据库结构。
将通知日期和PERSON确认添加到关系中会是错误/自杀吗?
(e:EVENT)-[:INFORMED {notification_date: 123123123,
confirmation_date: 123123999,
confirmation_type: 'ATTENDING'}]->(a:PERSON)
请帮助我理解关系中属性的目的!
编辑 - 英语......是一项技能。
答案 0 :(得分:1)
您提出的解决方案很好,因为您正在跟踪有关2个节点之间特定类型关系的不同信息。这正是关系属性的用途。
您无需像现在一样添加额外的关系和节点。您不仅浪费资源,而且还会使您的查询变得不必要地复杂。