我是Cypher的新手并尝试设计图形数据库并存储用户行为。提前谢谢!
案例: 1.用户访问了网页 2.用户拥有设备(id:xxxxx)
在UML类图中,箭头(关系)指向父类
但是,我的观点,并非Cypher中的所有关系都是Parent-Child类型,这是否意味着我不应该将这种概念应用于Cypher?
所以,问题是"如何设计关系的方向"?
(user)-[r:visited]->(webpage {url:xxx})
(user)-[r:owned]->(mobileDevice {uuid:xxx})
- 或 -
(user)<-[r:visitedBy]-(webpage {url:xxx})
(user)<-[r:owned]-(mobileDevice {uuid:xxx})
再次感谢您
答案 0 :(得分:2)
这是一个常见的问题。答案是,它取决于你!关系类型可以是您选择的任何类型,您应该选择最舒适的方式。无论你做什么,我都建议你尽量保持一致。
个人之间&#34;访问&#34;和&#34;访问&#34;,我会去&#34;访问&#34;因为我认为谈论用户访问页面的事实更有意义,而不是用户访问过页面。我经常建议人们命名他们的关系,以便节点关系节点成为一个句子。由于用户是主要参与者,因此您的句子将是(#)用户访问过的网页&#34;。这可能来自我作为母语为英语的人以及英语句子的形成方式。
作为旁注,Neo4j中的关系通常为UPPER_SNAKE_CASE
。同样,Neo4j并不限制你从任何一种特定的风格,但这是我所见过的最多。本指南很好地概述了常见的Cypher约定: