Graph 表示访问地点的图形数据库
在给定的日期,你会如何对两个或更多人访问的地方进行建模?看起来应该很简单,但我不知道如何将它们联系起来,以便能够说,用户1和用户2在y日期访问了X,或者如何说他们在同一日期一起访问了X 我启动了这个GraphViz来帮助可视化它:Graph 表示访问地点的图形数据库,graph,neo4j,graph-databases,Graph,Neo4j,Graph Databases,在给定的日期,你会如何对两个或更多人访问的地方进行建模?看起来应该很简单,但我不知道如何将它们联系起来,以便能够说,用户1和用户2在y日期访问了X,或者如何说他们在同一日期一起访问了X 我启动了这个GraphViz来帮助可视化它: digraph visit_example { node [shape = doublecircle]; "User 1" "User 2"; node [shape = circle]; "User 1" -> Alaska [ la
digraph visit_example {
node [shape = doublecircle]; "User 1" "User 2";
node [shape = circle];
"User 1" -> Alaska [ label = "Visits" ];
"User 2" -> Alaska [ label = "Visits" ];
"Jan 1st" -> Date [label = "is a"];
"Mar 7th" -> Date [label = "is a"];
"Dec 9th" -> Date [label = "is a"];
}
你将如何改变上述情况,即用户1与用户2于3月7日访问了阿拉斯加?独立地,用户1在1月1日访问了阿拉斯加,用户2在12月9日访问了阿拉斯加?图形数据库的优点(有时不方便)是可以以多种方式对此类用例进行建模
这还取决于您希望执行的查询类型
比方说,您永远不会按时间查询,如果您愿意,查询时间并不重要,您可以轻松地将日期放在relationship属性上
(a:User)-[:VISITED {time:0123456789}]->(p:Place)
如果您希望按日期查询,则例如,您可以有一个:Visit节点代表用户的访问,并在其上有一个time属性
(a:User)-[:DO_VISIT]->(v:Visit {time: 123456789})-[:IN_PLACE]->(p:Place)
然后可以查询所有:按时间访问节点
另一个解决方案是管理时间树,例如
然后,您的访问节点将自动连接到时间树
(:Year {value:2015})-[:CHILD]->(:Month {value:7})-[:CHILD]->(:Day {value:8})<-[:EVENT_TIME]-(v:Visit)<-[:DO_VISIT]-(:User)
(:Year{value:2015})-[:CHILD]>(:Month{value:7})-[:CHILD]>(:Day{value:8})感谢您的回复。从你提出的模型中,我可以看出它们是如何工作的。但在每种情况下,都必须推断出用户1访问了地点a,用户2在时间2,因为它在任何关系中都没有明确表示。这似乎是不对的,因为多个人可以在同一时间访问同一个地方,而不在一起,甚至不认识对方。正是这种关系,我看不到如何明确表达。