Database 如何在neo4j中建立社交网络连接模型?

Database 如何在neo4j中建立社交网络连接模型?,database,graph,neo4j,Database,Graph,Neo4j,思考如何为一个侧项目建模一个简单的图形 该项目的用户将能够添加社交网络,以便他们可以找到其他具有社交信息的用户 考虑到neo4j的体系结构(我是新手),正确的方法是: 每个社交网络(如twitter、LinkedIn)都有不同的类型,用户-->has_twitter_account/用户-->has_LinkedIn_account与相关密钥的关系 用户-->的一种类型(SocialMediaAccount)以更通用的方式与相关键具有_socialmedia _acct关系,并具有社交网络名称的

思考如何为一个侧项目建模一个简单的图形

该项目的用户将能够添加社交网络,以便他们可以找到其他具有社交信息的用户

考虑到neo4j的体系结构(我是新手),正确的方法是:

  • 每个社交网络(如twitter、LinkedIn)都有不同的类型,用户-->has_twitter_account/用户-->has_LinkedIn_account与相关密钥的关系
  • 用户-->的一种类型(SocialMediaAccount)以更通用的方式与相关键具有_socialmedia _acct关系,并具有社交网络名称的属性
  • 在每个用户实体下添加社交网络作为属性
  • 还有什么我没想到的

  • 我倾向于第一,但考虑到我是一个新手,我想确保这不是一个反模式,也不是让我以后感到痛苦。

    不确定我是否正确理解您的需求,但一般来说,将真实世界的实体建模为节点和事物之间的关系是很好的,很自然地,是关系

    在你的情况下,我会选择以下两种方式之一,这取决于你想对他们的社交媒体账户做多少

    1) 每个社交媒体的一个节点,例如(LinkedIn),(Twitter),(Facebook)。然后是单个关系类型,称之为HAS_ACCOUNT,它将(用户)节点链接到帐户。例如:

    (user1)-[:HAS_ACCOUNT]->(LinkedIn)
    
    2) 如果您发现您在HAS_帐户关系中存储了太多属性,或者甚至觉得应该将其链接到其他内容(例如社交媒体帐户之间的链接),请为用户拥有的每个帐户创建一个节点

    (user1)-[:HAS_ACCOUNT]->(user1LinkedInAccount)-[:IS_ACCOUNT]->(LinkedIn)
    
    这样,您的模型更加灵活,您可以使用不同类型的关系将用户帐户链接在一起。假设user1在Twitter上跟随user2:

    (user1TwitterAccount)-[:IS_LINKED_TO]->(user2TwitterAccount)
    
    希望它有意义

    谢谢,这确实帮助我澄清了问题。