【发布时间】:2016-02-13 16:42:48
【问题描述】:
我是图形数据库领域的新手,想知道以下经典产品买卖关系场景的推荐建模选项:
-
史蒂夫从亚马逊购买了 iPhone 6 Plus
CREATE (Steve:Person {name: "Steve"})-[b1:BOUGHT]->(iPhone:Product {name: "iPhone 6 Plus"})
-
迈克尔随后也购买了 iPhone 6 Plus,但来自 eBay
CREATE (Michael:Person {name: "Michael"})-[b2:BOUGHT]->(iPhone)
因此,亚马逊和 eBay 都销售 iPhone 6 Plus,而史蒂夫和迈克尔都购买了它。
CLICK TO VIEW ILLUSTRATED MODEL WITH THE PRODUCT NODE
问题: 这个合并模型存在一个问题,因为节点“iPhone 6 Plus”是共享的,所以不清楚 Steve 或 Michael 是从哪家公司购买 iPhone 6 Plus。
建模可以简化为:
CREATE (Steve:Person {name: "Steve"})-[b1:BOUGHT_FROM {product: "iPhone 6 Plus"}]->(Amazon:Company {name: "Amazon"})
CREATE (Michael:Person {name: "Michael"})-[b2:BOUGHT_FROM {product: "iPhone 6 Plus"}]->(eBay:Company {name: "eBay"})
CLICK TO VIEW ILLUSTRATED MODEL WITHOUT THE PRODUCT NODE
导致丢失“iPhone 6 Plus”节点并用将细节嵌入关系属性本身的方法取而代之,但同时允许史蒂夫和亚马逊之间建立直接关系。
在史蒂夫从亚马逊购买 iPhone 和迈克尔从 eBay 购买 iPhone 并同时保留 iPhone 节点的情况下,有没有办法保持清晰的信息?
【问题讨论】:
标签: neo4j graph-databases