考虑如何为Side项目建模一个简单的图形。
项目的用户将能够添加社交网络,以便他们可以找到具有社交信息的其他用户。
鉴于neo4j的架构,我不熟悉,是正确的方法:
我倾向于排名第一,但鉴于我是新来者,我想确保这不是一种反模式,或者让我后来痛苦。
答案 0 :(得分:2)
不确定我是否正确理解了您的要求,但总的来说,将现实世界的实体建模为事物之间的节点和关系,很自然地将其建模为关系。
在您的情况下,我会选择以下两种方式之一,具体取决于您对社交媒体帐户的处理程度。
1)每个社交媒体的节点,例如(LinkedIn),(Twitter),(Facebook)。然后是单个关系类型,称之为HAS_ACCOUNT,它将(用户)节点链接到帐户。例如:
(user1)-[:HAS_ACCOUNT]->(LinkedIn)
2)如果您发现在HAS_ACCOUNT关系中存储了太多属性,或者您认为它应该与其他内容相关联(例如社交媒体帐户之间的链接),请为每个帐户创建一个节点具有
(user1)-[:HAS_ACCOUNT]->(user1LinkedInAccount)-[:IS_ACCOUNT]->(LinkedIn)
这样,您的模型更灵活,您可以将用户帐户与不同类型的关系链接在一起。假设user1在Twitter上关注user2:
(user1TwitterAccount)-[:IS_LINKED_TO]->(user2TwitterAccount)
希望它有意义。