当关系也有一些信息要成为节点时,设计 neo4j 图的最佳方法是什么
what is best way to design neo4j graph when relation also have some information to be node
假设我们有 person 实体和 trip 关系到目的地实体,比如 city,我们想添加 3 或 4 种信息,比如 transportation( type , ticket number , date , .. ) ,必须是节点本身这种关系..
问题是我们如何绘制图表?
不可能有超过 2 个节点连接到一个关系。
但是,作为解决方法,您可以 "reify" 将关系类型作为节点标签,并创建额外的关系类型以连接到该新标签。
例如,如果您当前的数据模型如下:
(p:Person)-[:TRIP_TO]->(c:City), (transp:Transporation)
并且您还想将每个 TRIP_TO
关系与一个 Transportation
节点相关联,您可以通过将 -[:TRIP_TO]->
替换为 -[:TAKES]->(trip:Trip)-[:TO]->
来具体化 TRIP_TO
关系,像这样:
(p)-[:TAKES]->(trip:Trip)-[:TO]->(c)
并添加另一种新关系类型以将 Trip
节点连接到适当的 Transportation
节点:
(trip)-[:USES]->(transp)
假设我们有 person 实体和 trip 关系到目的地实体,比如 city,我们想添加 3 或 4 种信息,比如 transportation( type , ticket number , date , .. ) ,必须是节点本身这种关系..
问题是我们如何绘制图表?
不可能有超过 2 个节点连接到一个关系。
但是,作为解决方法,您可以 "reify" 将关系类型作为节点标签,并创建额外的关系类型以连接到该新标签。
例如,如果您当前的数据模型如下:
(p:Person)-[:TRIP_TO]->(c:City), (transp:Transporation)
并且您还想将每个 TRIP_TO
关系与一个 Transportation
节点相关联,您可以通过将 -[:TRIP_TO]->
替换为 -[:TAKES]->(trip:Trip)-[:TO]->
来具体化 TRIP_TO
关系,像这样:
(p)-[:TAKES]->(trip:Trip)-[:TO]->(c)
并添加另一种新关系类型以将 Trip
节点连接到适当的 Transportation
节点:
(trip)-[:USES]->(transp)