假设我有一个简单的关系,比如
CREATE (a:Company { name:"Apple" })-[:BUYS]->(b:Company { name:"Beats" })
现在我想收集有关:BUYS
关系的元数据 - 哪个用户创建了该关系以及确认这一点的来源是什么。为此,我创建了一个新节点并将其他节点连接到它:
MATCH (a:Company { name:"Apple" }),(b:Company { name:"Beats" })
CREATE a-[:IS_BUYER]->(ab:Buyout { name:"Apple-Beats" })<-[:IS_SELLER]-b
MATCH (u:User { name:"Fred" }),(n1:Newspaper { name:"Washington Post" }),
(n2:Newspaper { name:"Financial Times" }),(ab:Buyout { name:"Apple-Beats" })
CREATE u-[:CREATED]->ab<-[:CONFIRMED_BY]-n1,ab-[:CONFIRMED_BY]->n2
现在我有几个问题:
- 由于在大多数情况下查询只对
:BUYS
关系感兴趣,所以我保持原样并为这些查询获得更好的性能,对吧? - 还有其他更好的方法来建模吗?
- 为物化节点生成名称/ID 的好方法是什么?
- 有什么办法可以级联删除
:BUYS
关系到对应的:Buyout
节点?