【发布时间】:2021-10-13 06:59:15
【问题描述】:
我是 Neo4j/Cypher 的初学者,我无法正确建模我的数据。
数据有如下关系:
MANUFACTURER_A (unique) -> PRODUCT_A (unique just withing MANUFACTURER_A) -> CUSTOMER_A (globally unique)
MANUFACTURER_A (unique) -> PRODUCT_A (unique just withing MANUFACTURER_A) -> CUSTOMER_B (globally unique)
MANUFACTURER_B (unique) -> PRODUCT_A (unique just withing MANUFACTURER_B) -> CUSTOMER_A (globally unique)
我无法使 Product_A 在 Manufacturer 中独一无二。我总是从Manufacturer_A 到Product_A 得到一条线,从Manufacturer_B 得到另一条线,但我实际上想要两个Product_A 节点(每个Manufacturer 一个),但每个Manufacturer 只有一个Product_A 节点。
我尝试了以下方法:
CREATE CONSTRAINT ON (c:MANUFACTURER) ASSERT c.MANUFACTURER IS UNIQUE;
CREATE CONSTRAINT ON (c:CUSTOMER) ASSERT c.CUSTOMER IS UNIQUE;
LOAD CSV WITH HEADERS FROM
'file:///small.csv' AS line
WITH line LIMIT 20
MERGE (CUSTOMER:Customer {Name: line.CUSTOMER})
MERGE (MANUFACTURER:Manufacturer {Name:line.MANUFACTURER})
MERGE (PRODUCT:Product {Name: line.PRODUCT})
MERGE (MANUFACTURER)<-[:PRODUCES]-(PRODUCT)
MERGE (CUSTOMER)<-[:CONSUMES]-(PRODUCT)
;
如何正确建模?
【问题讨论】:
-
请给我们一份file:///small.csv