图数据建模 - 节点与关系 Neo4j 注释节点

Graph Data Modeling - Node vs Relationship Neo4j Comment Nodes

在 Neo4j 中建模数据最 effective/scalable 的方法是什么。例如,假设您正在制作一个假想的电影评论网站。要求是:

  1. 用户可以与其他用户成为好友。
  2. 用户可以加入群组
  3. 用户可以看电影。
  4. 用户可以推荐他们的 friends/groups 部电影。
  5. 用户可以评论他们看过的电影

    MERGE (c:User{name:"Chandler"})
    MERGE (j:User{name:"Joey"})
    合并 (c)-[:FRIENDS {Since:1994}]-(j)
    MERGE (c)-[:MEMBER {Since:1994}]-(g:Group{name:"CoffeeClub"})
    合并 (j)-[:MEMBER {Since:1995}]-(g)

    MATCH (c:User{name:"Chandler"})
    合并 (c)-[:WATCHED]-(m:Movie {name:"PulpFiction"})
    MERGE (c)-[:WATCHED]-(m:Movie {名称:"DumbnDumber"})

什么是最 effective/scaleable 实施要求 #4 和 #5 的方法?

用例 1: "Chandler" 想向 "Joey" 推荐 "DumbnDumber" 并评论:"Could this movie beee any more ridiculous"

用例 2:" "Joey" 想向 "CoffeeClub" 推荐 "PulpFiction" 并评论:"How you Doin'?"

#4

我可能会创建一个链接到用户、电影和群组或朋友节点的推荐节点。

#5

  • 您可以将评论作为 属性 放在 :WATCHED 关系
  • 您可以在用户和电影之间创建一个额外的 :COMMENTED 关系
  • 您可以在用户和电影之间创建一个额外的评论节点

这完全取决于你以后想如何使用这些评论,是否应该有评论线程等。